18.8.3.2 升级组复制成员

本节介绍升级组成员所需的步骤。此过程是 第 18.8.3.3 节“组复制在线升级方法”中描述的方法的一部分。升级组成员的过程对所有方法都是通用的,首先进行解释。您加入升级成员的方式取决于您采用的方法以及其他因素,例如该组是在单主模式还是多主模式下运行。您如何使用就地或预配方法升级服务器实例,不会影响此处描述的方法。

升级成员的过程包括将其从群组中删除,按照您选择的升级成员的方法,然后将升级后的成员重新加入群组。在单主组中升级成员的推荐顺序是升级所有辅助组,然后最后升级主组。如果主数据库在辅助数据库之前升级,则会选择使用旧 MySQL 版本的新主数据库,但不需要此步骤。

要升级组的成员:

  • 将客户端连接到组成员并发出 STOP GROUP_REPLICATION. OFFLINE在继续之前,通过监视 replication_group_members 表 确保成员的状态 。

  • 禁用组复制自动启动,以便您可以在升级后安全地连接到成员,并通过设置对其进行配置而无需重新加入组 group_replication_start_on_boot=0

    重要的

    如果升级后的成员有, group_replication_start_on_boot=1那么它可能会在您执行 MySQL 升级过程之前重新加入该组,并可能导致问题。例如,如果升级失败并且服务器再次重新启动,则可能损坏的服务器可能会尝试加入该组。

  • 停止成员,例如使用mysqladmin shutdownSHUTDOWN语句。该组中的任何其他成员继续运行。

  • 使用就地或配置方法升级成员。有关详细信息,请参阅第 2.11 节,“升级 MySQL”。重新启动升级后的成员时,因为 group_replication_start_on_boot设置为 0,Group Replication 不会在实例上启动,因此它不会重新加入组。

  • 在成员上执行 MySQL 升级过程后, group_replication_start_on_boot 必须将其设置为 1 以确保组复制在重启后正确启动。重新启动成员。

  • 连接到升级后的成员并发出 START GROUP_REPLICATION. 这会使成员重新加入组。Group Replication 元数据在升级后的服务器上就位,因此通常不需要重新配置 Group Replication。服务器必须在服务器离线时跟上该组处理的任何事务。一旦它追上了这个群,它就成为了这个群的在线成员。

    笔记

    升级服务器所需的时间越长,该成员离线的时间就越长,因此在添加回组时服务器需要更多的时间才能赶上来。

当一个升级的成员加入一个有任何成员运行早期 MySQL 服务器版本的组时,升级的成员加入super_read_only=on. 这确保在所有成员都运行较新版本之前,不会对升级的成员进行任何写入。在多主模式组中,当升级成功完成并且组准备好处理事务时,必须将要用作可写主模式的成员设置为读写模式。从MySQL 8.0.17开始,当一个组的所有成员都升级到同一个版本时,他们都自动变回读写模式。对于早期版本,您必须手动将每个成员设置为读写模式。连接到每个成员并发出:

SET GLOBAL super_read_only=OFF;