Documentation Home

18.5.1.5 配置成员操作

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

管理员(具有 权限)可以使用 或 函数GROUP_REPLICATION_ADMIN 在组的主要成员上配置成员操作 。成员操作配置,包括所有成员操作以及它们是否启用或禁用,然后使用组复制的组消息传播到其他组成员和加入成员。因此,所有组成员都具有相同的成员操作配置。只要安装了组复制插件,您还可以在不属于组的服务器上配置成员操作。在这种情况下,成员操作配置不会传播到任何其他服务器。 group_replication_enable_member_actiongroup_replication_disable_member_action

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

成员操作配置传播到成员如下:

  • 启动组时,引导组的服务器的成员操作配置成为组的配置。

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

  • 如果一个支持成员操作的加入成员加入一个最低 MySQL Server 版本不支持成员操作的组,则它在加入时不会收到成员操作配置。在这种情况下,加入成员会将自己的配置重置为默认值。

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

Performance Schema 表 replication_group_member_actions 列出了配置中可用的成员操作、触发它们的事件以及它们当前是否启用。成员操作的优先级从 1 到 100,较低的值首先执行。如果在执行成员操作时发生错误,则可以记录成员操作的失败,否则忽略。如果成员动作的失败被认为是关键的,则可以根据 group_replication_exit_state_action 系统变量指定的策略进行处理。

mysql.replication_group_configuration_version 可以使用 Performance Schema 表查看的表 记录 replication_group_configuration_version了成员操作配置的当前版本。每当使用函数启用或禁用成员操作时,版本号都会增加。

group_replication_reset_member_actions 功能只能在不属于组的服务器上使用。它将成员操作配置重置为默认设置,并将其版本号重置为 1。服务器必须是可写的(read_only 系统变量设置为OFF)并且安装了 Group Replication 插件。如果您打算将服务器用作没有成员操作或不同成员操作的独立服务器,则可以使用此功能删除服务器作为组的一部分时使用的成员操作配置。

会员行动: mysql_disable_super_read_only_if_primary

member action mysql_disable_super_read_only_if_primary 可以配置为让处于single-primary模式的组在选举新的primary时保持超级只读模式,这样该组只接受复制的事务,不接受来自客户端的任何直接写入。此设置意味着当一个组的目的是为另一个组提供辅助备份以实现容灾时,您可以确保辅助组与第一个保持同步。

默认情况下,超级只读模式在主节点被选中时被禁用,因此主节点变为可读写,并接受来自复制源服务器和客户端的更新。这是启用成员操作时的情况 mysql_disable_super_read_only_if_primary,这是其默认设置。如果使用该 group_replication_disable_member_action 函数将操作设置为禁用,则主节点在选举后仍处于超级只读模式。在此状态下,它不接受来自任何客户端的更新,即使是具有 CONNECTION_ADMINSUPER权限的用户。它确实继续接受复制线程执行的更新。