https://gitee.com/GreatSQL/GreatSQL-Doc
# greatsql mysql shell router
https://abc.htmltoo.com/thread-46491.htm
---MGR管理维护, 通常选择连接主节点
---1.切换主节点
-当主节点需要进行维护时,或者执行滚动升级时,就可以对其进行切换,将主节点切换到其他节点。
cd /data/site/htmltoo.f/htmltoo.shell/mysql-shell-8.0.25-linux-glibc2.12-x86-64bit/bin/
./mysqlsh root@127.18.0.11:3306 --password=wdqdmm@r
/usr/local/mysql-shell-8.0.25/bin/mysqlsh '$user'@'$host':$port --password=$pass
---2.切换单主/多主模式
-调用函数 switch_to_multi_primary_mode() 和 switch_to_single_primary_mode() 可以实现切换到多主、单主模式。
-首先,从单主模式切换到多主模式:
cluster.switch_to_multi_primary_mode()
-在切换单主/多主模式过程中,并不支持仲裁节点无缝衔接,因此切换时会失败退出。
--仲裁节点无缝衔接
-需要在切换前,手动关闭仲裁节点,切换完成后再次启动
-先手动关闭单主模式
-on 单主模式, off 多主模式
set global group_replication_single_primary_mode=OFF;
-再修改选项值,和其他节点保持一致
set global group_replication_enforce_update_everywhere_checks=ON;
-再次启动MGR服务即可。
start group_replication;
-查看MGR的状态:
cluster.status()
--切换成单主模式时可以指定某个节点作为新的主节点
cluster.setPrimaryInstance('172.18.0.12:3306')
cluster.switch_to_single_primary_mode("172.18.0.12:3306")
---仲裁节点报错
set global group_replication_enforce_update_everywhere_checks=OFF;
set global group_replication_single_primary_mode=ON;
start group_replication;
---3.添加新节点
cluster.add_instance("GreatSQL@172.16.16.13:3306")
cluster.status()
---4.删除节点
cluster.remove_instance("GreatSQL@172.16.16.13:3306")
---5.异常退出的节点重新加回
cluster.rejoin_instance('172.16.16.13:3306');
-当节点因为网络断开、实例crash等异常情况与MGR集群断开连接后,这个节点的状态会变成 UNREACHABLE,
-待到超过 group_replication_member_expel_timeout + 5 秒后,集群会踢掉该节点。
-等到这个节点再次启动并执行 start group_replication,正常情况下,该节点应能自动重新加回集群。
-如果设置了选项 group_replication_start_on_boot = ON,实例启动时也会尝试自动加回集群。
---6.重启MGR集群
-正常情况下,MGR集群中的Primary节点退出时,剩下的节点会自动选出新的Primary节点。
-当最后一个节点也退出时,相当于整个MGR集群都关闭了(当集群中只剩下仲裁节点时,它也会自动报错退出)。
-启动所有节点后,再利用 MySQL Shell 很方便就能拉起MGR集群,调用 reboot_cluster_from_complete_outage() 函数即可,
-它会自动判断各节点的状态,选择其中一个作为Primary节点,然后拉起各节点上的MGR服务,完成MGR集群重启。