选择以下方法之一来升级组复制组
如果运行较新版本的服务器在组中仍有运行较旧版本的服务器时不向组生成工作负载,则支持此方法。换句话说,具有较新版本的服务器只能作为辅助服务器加入组。在这种方法中,始终只有一个组,并且每个服务器实例都从组中移除、升级,然后重新加入组。
此方法非常适合单主组。当组在单主模式下运行时,如果您需要主服务器始终保持不变(除非它本身正在升级),则它应该是最后一个升级的成员。除非主服务器运行的是组中最低的 MySQL 服务器版本,否则它不能继续作为主服务器。升级主服务器后,您可以使用 group_replication_set_as_primary()
函数将其重新指定为主服务器。如果您不介意哪个成员是主服务器,则可以按任何顺序升级成员。该组会根据 第 20.1.3.1 节 “单主模式” 中所述的选举策略,在必要时从运行最低 MySQL 服务器版本的成员中选举新的主服务器。
对于在多主模式下运行的组,在滚动组内升级期间,主服务器的数量会减少,从而导致写入可用性降低。这是因为如果成员在运行比现有组成员运行的最低版本更高的 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 的副本。
一旦新组缺少的正在进行的数据足够小,可以快速传输,就必须将写操作重定向到新组。等到旧组中的所有数据都传播到新组,然后删除异步复制连接。