Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Switching Sources and Replicas with Asynchronous Connection Failover

19.4.9 使用异步连接故障转移切换源和副本

您可以使用异步连接故障转移机制来自动建立异步(源到副本)复制连接到新的源服务器,在现有的连接从副本到其源服务器失败后。异步连接故障转移机制可以用于保持副本与多个 MySQL 服务器或共享数据的服务器组同步。潜在的源服务器列表存储在副本上,并在连接失败时,从列表中根据您设置的加权优先级选择新的源。

异步连接故障转移机制还支持组复制拓扑结构,自动监控组成员的变化,并区分主要和次要服务器。当您将组成员添加到源列表并将其定义为托管组的一部分时,异步连接故障转移机制会更新源列表,以保持与成员变化的一致性,自动添加和删除组成员。当组成员离开组时,最后剩下的组成员不会被自动删除,以便保持托管组的配置。但是,您可以手动删除不再需要的托管组。

异步连接故障转移机制还允许副本自动重新连接到发送者,如果当前的接收者(组的主要服务器)失败。这项功能适用于组复制,单一主要模式的组中,其中组的主要服务器是一个副本,使用机制具有复制通道。该功能旨在使一组发送者和一组接收者保持同步,即使一些成员暂时不可用。它还可以同步一组接收者与一个或多个不属于托管组的发送者。不是托管复制组的一部分的副本不能使用该功能。

使用异步连接故障转移机制的要求如下:

  • GTIDs 必须在源和副本上启用(gtid_mode=ON),并且在副本上启用 SOURCE_AUTO_POSITION 选项,以便使用 GTID 自动定位连接到源。

  • 所有源服务器上的复制用户账户和密码必须相同,用于连接到每个源服务器。您可以为不同的通道设置不同的账户。

  • 复制用户账户必须具有 Performance Schema 表的 SELECT 权限,例如,通过发出 GRANT SELECT ON performance_schema.* TO 'repl_user';

  • 复制用户账户和密码不能在启动复制的语句中指定,因为它们需要在自动重新启动连接到备用源时可用。它们必须使用 CHANGE REPLICATION SOURCE TO 语句在副本上设置,并记录在复制元数据存储库中。

  • 如果使用异步连接故障转移机制的通道位于组复制单一主要模式组的主要服务器上,那么异步连接故障转移机制也将在副本之间启用默认情况下。在这种情况下,复制通道和复制用户账户和密码必须在所有次要服务器上设置,并在任何新加入的成员上设置。如果使用 MySQL 的克隆功能来 provision 新服务器,这一切都会自动发生。

    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