当您升级参与复制拓扑的服务器时,您需要考虑每个服务器在拓扑中的角色,并注意复制特有的问题。有关升级 MySQL Server 实例的一般信息和说明,请参见 第 3 章,升级 MySQL.
如 第 19.5.2 节,“复制版本之间的兼容性” 中所述,MySQL 支持从较旧的源复制到较新的副本,对于版本组合,我们支持从源版本升级到副本版本,如 第 1.3 节,“MySQL 发行版:创新和 LTS” 和 第 3.2 节,“升级路径” 中所述,但它不支持从运行较新发行版的源复制到运行较早发行版的副本。运行较早发行版的副本可能没有处理源在较晚发行版中可以处理的事务所需的的功能。因此,您必须先将复制拓扑中的所有副本升级到目标 MySQL Server 发行版,然后才能将源服务器升级到目标发行版。通过这种方式,您将永远不会遇到副本仍在较早发行版中并且试图处理来自较晚发行版中的源的事务的情况。
在有多个源(多源复制)的复制拓扑中,无论源或副本 MySQL 服务器的数量如何,都不支持使用两个以上的 MySQL Server 版本。例如,您不能在此类设置中同时使用 MySQL X.Y.1、MySQL X.Y.2 和 MySQL X.Y.3,但您可以将其中任何两个发行版一起使用。
当从尚未升级的较早发行版的源复制到已升级的较晚发行版的副本时,可能会遇到复制问题。如果源使用不再在安装在副本上的较晚发行版中支持的语句,或者依赖不再在较晚发行版中支持的行为,则可能会发生这种情况。您可以使用 MySQL Shell 升级检查器实用程序 util.checkForServerUpgrade()
检查 MySQL 8.0 服务器实例以升级到 MySQL 8.4 发行版。此实用程序会识别已知可能导致升级问题的配置和存储数据,包括在较晚发行版中不再可用的功能和行为。有关升级检查器实用程序的信息,请参见 升级检查器实用程序。
要升级复制拓扑,请按照 第 3 章,升级 MySQL 中针对每个单独的 MySQL Server 实例提供的说明进行操作,使用以下总体步骤:
首先升级副本。在每个副本实例上
执行 第 3.6 节,“为升级准备安装” 中描述的初步检查和步骤。
关闭 MySQL Server。
升级 MySQL Server 二进制文件或软件包。
重启 MySQL Server。
MySQL Server 会自动执行整个 MySQL 升级过程,在升级期间禁用二进制日志记录。
使用
START REPLICA
重新启动复制。
如果有多个副本层级(副本的副本),则从最远离源的副本开始升级,以自下而上的方式执行升级。
当所有副本都升级完成,只剩下源时,执行切换到其中一个副本。换句话说,停止对源的客户端更新,等待至少一个副本应用所有更改,重新配置复制拓扑,使该副本成为源,并将源排除在复制拓扑之外。根据单服务器的升级流程升级旧的源,然后将其重新插入拓扑。
如果您需要降级复制拓扑中的服务器,则必须在降级副本之前降级源。在副本上,您必须确保二进制日志和中继日志已完全处理,并在继续降级之前将其清除。
滚动降级流程
停止更新。
等待副本接收所有更新。无需等待它们应用所有更改。如果它们没有应用所有更改,请保持其应用器运行,以便它们可以在后台处理收到的事务。
降级源服务器,遵循单服务器降级的说明。
将降级的源服务器重新插入拓扑。
再次允许更新。
等待所有副本应用来自先前主服务器的所有剩余事务。
对于每个副本,将其从拓扑中移除,等待它应用所有中继日志,按照单服务器降级的说明进行降级,然后将其重新插入拓扑。如果有多个副本层级(副本的副本),则从最靠近源服务器的副本开始自上而下地降级。