group-replication-changing-group-mode.md 4.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
#### 18.5.1.2改变团队模式

[](<>)

本节介绍如何更改组运行的模式(单主模式或多主模式)。用于更改组模式的功能可以在任何成员上运行。

##### 切换到单一主模式

[](<>)[](<>)[](<>)[](<>)

使用[`组复制切换到单一主模式()`](group-replication-functions-for-mode.html#function_group-replication-switch-to-single-primary-mode)通过发出以下命令,将以多主模式运行的组更改为单主模式:

```
SELECT group_replication_switch_to_single_primary_mode()
```

当您切换到单主模式时,也会根据单主模式的要求,对所有组成员禁用严格的一致性检查([`组\u复制\u强制\u更新\u无处不在\u检查=关闭`](group-replication-options.html#sysvar_group_replication_enforce_update_everywhere_checks)).

如果没有传递任何字符串,则在生成的单个初选组中,新的初选的选举将遵循中所述的选举策略[第18.1.3.1节,“单一主模式”](group-replication-single-primary-mode.html)。要覆盖选举过程并将多主组的特定成员配置为过程中的新主,请获取[`服务器_uuid`](replication-options.html#sysvar_server_uuid)并将其传递给[`组复制切换到单一主模式()`](group-replication-functions-for-mode.html#function_group-replication-switch-to-single-primary-mode).例如,问题:

```
SELECT group_replication_switch_to_single_primary_mode(member_uuid);
```

如果在运行8.0.17版本的MySQL服务器的成员上调用该函数,并且所有成员都运行8.0.17版本或更高版本的MySQL服务器,则只能根据补丁版本指定一个运行组中最低版本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-functions-for-mode.html#function_group-replication-switch-to-multi-primary-mode)通过发出以下命令,将以单主模式运行的组更改为多主模式:

```
SELECT group_replication_switch_to_multi_primary_mode()
```

经过一些协调的小组操作以确保数据的安全性和一致性后,属于该小组的所有成员都将成为初选成员。

当您将在单主模式下运行的组更改为在多主模式下运行时,如果运行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 |
+----------------------------------------------------------------------+----------------+----------------+
```