MySQL 9.0 发行说明
本节介绍如何更改组运行的模式,无论是单主还是多主。用于更改组模式的函数可以在任何成员上运行。
使用 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);
使用 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 |
+----------------------------------------------------------------------+----------------+----------------+