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