以下函数可用于启用和禁用组成员在特定情况下采取的操作,并将配置重置为所有成员操作的默认设置。它们只能由具有 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
),并且必须安装了组复制插件。如果您打算将服务器用作没有成员操作或具有不同成员操作的独立服务器,则可以使用此函数删除服务器作为组的一部分时使用的成员操作配置。语法
STRING group_replication_reset_member_actions()
参数
无。
返回值
包含操作结果的字符串,例如是否成功。
示例
SELECT group_replication_reset_member_actions();
有关更多信息,请参阅第 20.5.1.5 节“配置成员操作”。