MySQL 支持从一个版本系列到下一个版本系列的复制。例如,您可以从运行 MySQL 8.1 的源服务器复制到运行 MySQL 8.2 的副本服务器,从运行 MySQL 8.2 的源服务器复制到运行 MySQL 8.3 的副本服务器,以此类推。然而,如果源服务器使用不再在副本服务器上支持的语句或依赖于行为,您可能会遇到困难。例如,MySQL 8.3 不支持超过 64 个字符的外键名称。
在涉及多个源服务器的复制设置中,不支持使用超过两个 MySQL 服务器版本,无论是同一个版本系列还是不同版本系列中的版本号。
强烈建议使用给定 MySQL 版本系列中最新的版本,因为复制(和其他)功能不断改进。此外,当 GA(生产)版本发布时,也建议升级使用早期版本的源服务器和副本服务器。
服务器版本记录在二进制日志中,每个事务的原始提交服务器(original_server_version
),以及当前服务器在复制拓扑结构中的直接源服务器(immediate_server_version
).
从新源服务器到旧副本服务器的复制可能是可能的,但通常不支持。这是由于多种因素:
-
二进制日志格式更改。 主要版本之间的二进制日志格式可能会更改。虽然我们尝试维护向后兼容性,但这并不总是可能的。源服务器也可能启用了旧副本服务器不理解的可选功能,例如二进制日志事务压缩,其中压缩的事务负载无法被早期版本的副本服务器读取,例如 MySQL 8.0.20 之前的版本。
这也对升级复制服务器有重要的影响;请参阅 第 19.5.3 节,“升级复制拓扑结构”,以获取更多信息。
-
有关基于行的复制的更多信息,请参阅 第 19.2.1 节,“复制格式”。
-
SQL 不兼容性。 如果要复制的语句使用了源服务器上的 SQL 功能,而这些功能在副本服务器上不可用,那么您无法使用基于语句的复制从新源服务器复制到旧副本服务器。
然而,如果源服务器和副本服务器都支持基于行的复制,并且没有依赖于源服务器上的 SQL 功能的数据定义语句,那么您可以使用基于行的复制来复制数据修改语句的效果,即使副本服务器不支持这些语句。
有关可能的复制问题,请参阅 第 19.5.1 节,“复制功能和问题”。