从 MySQL 8.0.22 开始,您可以使用异步连接故障转移机制在从副本到其源的现有连接失败后自动建立到新源的异步(源到副本)复制连接。异步连接故障转移机制可用于使副本与共享数据的多个 MySQL 服务器或服务器组保持同步。潜在源服务器列表存储在副本上,如果连接失败,将根据您设置的加权优先级从列表中选择一个新源。
从 MySQL 8.0.23 开始,异步连接故障转移机制还支持 Group Replication 拓扑,通过自动监控组成员的变化并区分主从服务器。当您将组成员添加到源列表并将其定义为托管组的一部分时,异步连接故障转移机制会更新源列表以使其与成员更改保持一致,并在组成员加入或离开时自动添加和删除组成员。只有占多数的在线群组成员用于连接和获取状态。被管理组的最后一个剩余成员即使离开该组也不会被自动删除,因此被管理组的配置得以保留。然而,
从 MySQL 8.0.27 开始,异步连接故障转移机制还使作为托管复制组一部分的副本能够在当前接收方(组的主节点)出现故障时自动重新连接到发送方。此功能与组复制一起工作,在以单主模式配置的组上,其中组的主是具有使用该机制的复制通道的副本。该功能是为一组发送者和一组接收者设计的,即使在某些成员暂时不可用时也能保持彼此同步。它还将一组接收者与一个或多个不属于托管组的发送者同步。不属于复制组的副本无法使用此功能。
使用异步连接故障转移机制的要求如下:
GTID 必须在源和副本 (
gtid_mode=ON
) 上使用,并且SOURCE_AUTO_POSITION
| |MASTER_AUTO_POSITION
的选项 必须在副本上启用语句,以便 GTID 自动定位用于与源的连接。CHANGE REPLICATION SOURCE TO
CHANGE MASTER TO
通道的源列表中的所有源服务器上必须存在相同的复制用户帐户和密码。此帐户用于连接到每个源。您可以为不同的频道设置不同的帐户。
必须为复制用户帐户
SELECT
授予对性能模式表的权限,例如,通过发出GRANT SELECT ON performance_schema.* TO '
repl_user
';不能在用于启动复制的语句中指定复制用户帐户和密码,因为它们需要在自动重新启动时可用以连接到备用源。必须使用
CHANGE REPLICATION SOURCE TO
|为频道设置它们CHANGE MASTER TO
副本上的语句,并记录在复制元数据存储库中。如果使用异步连接故障转移机制的通道位于组复制单主模式组的主通道上,则从 MySQL 8.0.27 开始,副本之间的异步连接故障转移默认情况下也处于活动状态。在这种情况下,必须在复制组中的所有辅助服务器以及任何新加入的成员上设置复制通道和通道的复制用户帐户和密码。如果使用 MySQL 的克隆功能配置新服务器,这一切都会自动发生。
重要的如果您不希望在这种情况下在副本之间发生异步连接故障转移 ,请
mysql_start_failover_channels_if_primary
使用该group_replication_disable_member_action
函数通过禁用该组的成员操作来禁用它。禁用该功能时,您无需在辅助组成员上配置复制通道,但如果主组脱机或进入错误状态,则该通道的复制将停止。
从 MySQL Shell 8.0.27 和 MySQL 8.0.27 开始,MySQL InnoDB ClusterSet 可通过将主 InnoDB Cluster 与其在备用位置(例如不同数据中心)的一个或多个副本链接起来,为 InnoDB Cluster 部署提供容灾能力。考虑改用此解决方案来简化用于复制、故障转移和灾难恢复的新多组部署的设置。您可以采用现有的组复制部署作为 InnoDB 集群。
InnoDB ClusterSet 和 InnoDB Cluster 旨在抽象和简化设置、管理、监视、恢复和修复复制组的过程。InnoDB ClusterSet 使用专用的 ClusterSet 复制通道自动管理从主集群到副本集群的复制。如果主集群未正常运行,您可以使用管理员命令在组之间触发受控切换或紧急故障转移。当需求发生变化时,在初始设置后,服务器和组可以很容易地添加到 InnoDB ClusterSet 部署中或从中删除。有关详细信息,请参阅MySQL InnoDB ClusterSet。