MGR(组复制)两种运行模式
单主模式下,组复制具有自动选主功能,每次只有一个
server成员接受更新。单写模式group内只有一台节点可写可读,其他节点只可以读。对于group的部署,需要先跑起primary节点(即那个可写可读的节点,read_only=0)然后再跑起其他的节点,并把这些节点一一加进group。其他的节点就会自动同步primary节点上面的变化,然后将自己设置为只读模式(read_only=1)。当primary节点意外宕机或者下线,在满足大多数节点存活的情况下,group内部发起选举,选出下一个可用的读节点,提升为primary节点。primary选举根据group内剩下存活节点的UUID按字典序升序来选择,即剩余存活的节点按UUID字典序排列,然后选择排在最前的节点作为新的primary节点。
多主模式下, 所有的 server 成员都可以同时接受更新。group内的所有机器都是primary节点,同时可以进行读写操作,并且数据是最终一致的。
相关参数 : group_replication_single_primary_mode
是否启动单主模式,如果启动,则本实例是主库,提供读写,其他实例仅提供读
多主模式切换单主模式
# 所有节点执行
mysql> stop group_replication;
mysql>set global group_replication_enforce_update_everywhere_checks=OFF;
mysql>set global group_replication_single_primary_mode=on;
# 主节点(172.16.2.185)执行
set global group_replication_bootstrap_group=on;
start GROUP_REPLICATION;
set global group_replication_bootstrap_group=OFF;
# 从节点(3307、3308)执行
start GROUP_REPLICATION;
# 查看MGR组信息
mysql> select * from performance_schema.replication_group_members;
单主切换到多主模式
MGR切换模式需要重新启动组复制,因些需要在所有节点上先关闭组复制,设置 group_replication_single_primary_mode=OFF 等参数,再启动组复制。
# 停止组复制(所有节点执行):
mysql>stop group_replication;
mysql>set global group_replication_single_primary_mode=OFF;
mysql>set global group_replication_enforce_update_everywhere_checks=ON;
# 随便选择某个节点执行
mysql>SET GLOBAL group_replication_bootstrap_group=ON;
mysql>START GROUP_REPLICATION;
mysql>SET GLOBAL group_replication_bootstrap_group=OFF;
# 其他节点执行
mysql>STARTGROUP_REPLICATION;
msyql 5.7
# 查看MGR组信息
SELECT * FROM performance_schema.replication_group_members;
查看读写权限
select @@read_only, @@super_read_only;
show variables like 'read_only';
mysql 8.0
# 查看MGR组信息
mysql>SELECT * FROM performance_schema.replication_group_members;
可以看到所有节点状态都是online,角色都是PRIMARY(mysql 8.0),MGR多主模式搭建成功。
验证:读写权限
写入数据测试: