MySQL 运维实战课
张新铭(俊达)
云掣科技资深数据库专家,前淘宝网、支付宝数据库专家
1142 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已更新 44 讲/共 50 讲
MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

42|MySQL 8.0 组复制技术的应用(下)

你好,我是俊达。
为了实现事务数据的强一致性,group_replication 插件在事务的处理流程上,加入了一些特殊的处理逻辑。这一讲中,我们来大致地了解下组复制的一些实现细节。当然,由于组复制的实现比较复杂,这里只能介绍部分实现逻辑。

MGR 架构实现

MGR 集群中,提交事务前,需要将事务广播到集群中,等集群中的多数节点接收到事务消息后,本地节点才能完成提交。
从流程上看,分为三个大的阶段。
第一阶段:发送消息
本地发起 commit 时,向 MGR 集群广播事务消息,消息中包含事务生成的 Binlog 和 WriteSet。
第二阶段:达成共识
各个节点发送的消息,通过 Paxos 协议达成一致。达成一致的过程,也是对各个节点的消息进行全局排序的过程。各个节点会以相同的顺序来处理消息。比如在多主模式下,集群中的各个节点可以同时修改数据,各个节点的事务消息经过 paxos 协议处理后,在各个节点上会以同样的顺序执行。
第三阶段:处理消息
通过冲突检测的事务,在源节点上可以进行提交。在其他节点上,事务消息中的 Binlog 写入到 Relay Log 中。协调线程和 Worker 线程负责事务的应用。借助官方文档中的组复制的示意图,我标注了事务执行的三个阶段,你可以看一下。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. MGR架构实现了消息的全局排序和数据一致性保证,通过Paxos协议实现消息的全局排序,确保各个节点以相同的顺序执行事务消息。 2. 事务消息中包含重要信息如binlog event、writeset和节点的gtid_executed变量值,用于检测不同节点上事务修改的数据是否有冲突。 3. MGR集群的数据一致性分为几个不同的等级,包括EVENTUAL、BEFORE_ON_PRIMARY_FAILOVER、BEFORE、AFTER和BEFORE_AND_AFTER,每个等级对应不同的数据一致性保证。 4. MGR集群的数据一致性保证和冲突检测算法是保障多主模式下数据修改的正确性和一致性的关键机制。 5. MGR引入了流控机制来避免主节点数据写入吞吐量过大导致备节点积压日志,通过参数控制流控模式和配额上下限,以及根据节点处理能力动态调整配额。 6. MGR集群的写入能力受流控机制的限制,多主模式并没有特别大的优势,建议使用单主模式从架构的简单性考虑。 7. 在备节点上将参数group_replication_consistency设置成BEFORE可以确保在备节点上能读到一致的数据。 8. 使用组复制后,需要监控好备节点上事务应用的延迟时间,以确保数据一致性。 9. 事务的延迟监控是组复制下需要重点关注的问题,需要设计相应的监控机制来实时监测备节点上事务的应用延迟。 10. 合理设置一致性等级可以在不同场景下平衡数据一致性和性能的需求,为多主模式下数据修改的正确性和一致性提供关键机制。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部