#### 18.5.1.2 Changing a Group's Mode

[]()

 This section explains how to change the mode which a group is running in, either single or multi-primary. The functions used to change a group's mode can be run on any member.

##### Changing to Single-Primary Mode

[]()[]()[]()[]()

 Use the [`group_replication_switch_to_single_primary_mode()`](group-replication-functions-for-mode.html#function_group-replication-switch-to-single-primary-mode) function to change a group running in multi-primary mode to single-primary mode by issuing:

```
SELECT group_replication_switch_to_single_primary_mode()
```

 When you change to single-primary mode, strict consistency checks are also disabled on all group members, as required in single-primary mode ([`group_replication_enforce_update_everywhere_checks=OFF`](group-replication-options.html#sysvar_group_replication_enforce_update_everywhere_checks)).

 If no string is passed in, the election of the new primary in the resulting single-primary group follows the election policies described in [Section 18.1.3.1, “Single-Primary Mode”](group-replication-single-primary-mode.html). To override the election process and configure a specific member of the multi-primary group as the new primary in the process, get the [`server_uuid`](replication-options.html#sysvar_server_uuid) of the member and pass it to [` group_replication_switch_to_single_primary_mode()`](group-replication-functions-for-mode.html#function_group-replication-switch-to-single-primary-mode). For example, issue:

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

 If you invoke the function on a member running a MySQL Server version from 8.0.17, and all members are running MySQL Server version 8.0.17 or higher, you can only specify a new primary member that is running the lowest MySQL Server version in the group, based on the patch version. This safeguard is applied to ensure the group maintains compatibility with new functions. If you do not specify a new primary member, the election process considers the patch version of the group members.

 If any member is running a MySQL Server version between MySQL 8.0.13 and MySQL 8.0.16, this safeguard is not enforced for the group and you can specify any new primary member, but it is recommended to select a primary that is running the lowest MySQL Server version in the group. If you do not specify a new primary member, the election process considers only the major version of the group members.

 While the action runs, you can check its progress by issuing:

```
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 |
+----------------------------------------------------------------------------+----------------+----------------+
```

##### Changing to Multi-Primary Mode

[]()[]()[]()[]()

 Use the [`group_replication_switch_to_multi_primary_mode()`](group-replication-functions-for-mode.html#function_group-replication-switch-to-multi-primary-mode) function to change a group running in single-primary mode to multi-primary mode by issuing:

```
SELECT group_replication_switch_to_multi_primary_mode()
```

 After some coordinated group operations to ensure the safety and consistency of your data, all members which belong to the group become primaries.

 When you change a group that was running in single-primary mode to run in multi-primary mode, members running MySQL 8.0.17 or higher are automatically placed in read-only mode if they are running a higher MySQL server version than the lowest version present in the group. Members running MySQL 8.0.16 or lower do not carry out this check, and are always placed in read-write mode.

 While the action runs, you can check its progress by issuing:

```
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 |
+----------------------------------------------------------------------+----------------+----------------+
```

