以下功能从 MySQL 8.0.22 可用于标准源到副本复制,从 MySQL 8.0.23 可用于组复制,使您能够在复制通道的源列表中添加和删除复制源服务器。从 MySQL 8.0.27 开始,您还可以清除服务器的源列表。
在从副本到其源的现有连接失败后,异步连接故障转移机制会自动建立到适当列表中的新源的异步(源到副本)复制连接。从 MySQL 8.0.23 开始,如果当前连接的源在组中没有最高的加权优先级,连接也会发生变化。对于定义为托管组一部分的组复制源服务器,如果当前连接的源离开组或不再占多数,连接也会故障转移到另一个组成员。有关该机制的更多信息,请参见 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。
源列表存储在
mysql.replication_asynchronous_connection_failover
和
mysql.replication_asynchronous_connection_failover_managed
表中,可以在 Performance Schema 表中查看
replication_asynchronous_connection_failover
。
如果复制通道位于副本之间的故障转移处于活动状态的组的组复制主节点上,则源列表会在所有组成员加入或通过任何方法更新时广播给所有组成员。副本之间的故障转移由
mysql_start_failover_channels_if_primary
成员操作控制,默认情况下启用,可以使用该
group_replication_disable_member_action
功能禁用。
asynchronous_connection_failover_add_source()
将复制源服务器的配置信息添加到复制通道的源列表中。
句法:
asynchronous_connection_failover_add_source(channel, host, port, network_namespace, weight)
参数:
channel
:此复制源服务器是源列表的一部分的复制通道。host
:此复制源服务器的主机名。port
:此复制源服务器的端口号。network_namespace
:此复制源服务器的网络名称空间。指定一个空字符串,因为此参数保留供将来使用。weight
:此复制源服务器在复制通道的源列表中的优先级。优先级从 1 到 100,100 为最高,50 为默认值。当异步连接故障转移机制激活时,在通道的源列表中列出的备选源中具有最高优先级设置的源将被选择用于第一次连接尝试。如果此尝试不起作用,副本将按优先级降序尝试所有列出的源,然后从最高优先级的源重新开始。如果多个源具有相同的优先级,则副本随机对它们进行排序。从 MySQL 8.0.23 开始,
返回值:
包含操作结果的字符串,例如操作是否成功。
例子:
SELECT asynchronous_connection_failover_add_source('channel2', '127.0.0.1', 3310, '', 80); +-------------------------------------------------------------------------------------------------+ | asynchronous_connection_failover_add_source('channel2', '127.0.0.1', 3310, '', 80) | +-------------------------------------------------------------------------------------------------+ | Source configuration details successfully inserted. | +-------------------------------------------------------------------------------------------------+
有关详细信息,请参阅 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。
asynchronous_connection_failover_delete_source()
从复制通道的源列表中删除复制源服务器的配置信息。
句法:
asynchronous_connection_failover_delete_source(channel, host, port, network_namespace)
参数:
channel
:此复制源服务器是源列表的一部分的复制通道。host
:此复制源服务器的主机名。port
:此复制源服务器的端口号。network_namespace
:此复制源服务器的网络名称空间。指定一个空字符串,因为此参数保留供将来使用。
返回值:
包含操作结果的字符串,例如操作是否成功。
例子:
SELECT asynchronous_connection_failover_delete_source('channel2', '127.0.0.1', 3310, ''); +------------------------------------------------------------------------------------------------+ | asynchronous_connection_failover_delete_source('channel2', '127.0.0.1', 3310, '') | +------------------------------------------------------------------------------------------------+ | Source configuration details successfully deleted. | +------------------------------------------------------------------------------------------------+
有关详细信息,请参阅 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。
asynchronous_connection_failover_add_managed()
将属于托管组(组复制组成员)的复制源服务器的配置信息添加到复制通道的源列表。您只需添加一名群组成员。副本自动添加当前组成员中的其余部分,然后根据成员更改更新源列表。
句法:
asynchronous_connection_failover_add_managed(channel, managed_type, managed_name, host, port, network_namespace, primary_weight, secondary_weight)
参数:
channel
:此复制源服务器是源列表的一部分的复制通道。managed_type
:异步连接故障转移机制必须为此服务器提供的托管服务类型。当前接受的唯一值是GroupReplication
.managed_name
:服务器所属的托管组的标识符。对于GroupReplication
托管服务,标识符是group_replication_group_name
系统变量的值。host
:此复制源服务器的主机名。port
:此复制源服务器的端口号。network_namespace
:此复制源服务器的网络名称空间。指定一个空字符串,因为此参数保留供将来使用。primary_weight
:当此复制源服务器充当托管组的主服务器时,它在复制通道的源列表中的优先级。权重从 1 到 100,100 为最高。对于初级,80 是一个合适的重量。如果当前连接的源不是组中权重最高的,则异步连接故障转移机制将激活。假设您将托管组设置为对主节点赋予较高的权重,对辅助节点赋予较低的权重,那么当主节点发生变化时,其权重会增加,并且副本会通过与它的连接发生变化。secondary_weight
:此复制源服务器在复制通道的源列表中作为托管组中的辅助服务器时的优先级。权重从 1 到 100,100 为最高。对于二级,60 是合适的重量。
返回值:
包含操作结果的字符串,例如操作是否成功。
例子:
SELECT asynchronous_connection_failover_add_managed('channel2', 'GroupReplication', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '127.0.0.1', 3310, '', 80, 60); +----------------------------------------------------------------------------------------------------------------------------------------------------+ | asynchronous_connection_failover_add_source('channel2', 'GroupReplication', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '127.0.0.1', 3310, '', 80, 60) | +----------------------------------------------------------------------------------------------------------------------------------------------------+ | Source managed configuration details successfully inserted. | +----------------------------------------------------------------------------------------------------------------------------------------------------+
有关详细信息,请参阅 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。
asynchronous_connection_failover_delete_managed()
从复制通道的源列表中删除整个托管组。当您使用此功能时,托管组中定义的所有复制源服务器都将从通道的源列表中删除。
句法:
asynchronous_connection_failover_delete_managed(channel, managed_name)
参数:
channel
:此复制源服务器是源列表的一部分的复制通道。managed_name
:服务器所属的托管组的标识符。对于GroupReplication
托管服务,标识符是group_replication_group_name
系统变量的值。
返回值:
包含操作结果的字符串,例如操作是否成功。
例子:
SELECT asynchronous_connection_failover_delete_managed('channel2', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'); +-----------------------------------------------------------------------------------------------------+ | asynchronous_connection_failover_delete_managed('channel2', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa') | +-----------------------------------------------------------------------------------------------------+ | Source managed configuration details successfully deleted. | +-----------------------------------------------------------------------------------------------------+
有关详细信息,请参阅 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。
asynchronous_connection_failover_reset()
删除所有与异步连接故障转移机制相关的设置。该函数清除性能模式表
replication_asynchronous_connection_failover
和replication_asynchronous_connection_failover_managed
。该
asynchronous_connection_failover_reset()
功能只能在当前不属于组的服务器上使用,并且没有运行任何复制通道。服务器必须是可写的(read_only
系统变量设置为OFF
)并且安装了 Group Replication 插件。您可以使用此功能来清理不再在托管组中使用的服务器。句法:
STRING asynchronous_connection_failover_reset()
参数:
没有任何。
返回值:
包含操作结果的字符串,例如操作是否成功。
例子:
SELECT asynchronous_connection_failover_reset();
有关详细信息,请参阅 第 17.4.9 节,“使用异步连接故障转移切换源和副本”。