文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (美国信纸) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  更改主节点

20.5.1.1 更改主节点

本节介绍如何使用 group_replication_set_as_primary() 函数更改单主节点组中哪个成员为主节点。该函数可以在组的任何成员上运行。执行此操作时,当前主节点会变成只读的从节点,而指定的组成员会变成读写的主节点。这取代了 第 20.1.3.1 节“单主节点模式” 中描述的常规主节点选举过程。

如果在现有的主节点成员上除了组复制通道之外,还运行标准的源到副本复制通道,则必须先停止该复制通道才能更改主节点成员。可以使用性能架构 replication_group_members 表中的 MEMBER_ROLE 列来识别当前主节点。

如果所有成员都没有运行相同的 MySQL 服务器版本,则只能指定运行组中最低 MySQL 服务器版本的新的主节点成员。此安全措施用于确保组与新功能保持兼容。

组正在等待的任何未提交事务必须在操作完成之前提交、回滚或终止。可以使用该函数为运行时发生的事务指定从 0 秒(立即)到 3600 秒(60 分钟)的超时时间。超时时间没有默认设置,因此如果没有设置超时时间,则没有等待时间上限,并且在此期间可能会启动新事务。

超时时间到期后,对于任何尚未进入提交阶段的事务,客户端会话将断开连接,以防止事务继续进行。进入提交阶段的事务将允许完成。设置超时时间还会从那时起防止在主节点上启动新事务。明确定义的事务(使用 START TRANSACTIONBEGIN 语句)会受到超时、断开连接和传入事务阻止的约束,即使它们没有修改任何数据。为了允许在函数运行时检查主节点,允许继续执行 一致性规则下允许的查询 中列出的不修改数据的单个语句。

通过发出以下语句,将您希望成为组新的主节点的成员的 server_uuid 传递进去

SELECT group_replication_set_as_primary(member_uuid);

您可以按如下所示添加超时时间

SELECT group_replication_set_as_primary(‘00371d66-3c45-11ea-804b-080027337932’, 300)

要检查超时的状态,请使用性能架构 threads 表中的 PROCESSLIST_INFO 列,如下所示

mysql> SELECT NAME, PROCESSLIST_INFO FROM performance_schema.threads 
    -> WHERE NAME="thread/group_rpl/THD_transaction_monitor"\G
*************************** 1. row ***************************
            NAME: thread/group_rpl/THD_transaction_monitor
PROCESSLIST_INFO: Group replication transaction monitor: Stopped client connections

状态显示事务监视线程何时创建,何时停止新事务,何时断开具有未提交事务的客户端连接,最后,何时完成进程并再次允许新事务。

在操作运行时,可以使用此处显示的语句检查其进度

mysql> SELECT event_name, work_completed, work_estimated 
    -> FROM performance_schema.events_stages_current 
    -> WHERE event_name LIKE "%stage/group_rpl%"\G
*************************** 1. row ***************************
    EVENT_NAME: stage/group_rpl/Primary Election: Waiting for members to turn on super_read_only
WORK_COMPLETED: 3
WORK_ESTIMATED: 5