美文网首页MySQLMySQLmysql
MYSQL主从复制原理

MYSQL主从复制原理

作者: 极简架构 | 来源:发表于2017-08-30 13:08 被阅读51次

    作用: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也应按照此顺序排队提交从而保持数据最终一致性。

    • 消除主从同步延迟

    相关文章

      网友评论

        本文标题:MYSQL主从复制原理

        本文链接:https://www.haomeiwen.com/subject/xihsdxtx.html