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  /  ...  /  Group Replication Online Upgrade Methods

20.8.3.3 组复制在线升级方法

选择以下组复制组升级方法之一:

滚动升级组内升级

该方法支持在服务器运行新版本时不生成工作负载到组中,而是作为次要服务器加入组中。在该方法中,只有一个组,每个服务器实例从组中删除、升级然后重新加入组。

该方法非常适合单主模式组。在单主模式下,如果您需要在升级过程中保持主服务器不变(除了升级自己时),那么它应该是最后一个被升级的成员。主服务器不能保持为主服务器,除非它是组中运行的最低MySQL Server版本。升级主服务器后,您可以使用group_replication_set_as_primary()函数重新任命它为主服务器。如果您不介意哪个成员是主服务器,成员可以以任何顺序升级。组将根据成员的最低MySQL Server版本选举新的主服务器,遵循第 20.1.3.1 节,“单主模式”中的选举政策。

对于多主模式组,在滚动升级过程中,主服务器的数量将减少,导致写入可用性的降低。这是因为如果成员加入组时运行的MySQL Server版本高于现有组成员的版本,它将自动保持只读模式 (super_read_only=ON)。

有关组中版本兼容性和升级过程中的行为的完整信息,请参阅第 20.8.1 节,“组中不同成员版本的组合”

滚动迁移升级

在该方法中,您从组中删除成员,升级它们,然后使用升级的成员创建第二个组。对于多主模式组,在该过程中,主服务器的数量将减少,导致写入可用性的降低。这不会影响单主模式组。

因为旧组仍在运行,而您正在升级成员,因此您需要新组来赶上旧组执行的任何事务。因此,您需要在新组中配置一个服务器作为旧组的副本,以确保新组赶上旧组。因为该方法依赖异步复制通道来从一个组复制数据到另一个组,因此它遵循异步源副本复制的相同假设和要求,见第 19 章 复制。对于单主模式组,异步复制连接到旧组必须将数据发送到新组的主服务器,而对于多主模式组,异步复制通道可以连接到任何主服务器。

该过程是:

在将应用程序重定向到新组之前,您必须确保新组具有足够的成员数量,例如,使组能够处理成员故障。发出 SELECT * FROM performance_schema.replication_group_members 并比较初始组大小和新组大小。等待所有旧组数据传播到新组,然后断开异步复制连接并升级任何缺失的成员。

滚动复制升级

在这种方法中,您创建了一个由运行新版本的成员组成的第二组,并将旧组缺失的数据复制到新组中。这假设您拥有足够的服务器来同时运行两个组。由于在此过程中主要服务器的数量没有减少,因此对于多主模式下的组来说,写入可用性没有减少。这使得滚动复制升级非常适合多主模式下的组。这不影响单主模式下的组。

因为旧组在新组成员配置期间保持在线,因此您需要新组来赶上旧组执行的任何事务。因此,在新组中配置一个服务器作为旧组主服务器的副本,以确保新组赶上旧组。由于这种方法依赖于异步复制通道来从一个组复制数据到另一个组,因此它受异步源副本复制的相同假设和要求的支持,参见 第 19 章,《复制》。对于单主模式下的组,异步复制连接必须将数据发送到新组的主服务器,而对于多主模式下的组,异步复制通道可以连接到任何主服务器。

该过程是:

一旦新组缺失的数据量足够小,可以快速传输,您必须将写操作重定向到新组。等待所有旧组数据传播到新组,然后断开异步复制连接。