本节介绍如何更改组运行的模式,可以是单主或多主。用于更改组模式的函数可以在任何成员上运行。
使用 group_replication_switch_to_single_primary_mode()
函数通过发出以下命令将运行在多主模式下的组更改为单主模式
SELECT group_replication_switch_to_single_primary_mode()
更改为单主模式时,还会在所有组成员上禁用严格的一致性检查,这是单主模式的要求 (group_replication_enforce_update_everywhere_checks=OFF
).
如果没有传递任何字符串,则在生成的单主组中选择新主节点将遵循 第 20.1.3.1 节,“单主模式” 中描述的选择策略。要覆盖选择过程并配置多主组的特定成员作为新主节点,请获取该成员的 server_uuid
并将其传递给 group_replication_switch_to_single_primary_mode()
。例如,发出以下命令
SELECT group_replication_switch_to_single_primary_mode(member_uuid);
如果您在运行 MySQL 服务器 8.0.17 或更高版本的成员上调用该函数,并且所有成员都运行 MySQL 服务器 8.0.17 或更高版本,则您只能指定运行组中最低 MySQL 服务器版本的补丁版本的新的主成员。此安全措施用于确保组与新功能保持兼容。如果您没有指定新的主成员,则选择过程将考虑组成员的补丁版本。
如果任何成员运行的 MySQL 服务器版本介于 MySQL 8.0.13 和 MySQL 8.0.16 之间,则不会对组强制执行此安全措施,并且您可以指定任何新的主成员,但建议选择运行组中最低 MySQL 服务器版本的补丁版本的成员。如果您没有指定新的主成员,则选择过程只会考虑组成员的主版本。
在执行操作期间,您可以通过发出以下命令检查其进度
SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------------+----------------+----------------+
| event_name | work_completed | work_estimated |
+----------------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Primary Switch: waiting for pending transactions to finish | 4 | 20 |
+----------------------------------------------------------------------------+----------------+----------------+
使用 group_replication_switch_to_multi_primary_mode()
函数通过发出以下命令将运行在单主模式下的组更改为多主模式
SELECT group_replication_switch_to_multi_primary_mode()
经过一些协调的组操作以确保数据的安全性和一致性后,属于该组的所有成员都将变为主节点。
将运行在单主模式下的组更改为运行在多主模式下时,如果运行的 MySQL 服务器版本高于组中最低的版本,则运行 MySQL 8.0.17 或更高版本的成员将自动置于只读模式。运行 MySQL 8.0.16 或更低版本的成员不会执行此检查,并且始终置于读写模式。
在执行操作期间,您可以通过发出以下命令检查其进度
SELECT event_name, work_completed, work_estimated FROM performance_schema.events_stages_current WHERE event_name LIKE "%stage/group_rpl%";
+----------------------------------------------------------------------+----------------+----------------+
| event_name | work_completed | work_estimated |
+----------------------------------------------------------------------+----------------+----------------+
| stage/group_rpl/Multi-primary Switch: applying buffered transactions | 0 | 1 |
+----------------------------------------------------------------------+----------------+----------------+