19.4.9 使用异步连接故障转移切换源和副本
您可以使用异步连接故障转移机制来自动建立一个异步(源到副本)复制连接,以便在现有连接从副本到源失败后建立新的连接。异步连接故障转移机制可以用来保持副本与多个MySQL服务器或服务器组共享数据。副本中存储的源服务器列表,在连接失败时,会根据权重优先级选择新的源服务器。
异步连接故障转移机制还支持Group Replication拓扑结构,自动监控组成员变化,并区分主服务器和次要服务器。当您将组成员添加到源列表,并将其定义为管理组的一部分,异步连接故障转移机制将更新源列表,以保持与成员变化同步,自动添加或删除组成员。只有在线组成员在多数情况下被用于连接和状态获取。最后一个组成员,即使它离开组,也不会自动删除,以保持组配置。然而,您可以手动删除不再需要的组。
异步连接故障转移机制还允许副本作为管理复制组的一部分自动重新连接到发送器,如果当前接收器(组的主服务器)失败。这项功能适用于在单主模式下配置的组,其中组的主服务器是一个副本,该副本使用机制进行复制。该功能旨在使发送器和接收器组保持同步,即使一些成员暂时不可用。它还同步了一个接收器组与一个或多个不在管理组中的发送器。副本不在复制组中不能使用该功能。
使用异步连接故障转移机制的要求如下:
-
GTIDs必须在源和副本上使用(
gtid_mode=ON
),并且在副本上启用SOURCE_AUTO_POSITION
选项的CHANGE REPLICATION SOURCE TO
语句,以便使用GTID自动定位连接到源。 -
在所有源服务器列表中必须存在相同的复制用户帐户和密码,以便用于连接到每个源服务器。您可以为不同的通道设置不同的帐户。
-
复制用户帐户必须被授予
SELECT
权限,以便访问Performance Schema表,例如,通过以下命令:GRANT SELECT ON performance_schema.* TO '
repl_user
'; -
不能在启动复制时指定复制用户帐户和密码,因为它们需要在自动重启连接到备用源时可用。它们必须在复制元数据存储库中设置在复制通道上,并在复制元数据存储库中记录。
-
如果在Group Replication单主模式组中使用异步连接故障转移机制,那么在复制通道和复制用户帐户和密码在所有次要服务器上设置,并在加入的新服务器上设置。如果使用MySQL的克隆功能来配置新服务器,这一切都会自动完成。
Important如果您不想在复制通道之间启用异步连接故障转移,可以禁用成员操作
mysql_start_failover_channels_if_primary
,使用group_replication_disable_member_action
函数。当功能禁用时,您不需要在次要组成员上配置复制通道,但如果主服务器离线或出错,复制将停止。
MySQL InnoDB ClusterSet可提供InnoDB Cluster部署的灾难容忍性,通过将主InnoDB Cluster与一个或多个备用副本链接在一起,例如在不同的数据中心。考虑使用这个解决方案来简化新的多组复制、故障转移和灾难恢复的设置。您可以将现有Group Replication部署转换为InnoDB Cluster。
InnoDB ClusterSet和InnoDB Cluster旨在抽象和简化设置、管理、监控、恢复和修复复制组的过程。InnoDB ClusterSet自动管理从主集群到备用集群的复制使用专门的ClusterSet复制通道。您可以使用管理员命令来触发控制的切换或紧急故障转移,如果主集群不正常工作。服务器和组可以轻松地添加到或从InnoDB ClusterSet部署中删除,以适应需求变化。更多信息,请见MySQL InnoDB ClusterSet。