MYSQL主从复制原理

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


逻辑复制方案:

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


MYSQL主从复制原理_第1张图片
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主从复制原理_第2张图片
MYSQL分组半同步

半同步

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

分组半同步

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

•异步ACK提升性能

#1.2 解决方案:并行复制


MYSQL主从复制原理_第3张图片
并行复制

多worker并行复制原理:

• SQL线程负责解析日志

• 多Worker并发执行

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

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

• 消除主从同步延迟

你可能感兴趣的:(MYSQL主从复制原理)