MYSQL主从复制原理

作用:mysql服务器的主从配置,这样可以实现读写分离,也可以在主库挂掉后从备用库中恢复。


逻辑复制方案:

1.主库记录日志 2.从库dump日志 3. 从库执行日志 4. 最终一致性


MYSQL主从复制流程

MYSQL主从复制原理流程:

1.Master主库将数据变更DataChanges记录 binlog日志中。

2.Slave起一个I/O线程连接到Master,dump读取Master的binlog日志并写入到Slave的中继日志Relaylog中

3.Slave中的SQL线程读取中继日志Relaylog进行SQL回放执行操作,完成主从复制,保证主从最终一致性。


主从复制问题:

1.单线程复制的问题

#1.1. 主库记录日志-> 从库异步拉取日志-> 主从切换时新主丢日志(造成数据一致性问题)

#1.2 主库并发执行-> 从库单线程执行-> 主从同步延迟(幻读问题:主库新版本,从库老版本)

解决方案:todo


MYSQL分组半同步

半同步

• 日志发送到从库落盘事务提交

分组半同步

• 每个逻辑机房一个一致性群组

•异步ACK提升性能

#1.2 解决方案:并行复制


并行复制

多worker并行复制原理:

• SQL线程负责解析日志

• 多Worker并发执行

• 行级别冲突检测(db+table+primary_key ):通过db+table+primary 唯一key做行级别冲突检测,如果已经消费则不再消费。

• 排队提交: 按照主库提交顺序排队提交,保持一致性。如:Master先更新A表再更新B表,Slave也应按照此顺序排队提交从而保持数据最终一致性。

• 消除主从同步延迟

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、复制概述: MySQL内建的复制功能是构建大型,高性能应用程序的基础。将mysql的数据分布到多个系统上去,这...
    魔法师_阅读 5,672评论 0 5
  • 老船依旧客不同,今走码头又返崇。
    亁乾阅读 633评论 0 1
  • 夜已深,人难眠。人已别,却思恋。 晚风是你,月光是你,睁眼是你,闭眼也是你。 明知道熬夜不好还是会熬夜,明知道你不...
    十哥的九菇凉阅读 201评论 0 1
  • 生鸭蛋洗净放在太阳光底下晾干,然后放在白酒里滚滚,食盐碗里滚滚,保鲜膜包紧,装进罐子里放在阴凉处50天左右,取出洗...
    樂活人生百态阅读 441评论 1 7