从 MySQL 8.0.27 开始,当您 SOURCE_CONNECTION_AUTO_FAILOVER=1在 CHANGE REPLICATION SOURCE TO频道的声明。该功能是为一组发送者和一组接收者设计的,即使在某些成员暂时不可用的情况下也能保持彼此同步。When the feature is active and correctly configured, if the primary that is replicating goes offline or into an error state, the new primary starts replication on the same channel when it is elected. 新的主要使用通道的源列表来选择具有最高优先级(权重)设置的源,这可能与原始源不同。
要配置此功能,必须在复制组中的所有成员服务器以及任何新加入的成员上设置复制通道以及通道的复制用户帐户和密码。确保 SOURCE_RETRY_COUNT和 SOURCE_CONNECT_RETRY设置设置为仅允许几次重试尝试的最小数字,例如 3 和 10。您可以使用该CHANGE REPLICATION SOURCE TO语句设置复制通道,或者如果使用 MySQL 的克隆功能配置新服务器,这一切都会发生自动地。当他们加入时,频道的 SOURCE_CONNECTION_AUTO_FAILOVER设置会从主要成员广播到组成员。如果您稍后禁用 SOURCE_CONNECTION_AUTO_FAILOVER对于主服务器上的通道,这也会广播到辅助服务器,它们会更改通道的状态以匹配。
mysql_start_failover_channels_if_primary使用默认启用 的组复制成员操作激活和停用副本的异步连接故障转移 。group_replication_disable_member_action 您可以通过使用该函数 在主节点上禁用该成员操作来为整个组禁用它 ,如下例所示:
mysql> SELECT group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "AFTER_PRIMARY_ELECTION");
该功能只能在主节点上更改,并且必须为整个组启用或禁用,因此您不能让某些成员提供故障转移而其他成员不提供。禁用成员操作时 mysql_start_failover_channels_if_primary ,不需要在辅助成员上配置通道,但如果主成员脱机或进入错误状态,则通道的复制将停止。请注意,如果有多个频道 SOURCE_CONNECTION_AUTO_FAILOVER=1,则成员操作会覆盖所有频道,因此无法通过该方法单独启用和禁用它们。在主通道上设置 SOURCE_CONNECTION_AUTO_FAILOVER=0以禁用单个通道。
频道的源列表 SOURCE_CONNECTION_AUTO_FAILOVER=1会在所有组成员加入时广播给他们,当它发生变化时也会广播给他们。无论源是自动更新其成员资格的托管组,还是使用 、 asynchronous_connection_failover_add_source()或 函数 手动添加或更改源都是这种情况。所有组成员都会收到记录在 和 asynchronous_connection_failover_delete_source()asynchronous_connection_failover_add_managed()asynchronous_connection_failover_delete_managed()mysql.replication_asynchronous_connection_failover``mysql.replication_asynchronous_connection_failover_managed 表。由于源不必位于托管组中,因此您可以设置该功能以将一组接收器与一个或多个备用独立发送器,甚至单个发送器同步。但是,不属于复制组的独立副本无法使用此功能。




