本节介绍升级组成员所需的步骤。此过程是 第 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 shutdown或
SHUTDOWN
语句。该组中的任何其他成员继续运行。使用就地或配置方法升级成员。有关详细信息,请参阅第 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;