#### 18.5.1.5 配置成员操作

[](<>)

从 MySQL 8.0.26 开始，Group Replication 能够设置组成员在指定情况下采取的操作。可以使用函数单独启用和禁用成员操作。服务器的成员操作配置也可以在它离开组后重置为默认值。

管理员（与[`GROUP_REPLICATION_ADMIN`](privileges-provided.html#priv_group-replication-admin)权限）可以使用[`group_replication_enable_member_action`](group-replication-functions-for-member-actions.html#function_group-replication-enable-member-action)要么[`group_replication_disable_member_action`](group-replication-functions-for-member-actions.html#function_group-replication-disable-member-action)功能。成员操作配置，包括所有成员操作以及它们是启用还是禁用，然后使用 Group Replication 的组消息传播到其他组成员和加入成员。因此，所有组成员都具有相同的成员操作配置。只要安装了组复制插件，您还可以在不属于组的服务器上配置成员操作。在这种情况下，成员操作配置不会传播到任何其他服务器。

如果您使用这些功能配置成员操作的服务器是组的一部分，则它必须是单主模式下组中的当前主服务器，并且必须是多数服务器的一部分。配置更改由 Group Replication 在内部跟踪，但没有给定 GTID，也不会写入二进制日志，因此不会传播到组外的任何服务器，例如下游副本。每次启用或禁用成员操作时，组复制都会增加其成员操作配置的版本号。

成员操作配置按如下方式传播给成员：

-   启动组时，引导该组的服务器的成员操作配置成为该组的配置。

-   如果组的最低 MySQL 服务器版本支持成员操作，则加入成员会在他们加入时发生的状态交换过程中收到组的成员操作配置。在这种情况下，加入成员将其自己的成员操作配置替换为组的配置。

-   如果支持成员动作的加入成员加入了最低 MySQL Server 版本不支持成员动作的组，则在加入时不会收到成员动作配置。在这种情况下，加入成员会将其自己的配置重置为默认值。

    不支持成员操作的成员无法加入具有成员操作配置的组，因为其 MySQL Server 版本低于现有组成员正在运行的最低版本。

    性能模式表[`replication_group_member_actions`](performance-schema-replication-group-member-actions-table.html)列出配置中可用的成员操作、触发它们的事件以及它们当前是否启用。成员操作的优先级从 1 到 100，首先执行较低的值。如果在执行成员操作时发生错误，则可以记录成员操作的失败，否则忽略。如果成员动作的失败被认为是关键的，则可以按照由成员指定的策略进行处理。[`group_replication_exit_state_action`](group-replication-options.html#sysvar_group_replication_exit_state_action)系统变量。

    这`mysql.replication_group_configuration_version`表，可以使用 Performance Schema 表查看[`复制组配置版本`](performance-schema-replication-group-configuration-version-table.html)，记录当前版本的成员动作配置。每当使用这些功能启用或禁用成员操作时，版本号都会递增。

    这[`group_replication_reset_member_actions`](group-replication-functions-for-member-actions.html#function_group-replication-reset-member-actions)功能只能在不属于组的服务器上使用。它将成员操作配置重置为默认设置，并将其版本号重置为 1。服务器必须是可写的（使用只读[`系统变量设置为`](server-system-variables.html#sysvar_read_only)离开`) 并安装 Group Replication 插件。`如果您打算将其用作没有成员操作或不同成员操作的独立服务器，则可以使用此功能删除服务器在属于组时使用的成员操作配置。会员操作：

##### mysql_disable_super_read_only_if_primary`会员行动`

mysql_disable_super_read_only_if_primary`可以配置使单主模式的组在选举新主时保持超级只读模式，这样该组只接受复制事务，不接受来自客户端的任何直接写入。`这种设置意味着当一个组的目的是为另一个组提供辅助备份以进行容灾时，您可以确保辅助组与第一个组保持同步。默认情况下，主节点在选举时禁用超级只读模式，从而主节点变为读写状态，并接受来自复制源服务器和客户端的更新。

这是会员行动时的情况mysql_disable_super_read_only_if_primary`已启用，这是其默认设置。`如果您使用group_replication_disable_member_action[`功能，主节点在选举后保持超级只读模式。`](group-replication-functions-for-member-actions.html#function_group-replication-disable-member-action)在这种状态下，它不接受来自任何客户端的更新，即使是拥有CONNECTION_ADMIN[`要么`](privileges-provided.html#priv_connection-admin)极好的[`特权。`](privileges-provided.html#priv_super)它确实继续接受复制线程执行的更新。
