以下函数允许您将复制源服务器添加到复制通道的源列表中,或从中删除复制源服务器,以及清除给定服务器的源列表。
表 14.27 故障转移通道函数
名称 | 描述 |
---|---|
asynchronous_connection_failover_add_managed() |
将组成员源服务器配置信息添加到复制通道源列表中 |
asynchronous_connection_failover_add_source() |
将源服务器配置信息服务器添加到复制通道源列表中 |
asynchronous_connection_failover_delete_managed() |
从复制通道源列表中删除托管组 |
asynchronous_connection_failover_delete_source() |
从复制通道源列表中删除源服务器 |
asynchronous_connection_failover_reset() |
删除与组复制异步故障转移相关的所有设置 |
在从副本到其源的现有连接失败后,异步连接故障转移机制会自动从适当的列表中建立到新源的异步(从源到副本)复制连接。如果当前连接的源在组中没有最高的加权优先级,则连接也会更改。对于作为托管组一部分定义的组复制源服务器,如果当前连接的源离开组或不再占多数,则连接也会故障转移到另一个组成员。有关该机制的更多信息,请参见第 19.4.9 节,“使用异步连接故障转移切换源和副本”。
源列表存储在mysql.replication_asynchronous_connection_failover
和mysql.replication_asynchronous_connection_failover_managed
表中,并且可以在性能架构replication_asynchronous_connection_failover
表中查看。
如果复制通道位于组复制主节点上,并且该组中副本之间的故障转移处于活动状态,则源列表会在所有组成员加入时或通过任何方法更新时广播给所有组成员。副本之间的故障转移由mysql_start_failover_channels_if_primary
成员操作控制,该操作默认启用,可以使用group_replication_disable_member_action
函数禁用。
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. | +----------------------------------------------------------------------------------------------------------------------------------------------------+
有关更多信息,请参见第 19.4.9 节,“使用异步连接故障转移切换源和副本”。
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。当异步连接故障转移机制激活时,将选择通道源列表中列出的备用源中优先级设置最高的源进行首次连接尝试。如果此尝试失败,则副本会按优先级降序尝试所有列出的源,然后从优先级最高的源重新开始。如果多个源具有相同的优先级,则副本会随机排序。如果当前连接的源不是组中权重最高的,则异步连接故障转移机制将激活。
返回值
包含操作结果的字符串,例如操作是否成功。
示例
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. | +-------------------------------------------------------------------------------------------------+
有关更多信息,请参见第 19.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. | +-----------------------------------------------------------------------------------------------------+
有关更多信息,请参见第 19.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. | +------------------------------------------------------------------------------------------------+
有关更多信息,请参见第 19.4.9 节,“使用异步连接故障转移切换源和副本”。
asynchronous_connection_failover_reset()
删除与异步连接故障转移机制相关的所有设置。该函数会清除 Performance Schema 表
replication_asynchronous_connection_failover
和replication_asynchronous_connection_failover_managed
。asynchronous_connection_failover_reset()
只能在当前不属于任何组且没有任何复制通道正在运行的服务器上使用。您可以使用此函数清理不再在托管组中使用的服务器。语法
STRING asynchronous_connection_failover_reset()
参数
无。
返回值
包含操作结果的字符串,例如操作是否成功。
示例
mysql> SELECT asynchronous_connection_failover_reset(); +-------------------------------------------------------------------------+ | asynchronous_connection_failover_reset() | +-------------------------------------------------------------------------+ | The UDF asynchronous_connection_failover_reset() executed successfully. | +-------------------------------------------------------------------------+ 1 row in set (0.00 sec)
有关更多信息,请参见第 19.4.9 节,“使用异步连接故障转移切换源和副本”。