本节解释了升级组成员所需的步骤。该过程是描述在第 20.8.3.3 节,“组复制在线升级方法”中的方法的一部分。升级组成员的过程对所有方法都是通用的,并且首先解释。您加入升级成员的方式可能取决于您所遵循的方法,以及其他因素,如组是否在单主模式或多主模式下运行。使用何种方法升级服务器实例,不会影响这里描述的方法。
升级成员的过程包括从组中删除成员,按照您选择的方法升级成员,然后重新加入升级的成员到组中。在单主组中,升级所有次要成员,然后升级主要成员的推荐顺序。如果在升级次要成员之前升级主要成员,将选择一个使用旧版本 MySQL 的新主要成员,但这步骤不是必需的。
要升级组成员:
-
连接到组成员并发出
STOP GROUP_REPLICATION
。在继续之前,请确保成员的状态是OFFLINE
,通过监控replication_group_members
表。 -
禁用组复制自动启动,以便在升级后安全地连接到成员并配置它,而不让它重新加入组,通过设置
group_replication_start_on_boot=0
。Important如果升级的成员具有
group_replication_start_on_boot=1
,那么它可能在您执行 MySQL 升级过程之前重新加入组,从而导致问题。例如,如果升级失败并且服务器重新启动,那么可能损坏的服务器可能会尝试加入组。 -
停止成员,例如使用 mysqladmin shutdown 或
SHUTDOWN
语句。组中的其他成员继续运行。 -
升级成员,使用就地或 provision 方法。请参阅 第 3 章,《升级 MySQL》 了解详细信息。当重新启动升级的成员时,因为
group_replication_start_on_boot
设置为 0,组复制不会在实例上启动,因此它不会重新加入组。 -
一旦在成员上执行了 MySQL 升级过程,
group_replication_start_on_boot
必须设置为 1,以确保组复制在重新启动后正确启动。重新启动成员。 -
连接到升级的成员并发出
START GROUP_REPLICATION
。这将重新加入成员到组中。组复制元数据已经在升级的服务器上,因此通常不需要重新配置组复制。服务器需要赶上组中处理的交易,然后它将成为组中的在线成员。Note升级服务器所需的时间越长,成员离线的时间越长,因此重新加入组时需要赶上的时间也越长。
当升级的成员加入具有早期 MySQL 服务器版本的组时,升级的成员将以 super_read_only=on
加入组。这确保了在所有成员都升级到新版本之前,不会对升级的成员进行写入。在多主模式组中,当升级完成并且组准备好处理交易时,旨在作为可写主服务器的成员必须设置为读写模式。当组中的所有成员都升级到同一版本时,它们将自动切换回读写模式。