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

41|MySQL 8.0 组复制技术的应用(上)

你好,我是俊达。
数据复制技术是构建 MySQL 高可用环境的基础,但无论是异步复制,还是半同步复制,在理论上都无法保证极端情况下数据完全一致。MySQL 8.0 中的组复制技术(MGR,MySQL Group Replication),使用了基于 Paxos 协议的分布式一致性算法,能保证事务在集群中的一致性复制。
这一讲,我们来聊一聊怎么搭建一个 MySQL 组复制集群,以及组复制中一些常见问题的处理方法。

MySQL 数据复制回顾

我们先来回顾下几种复制架构,这里使用了官方文档中的几个架构图。
异步复制
使用默认的异步复制时,主库上的事务提交时,Binlog 会异步发送到备库上。由于是异步发送 Binlog,因此在主库故障切换时,无法保证备库的数据和主库是完全一致的。
半同步复制
使用半同步复制时,主库提交事务时,会先等待 Binlog 发送给备库。但是这里等待可能会超时,半同步复制会退化成异步复制。
组复制(Group Replication)
使用组复制时,主库的事务在提交之前,要先将 Binlog 发送到集群中的每个成员。由于使用了 Paxos 协议,各个成员节点看到的事务提交消息的顺序是一致的。MGR 支持多主,每个成员都可以独立提交事务。不同节点发起的事务可能会有冲突(比如修改了同一行数据),节点成员需要对事务消息进行冲突检测(certification),没有冲突的事务才能提交,如果事务有冲突,会回滚后执行的事务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. MySQL 8.0中的组复制技术(MGR)使用基于Paxos协议的分布式一致性算法,保证事务在集群中的一致性复制。 2. MGR支持多主,但不同节点发起的事务可能会有冲突,需要进行冲突检测(certification)。 3. MGR集群维护包括切换多主模式和单主模式、切换写节点、完全重启MGR集群和MGR监控。 4. MGR集群中的节点必须使用ROW格式的Binlog,并且要开启GTID。 5. MGR监控使用performance_schema中的表来监控MGR集群的状态,包括集群中每个节点的状态是否正常、事务接收和执行是否有异常、事务是否有积压。 6. 在MGR集群中,建议使用单主模式,因为主节点故障时可以自动将主节点切换到其他节点上,配合使用数据库Proxy软件,可以实现业务的高可用。 7. 在默认的设置下,只能说主库提交的事务,Binlog一定已经复制到了集群中的大多数节点上,但是其他节点在应用Binlog时,还是可能会存在延迟的,可能会导致读取到不一致的数据。 8. 在使用组复制时,需要评估开启组复制后,性能是否能满足业务需求,特别是要评估当集群中有节点出现问题时,整个集群的性能,以及节点加入集群、退出集群对整体性能的影响。 9. MGR集群维护中,切换多主模式和单主模式之间可以互相在线切换,但需要注意新节点加入集群时,参数设置要和集群其他节点的设置一致,否则节点无法加入集群。 10. 在重启MGR集群时,需要选择数据最新的节点作为种子节点,启动全新的MGR集群时,不需要做这一步。

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

精选留言

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