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

[17.4.9.1 源的异步连接故障转移](replication-asynchronous-connection-failover-source.html)
[17.4.9.2 副本的异步连接故障转移](replication-asynchronous-connection-failover-replica.html)

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

从 MySQL 8.0.23 开始，异步连接故障转移机制还支持 Group Replication 拓扑，通过自动监控组成员身份的更改并区分主服务器和辅助服务器。当您将组成员添加到源列表并将其定义为托管组的一部分时，异步连接故障转移机制会更新源列表以使其与成员资格更改保持一致，并在组成员加入或离开时自动添加和删除。只有占多数的在线组成员用于连接和获取状态。受管组的最后一个剩余成员即使离开该组也不会自动删除，从而保留受管组的配置。但是，如果不再需要托管组，您可以手动删除它。

从 MySQL 8.0.27 开始，异步连接故障转移机制还允许作为托管复制组一部分的副本在当前接收方（组的主要）失败时自动重新连接到发送方。此功能适用于以单主模式配置的组上的组复制，其中组的主是具有使用该机制的复制通道的副本。该功能是为一组发送者和一组接收者设计的，即使在某些成员暂时不可用的情况下也能保持彼此同步。它还将一组接收者与一个或多个不属于托管组的发送者同步。不属于复制组的副本无法使用此功能。

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

-   GTID 必须在源和副本上使用（[`gtid_mode=ON`](replication-options-gtids.html#sysvar_gtid_mode)) 和`SOURCE_AUTO_POSITION`\|`MASTER_AUTO_POSITION`的选项[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)必须在副本上启用语句，以便 GTID 自动定位用于与源的连接。

-   通道的源列表中的所有源服务器上必须存在相同的复制用户帐户和密码。此帐户用于连接到每个源。您可以为不同的频道设置不同的帐户。

-   必须提供复制用户帐户`选择`对性能模式表的权限，例如，通过发出`GRANT SELECT ON performance_schema.* TO '*`repl_user`*';`

-   无法在用于启动复制的语句中指定复制用户帐户和密码，因为它们需要在自动重新启动时可用以连接到备用源。必须使用[`将复制源更改为`](change-replication-source-to.html)\|[`将主更改为`](change-master-to.html)副本上的语句，并记录在复制元数据存储库中。

-   如果正在使用异步连接故障转移机制的通道位于 Group Replication 单主模式组的主通道上，则从 MySQL 8.0.27 开始，副本之间的异步连接故障转移也默认处于活动状态。在这种情况下，必须在复制组中的所有辅助服务器以及任何新加入的成员上设置复制通道以及该通道的复制用户帐户和密码。如果使用 MySQL 的克隆功能配置新服务器，这一切都会自动发生。

    重要的

    如果您不希望在这种情况下在副本之间发生异步连接故障转移，请通过禁用成员操作来禁用它`mysql_start_failover_channels_if_primary`对于组，使用[`group_replication_disable_member_action`](group-replication-functions-for-member-actions.html#function_group-replication-disable-member-action)功能。禁用该功能时，您无需在辅助组成员上配置复制通道，但如果主组脱机或进入错误状态，则该通道的复制将停止。

    从 MySQL Shell 8.0.27 和 MySQL 8.0.27 开始，MySQL InnoDB ClusterSet 可通过将主 InnoDB Cluster 与其在备用位置（例如不同的数据中心）中的一个或多个自身副本链接，为 InnoDB Cluster 部署提供容灾能力。考虑改用此解决方案来简化用于复制、故障转移和灾难恢复的新多组部署的设置。您可以采用现有的 Group Replication 部署作为 InnoDB Cluster。

    InnoDB ClusterSet 和 InnoDB Cluster 旨在抽象和简化设置、管理、监控、恢复和修复复制组的过程。InnoDB ClusterSet 使用专用的 ClusterSet 复制通道自动管理从主集群到副本集群的复制。如果主集群运行不正常，您可以使用管理员命令触发组之间的受控切换或紧急故障转移。在初始设置后，当需求发生变化时，可以轻松地将服务器和组添加到 InnoDB ClusterSet 部署中或从中删除。有关详细信息，请参阅[MySQL InnoDB 集群集](https://dev.mysql.com/doc/mysql-shell/8.0/en/innodb-clusterset.html).
