以下函数可用于启用和禁用组成员在指定情况下的操作,并将配置重置为所有成员操作的默认设置。它们只能由具有 GROUP_REPLICATION_ADMIN
权限或已弃用的 SUPER
权限的管理员使用。
您可以使用 group_replication_enable_member_action
和 group_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_ADMIN
或SUPER
权限。它继续接受来自复制线程的更新。这意味着,当组的目的是提供灾难恢复的辅助组时,您可以确保辅助组保持与第一个组同步。 -
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 节,“配置成员操作”。