Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


20.5.1.1 更改主节点

本节解释了如何使用group_replication_set_as_primary()函数将单个主组中的成员变为主节点,这个函数可以在组中的任何成员上运行。当执行这个操作时,当前的主节点变为只读副本,而指定的组成员变为读写主节点;这取代了在第20.1.3.1节,“单个主模式”中描述的通常的主节点选举过程。

如果在现有主节点成员上运行的是标准源副本复制通道,除了Group Replication通道外,你必须停止该复制通道,然后才能更改主节点成员。你可以使用MEMBER_ROLE列在性能chema的replication_group_members表中确定当前主节点。

如果组中的所有成员都没有运行相同的MySQL Server版本,你可以指定一个运行最低MySQL Server版本的新主节点成员。这一安全措施是为了确保组保持与新函数的兼容性。

在操作完成之前,组中的任何未提交事务都必须被提交、回滚或终止。您可以指定从 0 秒(立即)到 3600 秒(60 分钟)的超时时间,以便在使用函数时处理正在运行的事务。超时设置没有默认值,如果不设置,等待时间的上限将是无限的,并且新的事务可以在该时间内开始。

当超时到期时,对于尚未达到提交阶段的事务,客户端会话将被断开,以防止事务继续进行。已经达到提交阶段的事务允许完成。当您设置超时时,它也会阻止从该点开始的新事务在主服务器上启动。明确定义的事务(使用START TRANSACTIONBEGIN语句)即使不修改任何数据,也将受到超时、断开和 incoming 事务阻塞的影响。为了允许在函数操作期间检查主服务器,单个不修改数据的语句(如Permitted Queries Under Consistency Rules中列出的)允许继续进行。

将要成为组新主服务器的成员的server_uuid传递给函数,使用以下语句:

SELECT group_replication_set_as_primary(member_uuid);

您可以像这样添加超时:

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

检查超时状态,可以使用性能_schema中的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