greatsql mysql shell - 管理维护 Linux教程


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集群重启。


签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回