以下函数使您能够向复制通道的源列表添加或从中删除复制源服务器,以及清除给定服务器的源列表。
表 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 节,“使用异步连接故障转移切换源和副本”。