Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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)。

如果不传递字符串,则新primary的选举在单主组中遵循 第 20.1.3.1 节“单主模式” 中描述的选举策略。要覆盖选举过程并配置多主组中的特定成员作为新primary,可以获取该成员的 server_uuid 并将其传递给 group_replication_switch_to_single_primary_mode()。例如,发出:

SELECT group_replication_switch_to_single_primary_mode(member_uuid);

如果您在 MySQL Server 8.0.17 或更高版本的成员上调用该函数,并且所有成员都运行 MySQL Server 8.0.17 或更高版本,则只能指定一个新的primary成员,该成员运行组中最低的 MySQL Server 版本,基于补丁版本。该安全措施旨在确保组保持与新功能的兼容性。如果您不指定新的primary成员,则选举过程将考虑组成员的补丁版本。

如果任何成员运行 MySQL 8.0.13 到 MySQL 8.0.16 之间的版本,则该安全措施不适用于组,您可以指定任何新的primary成员,但建议选择组中最低的 MySQL Server 版本。如果您不指定新的primary成员,则选举过程将仅考虑组成员的主要版本。

在操作运行时,您可以通过发出来检查其进度:

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()

在一些协调的组操作后,以确保数据的安全和一致性,所有组成员都将变为primary。

当您将单主模式组更改为多主模式时,运行 MySQL 8.0.17 或更高版本的成员将自动置于只读模式,如果它们运行的 MySQL 服务器版本高于组中最低的版本。运行 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 |
+----------------------------------------------------------------------+----------------+----------------+