文档主页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (美国信函) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  集群复制在线升级方法

20.8.3.3 集群复制在线升级方法

选择以下方法之一来升级集群复制组

滚动组内升级

此方法受支持,前提是在组中仍然存在运行较旧版本的服务器时,运行较新版本的服务器不会向组生成工作负载。换句话说,运行较新版本的服务器只能作为辅助服务器加入组。在这种方法中,始终只有一个组,每个服务器实例都会从组中删除、升级,然后重新加入组。

此方法非常适合单主组。当组在单主模式下运行时,如果您需要主服务器始终保持不变(除了它本身正在升级时),它应该是最后一个被升级的成员。主服务器无法保持为主服务器,除非它运行的是组中最低的 MySQL 服务器版本。主服务器升级后,您可以使用 group_replication_set_as_primary() 函数将其重新指定为主服务器。如果您不介意哪个成员是主服务器,则可以按任意顺序升级成员。组会在必要时从运行最低 MySQL 服务器版本的成员中选举出一个新的主服务器,遵循 第 20.1.3.1 节,“单主模式” 中描述的选举策略。

对于在多主模式下运行的组,在滚动组内升级期间,主服务器的数量会减少,导致写可用性降低。这是因为,如果成员在运行的 MySQL 服务器版本高于现有组成员运行的最低版本的情况下加入组,它会自动保持只读模式 (super_read_only=ON).

有关组中版本兼容性的完整信息以及这如何影响升级过程期间组的行为,请参阅 第 20.8.1 节,“在组中组合不同的成员版本”

滚动迁移升级

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

因为运行较旧版本的组在您升级成员时处于联机状态,所以您需要运行较新版本的组来追赶在升级成员时执行的任何事务。因此,新组中的一个服务器被配置为旧组中主服务器的副本。这确保了新组赶上旧组。因为此方法依赖于用于将数据从一个组复制到另一个组的异步复制通道,所以它在与异步源-副本复制相同的假设和要求下受支持,请参阅 第 19 章,复制。对于在单主模式下运行的组,与旧组的异步复制连接必须将数据发送到新组中的主服务器,对于多主组,异步复制通道可以连接到任何主服务器。

该过程为

  • 从运行较旧的服务器版本的原始组中逐个删除成员,请参阅 第 20.8.3.2 节,“升级集群复制成员”

  • 升级成员上运行的服务器版本,请参阅 第 3 章,升级 MySQL。您可以按照就地或配置方法进行升级。

  • 使用升级后的成员创建一个新组,请参阅 第 20 章,集群复制。在这种情况下,您需要在每个成员上配置一个新组名称(因为旧组仍在运行并使用旧名称),引导一个初始的升级后的成员,然后添加其余的升级后的成员。

  • 在旧组和新组之间设置异步复制通道,请参阅 第 19.1.3.4 节,“使用 GTID 设置复制”。将旧主服务器配置为异步复制源服务器,将新组成员配置为基于 GTID 的副本。

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

滚动复制升级

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

由于运行旧版本的组在您配置新组成员时处于联机状态,因此需要运行新版本的组赶上配置成员期间执行的任何事务。因此,新组中的一台服务器被配置为旧组中主服务器的副本。这确保了新组赶上旧组。由于此方法依赖于异步复制通道,该通道用于将数据从一个组复制到另一个组,因此它在异步源副本复制的相同假设和要求下受支持,请参阅 第 19 章,复制。对于在单主模式下运行的组,异步复制连接到旧组必须将数据发送到新组中的主服务器,对于多主组,异步复制通道可以连接到任何主服务器。

该过程为

  • 部署适当数量的成员,以便运行新版本的组能够处理成员故障

  • 备份组成员中现有数据的备份

  • 使用旧成员的备份配置新组成员,请参阅 第 20.8.3.4 节,“使用 mysqlbackup 升级组复制” 以了解一种方法。

    注意

    您必须将备份还原到与备份创建时的 MySQL 版本相同的版本,然后执行就地升级。有关说明,请参阅 第 3 章,升级 MySQL

  • 使用升级后的成员创建一个新组,请参阅 第 20 章,集群复制。在这种情况下,您需要在每个成员上配置一个新组名称(因为旧组仍在运行并使用旧名称),引导一个初始的升级后的成员,然后添加其余的升级后的成员。

  • 在旧组和新组之间设置异步复制通道,请参阅 第 19.1.3.4 节,“使用 GTID 设置复制”。将旧主服务器配置为异步复制源服务器,将新组成员配置为基于 GTID 的副本。

一旦新组中缺少的持续数据足够小,可以快速传输,您必须将写入操作重定向到新组。等到所有旧组数据都传播到新组,然后删除异步复制连接。