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.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节,“单主模式”中描述的选举策略。要覆盖选举过程并将多主组中的特定成员配置为新的单主,在执行group_replication_switch_to_single_primary_mode()时,获取该成员的server_uuid,例如:

SELECT group_replication_switch_to_single_primary_mode(member_uuid);

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

如果有任何成员运行MySQL Server版本介于MySQL 8.0.13和MySQL 8.0.16之间,这一安全措施对该组不生效,您可以指定任何新的主要成员,但建议选择一个运行该组中最低的MySQL Server版本的主机。如果您不指定新的主要成员,选举过程将考虑组成员的主要版本。

在操作执行期间,您可以通过以下命令来检查其进度:

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 8.0.17或更高版本的成员将自动处于只读模式,如果它们运行的是该组中最低的MySQL Server版本。运行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 |
+----------------------------------------------------------------------+----------------+----------------+