文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  更改组模式

20.5.1.2 更改组模式

本节介绍如何更改组运行的模式,可以是单主或多主。用于更改组模式的函数可以在任何成员上运行。

更改为单主模式

使用 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 |
+----------------------------------------------------------------------+----------------+----------------+