MGR 简介
MySQL Group Replication(简称:MGR),MySQL组复制是一个MySQL Server 插件,能够创建弹性、高可用、容错复制拓扑。
单主模式
开启单主
1 | group_replication_single_primary_mode=ON |
在单主模式中,组中只有一个主节点,通常是组中第一个引导启动的节点,
它的状态会设置成:read-write 模式。其它节点加入组中,并且自动设置成:read-only (super_read_only=ON)模式。
只读参数
1 | 两个只读系统变量启用的区别: |
单节点写入
单主模式强制要求一个主节点写入,因此组状态出于单主模式或者想由多主切换为单主,必须关闭一个参数:
1 | group_replication_enforce_update_everywhere_checks=OFF |
成员变成主节点
- 现有主节点自愿或者意外离开组
- 通过自定义函数指定: group_replication_set_as_primary()
- 由多主切换到单主模式
新主节点选举
当新的主节点选举出来或指定后,可能会有一些积压的更新已经在旧的主节点上应用,但还没应用在新的主节点上,直到新节点追上旧的节点。此时,更新事务可能导致冲突或回滚,只读节点可能会读到旧的数据。
复制中的流控制能够有效缩小快慢成员节点的数据差异,减少发生此事发生的几率。
也可以通过配置系统参数:group_replication_consistency 来控制事务一致性的级别
选举算法
每个组成员查看最新的组视图,排序有潜力成为主节点的成员,根据MySQL服务器版本中的主节点选举算法,在本地做出决定,选出最合适的节点。
选举考虑因素
1.成员运行的最低版本
版本在8.0.17及以上,首先按最新发行的补丁版本排序
版本5.7 以及小于8.0.16 首先按发布的主要版本排序,补丁忽略
2.如有一个以上的成员运行最低版本
按照成员权重:group_replication_member_weight
如果有任何一个是5.7版本,权重不能用,忽略此因素
3.如果有多个成员运行最低版本,并且其中有多个成员有最高权重
server_uuid 小的优先