您可以使用异步连接故障转移机制在现有副本到其源的连接失败后,自动建立到新源的异步(源到副本)复制连接。异步连接故障转移机制可用于使副本与共享数据的多个 MySQL 服务器或服务器组保持同步。潜在源服务器列表存储在副本上,在连接失败的情况下,会根据您设置的加权优先级从列表中选择一个新的源。
异步连接故障转移机制还支持组复制拓扑,通过自动监控组成员资格的变化,区分主服务器和从服务器。当您将组成员添加到源列表并将其定义为托管组的一部分时,异步连接故障转移机制会更新源列表以使其与成员资格的变化保持一致,并随着组成员的加入或离开自动添加和删除组成员。仅在线组成员(处于多数状态)用于连接和获取状态。托管组的最后一个剩余成员即使离开组也不会被自动删除,以便保留托管组的配置。但是,如果不再需要托管组,您可以手动删除它。
异步连接故障转移机制还允许属于托管复制组的副本在当前接收器(组的主服务器)发生故障时,自动重新连接到发送器。此功能适用于以单主模式配置的组复制,其中组的主服务器是使用该机制的复制通道的副本。此功能旨在使发送器组和接收器组相互保持同步,即使某些成员暂时不可用。它还使接收器组与一个或多个不属于托管组的发送器保持同步。不属于复制组的副本无法使用此功能。
使用异步连接故障转移机制的要求如下
源和副本上必须使用 GTID (
gtid_mode=ON
),并且CHANGE REPLICATION SOURCE TO
语句的SOURCE_AUTO_POSITION
选项必须在副本上启用,以便对源的连接使用 GTID 自动定位。源列表中所有源服务器上必须存在相同的复制用户帐户和密码。此帐户用于连接到每个源。您可以为不同的通道设置不同的帐户。
复制用户帐户必须获得对性能模式表的
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。