以下函数可用于启用和禁用组成员在特定情况下采取的操作,以及将配置重置为所有成员操作的默认设置。这些函数只能由具有 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 节,“配置成员操作”。