10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载 本手册节选

MySQL 8.0参考手册/.../ 使用异步连接故障转移切换源

17.4.9切换源与异步连接故障切换

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

从MySQL 8.0.23开始,异步连接故障转移机制还支持Group Replication拓扑,通过自动监视组成员关系的变化并区分主服务器和备用服务器。在向源列表中添加组成员并将其定义为托管组的一部分时,异步连接故障转移机制将更新源列表以使其与成员关系更改保持一致,并在组成员加入或离开时自动添加和删除组成员。只有占大多数的在线组成员才用于连接和获取状态。当管理组的最后一个成员离开组时,不会自动删除,从而保留管理组的配置,但当不再需要管理组时,可以手动删除。

为复制区域通道集激活异步连接故障切换SOURCE_CONNECTION_AUTO_FAILOVER = 1将复制源更改为语句(从MySQL 8.0.23)或改变主语句(在MySQL 8.0.23之前)用于通道。GTID自动定位必须用于通道(SOURCE_AUTO_POSITION = 1|MASTER_AUTO_POSITION = 1).您可以在副本运行时设置此选项。

重要的

类所指定的相同连接的重试次数SOURCE_RETRY_COUNT|MASTER_RETRY_COUNT选择的将复制源更改为|改变主声明。方法设置两次尝试之间的间隔SOURCE_CONNECT_RETRY|MASTER_CONNECT_RETRY选择。当这些尝试用尽时,异步连接故障转移机制将接管。请注意,这些选项的默认设置是为连接到单个源而设计的,将使副本在60天内重试相同的连接。为确保异步连接故障转移机制能够及时激活,请设置SOURCE_RETRY_COUNT|MASTER_RETRY_COUNT而且SOURCE_CONNECT_RETRY|MASTER_CONNECT_RETRY到最少的数量,只允许对同一源进行几次重试尝试,以防连接失败是由短暂的网络中断引起的。合适的值SOURCE_RETRY_COUNT = 3|MASTER_RETRY_COUNT = 3而且SOURCE_CONNECT_RETRY = 10|MASTER_CONNECT_RETRY = 10,这将使副本以10秒的间隔重试连接3次。

还可以在复制副本上为复制区域通道设置源列表。方法设置和管理源代码列表asynchronous_connection_failover_add_source而且asynchronous_connection_failover_delete_source添加和删除单个复制源服务器。要添加和删除受管理的服务器组,请使用asynchronous_connection_failover_add_managed而且asynchronous_connection_failover_delete_managed函数来代替。

函数命名相关的复制区域通道,并指定MySQL实例的主机名、端口号、网络名称空间和加权优先级(1-100,其中100是最高优先级),以便从通道的源列表中添加或删除。对于托管组,还可以指定托管服务的类型(目前只有group Replication可用)和托管组的标识符(对于group Replication,这是group_replication_group_name系统变量)。在添加托管组时,只需要添加一个组成员,副本会自动从当前组成员中添加其他组成员。当您删除一个托管组时,您将同时删除整个组。

在MySQL 8.0.22中,在副本到源的连接失败后,异步连接故障转移机制被激活,它发出一个启动|副本slave语句尝试连接到新源。在此版本中,如果复制I/O线程由于源停止或网络故障而停止,则连接将故障转移。在任何其他情况下,连接都不会发生故障转移,例如当复制线程被对象停止时停止|副本slave声明。

从MySQL 8.0.23开始,如果源列表中的另一个可用服务器具有更高的优先级(权重)设置,异步连接故障转移机制也会在连接上发生故障。此功能确保副本始终连接到最合适的源服务器,并且它适用于托管组和单个(非托管)服务器。对于托管组,源的权重取决于它是主服务器还是辅助服务器。因此,假设您将托管组设置为将较高的权重分配给主节点,将较低的权重分配给次要节点,当主节点发生变化时,将较高的权重分配给新的主节点,因此副本在连接到它的过程中发生变化。如果当前连接的受管源服务器离开受管组,或者在受管组中不再占多数,异步连接故障转移机制还会更改连接。

当一个连接发生故障时,在通道的源列表中列出的备选源中具有最高优先级(权重)设置的源将被选择用于第一次连接尝试。副本首先检查它是否可以连接到源服务器,或者在托管组的情况下,检查源服务器是否拥有该组在线在组中的地位。如果权重最高的源不可用,副本将尝试按权重降序排列的所有列出的源,然后从权重最高的源重新启动。如果多个源具有相同的权重,副本将随机排列它们。如果副本需要再次遍历该列表,它将包含发生原始连接失败的源并重新尝试。

源列表存储在mysql.replication_asynchronous_connection_failover而且mysql.replication_asynchronous_connection_failover_managed表,并可以在性能架构表中查看replication_asynchronous_connection_failover而且replication_asynchronous_connection_failover_managed.副本使用监视线程跟踪受管理组的成员关系并更新源列表(线程/ sql / replica_monitor).的设置SOURCE_CONNECTION_AUTO_FAILOVER选择的将复制源更改为|改变主语句和源列表将在远程克隆操作期间转移到副本的克隆。

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

  • 必须在源和副本上使用gtid (gtid_mode =对),SOURCE_AUTO_POSITION|MASTER_AUTO_POSITION选择的将复制源更改为|改变主语句必须在副本上启用,以便GTID自动定位用于到源的连接。

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

  • 必须提供复制用户帐户选择例如,通过发出授予SELECT ON performance_schema。*“repl_user”;

  • 不能在用于启动复制的语句上指定复制用户帐户和密码,因为它们需要在自动重新启动时可用,以便连接到备用源。控件必须为通道设置将复制源更改为|改变主语句,并记录在复制元数据存储库中。