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


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

14.18.1.5 组复制成员操作函数

以下函数可以用来为组中的成员在指定情况下启用或禁用操作,并将所有成员操作的配置重置到默认设置。这些函数只能由拥有GROUP_REPLICATION_ADMIN特权或弃用的SUPER特权的管理员使用。

您可以在组的primary上配置成员操作,使用group_replication_enable_member_actiongroup_replication_disable_member_action函数。成员操作配置,即所有成员操作及其是否启用或禁用,随后会被传播到其他组成员和加入的成员中,使用Group Replication的组消息。这意味着,当组成员在指定情况下时,他们将都采取相同的操作,您只需要在primary上使用函数。

这些函数也可以在不是组的一部分的服务器上使用,只要安装了Group Replication插件。在这种情况下,成员操作配置不会被传播到任何其他服务器上。

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

可用的成员操作如下:

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节,“异步连接故障转移for复制”

当成员操作禁用时,异步连接故障转移不发生。如果主服务器离线或进入错误状态,复制将在通道上停止。请注意,如果有多个通道具有 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: 需要启用的成员操作名称。

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

    返回值:

    操作结果的字符串,例如是否成功或失败。

    示例:

    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节,“成员操作配置”.