Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Functions to Set and Reset Group Replication Member Actions

14.18.1.5 组复制成员操作函数

以下函数可用于启用和禁用组成员在指定情况下的操作,并将配置重置为所有成员操作的默认设置。它们只能由具有 GROUP_REPLICATION_ADMIN 权限或已弃用的 SUPER 权限的管理员使用。

您可以使用 group_replication_enable_member_actiongroup_replication_disable_member_action 函数在组的主服务器上配置成员操作。成员操作配置,包括所有成员操作和它们是否启用或禁用,将被传播到其他组成员和加入的成员使用组复制的组消息。这意味着组成员将在指定情况下以相同的方式行事,您只需要在主服务器上使用函数。

这些函数也可以在不属于组的服务器上使用,只要安装了组复制插件。在那种情况下,成员操作配置不会传播到其他服务器。

group_replication_reset_member_actions 函数只能在不属于组的服务器上使用。它将成员操作配置重置为默认设置,并重置其版本号。服务器必须是可写的(具有 read_only 系统变量设置为 OFF),并且安装了组复制插件。

可用的成员操作如下:

mysql_disable_super_read_only_if_primary

该成员操作是在成员被选为组的主服务器后采取的,即事件 AFTER_PRIMARY_ELECTION。成员操作默认启用。您可以使用 group_replication_disable_member_action() 函数禁用它,并使用 group_replication_enable_member_action() 函数重新启用它。

当该成员操作启用并采取时,超级只读模式将在主服务器上禁用,以便主服务器变为读写并接受来自复制源服务器和客户端的更新。这是正常情况。

当该成员操作禁用并未采取时,主服务器将在选举后保持超级只读模式。在这种状态下,它不接受来自任何客户端的更新,即使用户具有 CONNECTION_ADMINSUPER 权限。它继续接受来自复制线程的更新。这意味着,当组的目的是提供灾难恢复的辅助组时,您可以确保辅助组保持与第一个组同步。

mysql_start_failover_channels_if_primary

该成员操作是在成员被选为组的主服务器后采取的,即事件 AFTER_PRIMARY_ELECTION。成员操作默认启用。您可以使用 group_replication_disable_member_action() 函数禁用它,并使用 group_replication_enable_member_action() 函数重新启用它。

当该成员操作启用时,对于复制通道的异步连接故障转移将在组复制主服务器上激活,当您在 CHANGE REPLICATION SOURCE TO 语句中设置 SOURCE_CONNECTION_AUTO_FAILOVER=1 时。如果该功能正确配置并激活,当主服务器离线或进入错误状态时,新的主服务器将在选举后在同一通道上启动复制。这是正常情况。有关配置该功能的说明,请参阅 第 19.4.9.2 节,“异步连接故障转移复制”

当此成员操作被禁用时,不会为副本执行异步连接故障转移。如果主服务器离线或进入错误状态,复制将停止为该通道。注意,如果有多个通道具有 SOURCE_CONNECTION_AUTO_FAILOVER=1,则成员操作将涵盖所有通道,因此它们不能通过这种方法单独启用和禁用。设置 SOURCE_CONNECTION_AUTO_FAILOVER=0 以禁用单个通道。

有关成员操作和查看成员操作配置的更多信息,请参阅 第 20.5.1.5 节,“配置成员操作”

  • group_replication_disable_member_action()

    禁用成员操作,以便成员在指定情况下不执行该操作。如果您使用该函数的服务器是组的一部分,则它必须是单一主服务器模式下的当前主服务器,并且必须是多数派。更改后的设置将被传播到其他组成员和加入的成员,因此它们将在指定情况下以相同的方式行事,您只需要在主服务器上使用该函数。

    语法:

    STRING group_replication_disable_member_action(name, event)

    参数:

    • name:要禁用的成员操作的名称。

    • event:触发成员操作的事件。

    返回值:

    包含操作结果的字符串,例如是否成功。

    示例:

    SELECT group_replication_disable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION");

    有关更多信息,请参阅 第 20.5.1.5 节,“配置成员操作”

  • group_replication_enable_member_action()

    启用成员操作,以便成员在指定情况下执行该操作。如果您使用该函数的服务器是组的一部分,则它必须是单一主服务器模式下的当前主服务器,并且必须是多数派。更改后的设置将被传播到其他组成员和加入的成员,因此它们将在指定情况下以相同的方式行事,您只需要在主服务器上使用该函数。

    语法:

    STRING group_replication_enable_member_action(name, event)

    参数:

    • name:要启用的成员操作的名称。

    • event:触发成员操作的事件。

    返回值:

    包含操作结果的字符串,例如是否成功。

    示例:

    SELECT group_replication_enable_member_action("mysql_disable_super_read_only_if_primary", "AFTER_PRIMARY_ELECTION");

    有关更多信息,请参阅 第 20.5.1.5 节,“配置成员操作”

  • group_replication_reset_member_actions()

    重置成员操作配置为默认设置,并将其版本号重置为 1。

    只能在不再是组的一部分的服务器上使用 group_replication_reset_member_actions() 函数。服务器必须是可写的(具有 read_only 系统变量设置为 OFF),并且必须安装了 Group Replication 插件。您可以使用该函数来删除服务器曾经使用的成员操作配置,以便将其用作独立服务器或具有不同成员操作的服务器。

    语法:

    STRING group_replication_reset_member_actions()

    参数:

    无。

    返回值:

    包含操作结果的字符串,例如是否成功。

    示例:

    SELECT group_replication_reset_member_actions();

    有关更多信息,请参阅 第 20.5.1.5 节,“配置成员操作”