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
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论