前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL四种同步方式

MySQL四种同步方式

作者头像
院长技术
发布2021-02-19 14:56:43
发布2021-02-19 14:56:43
6.1K00
代码可运行
举报
文章被收录于专栏:院长运维开发院长运维开发
运行总次数:0
代码可运行

1.异步复制

代码语言:javascript
代码运行次数:0
复制
搭建简单,使用非常广泛,从mysql诞生之初就产生了这种架构性能非常好,可谓非成熟,但是这种架构数据是异步的,所以有丢失数据库的风险。

2.全同步复制

代码语言:javascript
代码运行次数:0
复制
保证数据安全,不丢失数据,损失性能。

3.传统半同步复制

代码语言:javascript
代码运行次数:0
复制
性能,功能都介于异步和全同步之间,从5.5开始诞生,目的是为了折中上述两种架构的性能以及优缺点。

4.无损复制(增强版的半同步复制)

代码语言:javascript
代码运行次数:0
复制
数据零丢失,性能好,mysql5.7诞生。

异步复制原理:

代码语言:javascript
代码运行次数:0
复制
在异步复制中,主库写数据导二进制日志且同步从库请求二进制日志后写入中断日志并fluh disk
理解:主库将事件写入binlog,提交事务,自身并不知道从库是否接收处理;
优点:复制性能最好
缺点:master挂掉后,slave可能会丢失事务
代表:mysql原生的复制。

全同步复制原理:

代码语言:javascript
代码运行次数:0
复制
在全同步复制中,主库写数据到二进制日志且同步,所有从库请求二进制日志后写入中断日志并flush disk,并且应用完日志且commit。
理解:当主提交一个事务,在主库向前端业务请求返回一个commit成功的指令前,必须保证所有从已经提交了这个事务(所有从库不但接收了,还必须应用该事务日志)
优点:数据刽丢失
缺点:会阻塞master session,性能太差,非常依赖网络。
代表:master-cluster

传统的半复制原理:

代码语言:javascript
代码运行次数:0
复制
在半同步复制中,主库写数据导二进制日志文件且sync且提交,然后一直等待确认
当至少一个从库请求二进制日志后写入到中断日志并flush disk,就返回确认
优点:会有数据丢失风险(低)
缺点:会阻塞master session,性能差,非常依赖网络。
代表:after commit,原生的半同步。    

无损复制(增强版半复制)原理:

代码语言:javascript
代码运行次数:0
复制
在半同步复制中,主库写数据到二进制日志且sync,然后一直等待回复确认,当至少一个从库请求二进制日志后写入到中继日志并flush disk,就返回确认。
优点:数据零丢失,性能好。
缺点:会阻塞master session,非常依赖网络。
代表:after sync,原生的半同步。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.异步复制
  • 2.全同步复制
  • 3.传统半同步复制
  • 4.无损复制(增强版的半同步复制)
  • 异步复制原理:
  • 全同步复制原理:
  • 传统的半复制原理:
  • 无损复制(增强版半复制)原理:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档