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