Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


20.5.1.5 成员操作配置

Group Replication 允许在指定情况下设置组成员的操作。可以使用函数单独启用或禁用成员操作。服务器的成员操作配置也可以重置为默认值,届时该服务器已经离开组。

具有GROUP_REPLICATION_ADMIN特权的管理员可以使用group_replication_enable_member_actiongroup_replication_disable_member_action函数在组的primary上配置成员操作。然后,成员操作配置,即所有成员操作和它们是否启用或禁用,将被传播到其他组成员和加入成员使用Group Replication的组消息。因此,所有组成员都具有相同的成员操作配置。你也可以在不属于组的服务器上配置成员操作,只要安装了Group Replication插件。在这种情况下,成员操作配置不会被传播到任何其他服务器。

如果您使用函数配置成员操作的服务器是群组的一部分,它必须是当前单一主服务器在单一主模式下,并且它必须是多数派。Group Replication 内部跟踪配置变化,但不会给予GTID,也不会写入二进制日志,因此不会传播到外部服务器,例如下游副本。Group Replication 对成员操作配置的版本号每次启用或禁用成员操作时递增。

成员操作配置将按照以下方式传播给成员:

  • 在启动群组时, bootstraps 服务器的成员操作配置将成为群组的配置。

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

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

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

性能_schema 表replication_group_member_actions 列出了可用的成员动作、触发事件和当前是否启用。成员动作具有优先级从1到100,低值的动作将首先执行。如果在执行成员动作时发生错误,可以将失败记录下来,但否则忽略。如果认为成员动作的失败是关键的,可以根据group_replication_exit_state_action系统变量指定的策略处理。

可以使用性能_schema 表replication_group_configuration_version 查看的 mysql.replication_group_configuration_version 表记录了成员动作配置的当前版本。每当使用函数启用或禁用成员动作时,版本号将递增。

可以在不属于组的服务器上使用group_ replication_reset_member_actions函数。该函数将成员操作配置设置回默认值,并将其版本号设置为1。服务器必须是可写的(read_only系统变量设置为OFF),并且需要安装Group Replication插件。您可以使用该函数来删除服务器在组中时使用的成员操作配置,如果您计划将其用作独立服务器,无成员操作或不同的成员操作。

可以配置成员操作mysql_disable_super_read_only_if_primary,使得在单个主服务器模式下,组保持超级只读模式,当新的主服务器被选举时,这样可以确保组仅接受复制事务,不接受来自客户端的任何直接写入。这意味着,在为灾难容错提供第二备份组时,您可以确保第二备份组与第一个组保持同步。

默认情况下,在选举 primaries 时,超级只读模式被禁用,以便 primaries 成为可写的,并从复制源服务器和客户端接受更新。这是当成员操作mysql_disable_super_read_only_if_primary启用时的情况,这是其默认设置。如果使用group_replication_disable_member_action函数将操作设置为禁用, primaries 将在选举后保持超级只读模式。在这种状态下,它不接受来自任何客户端的更新,即使是拥有CONNECTION_ADMINSUPER特权的用户。它继续接受由复制线程执行的更新。