SOURCE_CONNECTION_AUTO_FAILOVER=1 为通道的CHANGE REPLICATION SOURCE TO语句(来自 MySQL 8.0.23)或 CHANGE MASTER TO语句(在 MySQL 8.0.23 之前)上 设置的复制通道激活异步连接故障转移。GTID 自动定位必须用于通道 ( SOURCE_AUTO_POSITION = 1| MASTER_AUTO_POSITION = 1)。
重要的
当与源的现有连接失败时,副本首先重试相同的连接,次数由SOURCE_RETRY_COUNT| | MASTER_RETRY_COUNT的选项 陈述。尝试之间的间隔由 | 设置。选项。当这些尝试用尽时,异步连接故障转移机制将接管。请注意,这些选项的默认值是为连接到单个源而设计的,使副本重试相同的连接 60 天。为保证异步连接故障转移机制能够及时启动,设置 | CHANGE REPLICATION SOURCE TOCHANGE MASTER TOSOURCE_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 TOCHANGE MASTER TO




