SOURCE_CONNECTION_AUTO_FAILOVER=1
为通道的CHANGE REPLICATION SOURCE
TO
语句(从 MySQL 8.0.23 开始)或
语句(MySQL 8.0.23 之前)
设置的复制通道激活异步连接故障转移CHANGE MASTER TO
。GTID 自动定位必须用于通道 ( SOURCE_AUTO_POSITION =
1
| MASTER_AUTO_POSITION = 1
)。
当与源的现有连接失败时,副本首先重试相同的连接,次数由SOURCE_RETRY_COUNT
|
指定。|
MASTER_RETRY_COUNT
的选项
陈述。尝试之间的间隔由
|
设置 选项。当这些尝试都用完后,异步连接故障转移机制就会接管。请注意,这些选项的默认值是为连接到单个源而设计的,使副本重试相同的连接 60 天。为保证异步连接故障转移机制能够及时启动,设置
|
CHANGE REPLICATION SOURCE TO
CHANGE MASTER TO
SOURCE_CONNECT_RETRY
MASTER_CONNECT_RETRY
SOURCE_RETRY_COUNT
MASTER_RETRY_COUNT
和
SOURCE_CONNECT_RETRY
|
MASTER_CONNECT_RETRY
到只允许对同一源进行几次重试的最小数量,以防连接失败是由瞬态网络中断引起的。合适的值是
SOURCE_RETRY_COUNT=3
|
MASTER_RETRY_COUNT=3
和
SOURCE_CONNECT_RETRY=10
|
MASTER_CONNECT_RETRY=10
,这使得副本以 10 秒的间隔重试连接 3 次。
您还需要为复制通道设置源列表,以指定可用于故障转移的源。asynchronous_connection_failover_add_source
您可以使用和
函数来设置和管理源列表
,asynchronous_connection_failover_delete_source
以添加和删除单个复制源服务器。要添加和删除托管服务器组,请改用
asynchronous_connection_failover_add_managed
和
asynchronous_connection_failover_delete_managed
函数。
这些函数命名相关的复制通道并指定主机名、端口号、网络命名空间和 MySQL 实例的加权优先级(1-100,其中 100 为最高优先级)以添加到通道的源列表或从通道的源列表中删除。对于托管组,您还可以指定托管服务的类型(目前只有 Group Replication 可用)和托管组的标识符(对于 Group Replication,这是
group_replication_group_name
系统变量的值)。添加托管组时,只需添加一个组成员,副本会自动添加当前组成员中的其余成员。删除托管组时,会同时删除整个组。
在 MySQL 8.0.22 中,当副本与源连接失败后,异步连接故障转移机制被激活,并发出一条
START
REPLICA
语句尝试连接到新的源。在此版本中,如果复制接收器线程由于源停止或网络故障而停止,则连接将进行故障转移。连接不会在任何其他情况下进行故障转移,例如当复制线程被一条STOP
REPLICA
语句停止时。
从 MySQL 8.0.23 开始,如果源列表中的另一个可用服务器具有更高的优先级(权重)设置,则异步连接故障转移机制也会对连接进行故障转移。此功能可确保副本始终与最合适的源服务器保持连接,并且适用于托管组和单个(非托管)服务器。对于托管组,源的权重根据它是主服务器还是辅助服务器来分配。因此,假设您将托管组设置为为主节点赋予更高的权重并为辅助节点赋予更低的权重,那么当主节点发生变化时,更高的权重将分配给新的主节点,因此副本会通过与它的连接进行更改。
故障转移连接时,将选择通道源列表中列出的备选源中具有最高优先级(权重)设置的源进行第一次连接尝试。副本首先检查它是否可以连接到源服务器,或者在托管组的情况下,源服务器ONLINE
在组中具有状态(不是
RECOVERING
或不可用)。如果最高权重的源不可用,副本将按权重降序尝试所有列出的源,然后从最高权重的源重新开始。如果多个源具有相同的权重,副本将随机排序它们。如果副本需要再次开始处理列表,它会包含并重试发生原始连接失败的源。
源列表存储在
mysql.replication_asynchronous_connection_failover
和
mysql.replication_asynchronous_connection_failover_managed
表中,可以在 Performance Schema 表
replication_asynchronous_connection_failover
和
中查看replication_asynchronous_connection_failover_managed
。副本使用监视器线程来跟踪托管组的成员资格并更新源列表 ( thread/sql/replica_monitor
)。
|SOURCE_CONNECTION_AUTO_FAILOVER
选项的设置
语句和源列表在远程克隆操作期间被传输到副本的克隆。
CHANGE REPLICATION SOURCE TO
CHANGE MASTER TO