记录分享工作的点点滴滴

0%

MySQL8.0 组复制的两种模式

MGR 简介

MySQL Group Replication(简称:MGR),MySQL组复制是一个MySQL Server 插件,能够创建弹性、高可用、容错复制拓扑。

单主模式

开启单主

1
group_replication_single_primary_mode=ON

在单主模式中,组中只有一个主节点,通常是组中第一个引导启动的节点,
它的状态会设置成:read-write 模式。其它节点加入组中,并且自动设置成:read-only (super_read_only=ON)模式。

只读参数

1
2
3
两个只读系统变量启用的区别: 
read_only : 只允许具有SUPER权限的客户端更新
super_read_only : 阻止所有update更新,以及涉及表更改的操作

单节点写入

单主模式强制要求一个主节点写入,因此组状态出于单主模式或者想由多主切换为单主,必须关闭一个参数:

1
group_replication_enforce_update_everywhere_checks=OFF

成员变成主节点

  1. 现有主节点自愿或者意外离开组
  2. 通过自定义函数指定: group_replication_set_as_primary()
  3. 由多主切换到单主模式

新主节点选举

当新的主节点选举出来或指定后,可能会有一些积压的更新已经在旧的主节点上应用,但还没应用在新的主节点上,直到新节点追上旧的节点。此时,更新事务可能导致冲突或回滚,只读节点可能会读到旧的数据。

复制中的流控制能够有效缩小快慢成员节点的数据差异,减少发生此事发生的几率。

也可以通过配置系统参数:group_replication_consistency 来控制事务一致性的级别

选举算法

每个组成员查看最新的组视图,排序有潜力成为主节点的成员,根据MySQL服务器版本中的主节点选举算法,在本地做出决定,选出最合适的节点。

选举考虑因素

1.成员运行的最低版本

版本在8.0.17及以上,首先按最新发行的补丁版本排序
版本5.7 以及小于8.0.16 首先按发布的主要版本排序,补丁忽略

2.如有一个以上的成员运行最低版本

按照成员权重:group_replication_member_weight
如果有任何一个是5.7版本,权重不能用,忽略此因素

3.如果有多个成员运行最低版本,并且其中有多个成员有最高权重

server_uuid 小的优先

多主模式