19.5.2 MySQL 版本之间的复制兼容性
MySQL 支持从较旧的源到较新的副本的复制,在支持从源版本升级到副本版本的情况下,如第 1.3 节,“MySQL 版本:innovation 和 LTS”和第 3.2 节,“升级路径”中描述的升级路径。然而,您可能会遇到复制从较旧的源到较新的副本时遇到的困难,如果源使用的语句或依赖于不再在副本版本中支持的行为。
使用多个 MySQL 服务器版本的复制设置中,不支持使用超过两个版本的 MySQL 服务器版本,例如,如果您使用的是链式或环形复制设置,您不能同时使用 MySQL X.Y.1、MySQL X.Y.2 和 MySQL X.Y.3,但是您可以使用这两个版本中的任何两个。
强烈建议使用每个 MySQL 发布系列中的最新版本,因为复制(和其他)功能不断被改进。同时,建议将使用早期发布的 MySQL 发布系列的源和副本升级到 GA(生产)版本,当这些版本在该系列中可用时。
服务器版本在每个事务中记录在二进制日志中,记录的是原始提交事务的服务器(original_server_version
),和当前服务器在复制拓扑结构中的直接源服务器(immediate_server_version
)。
从新版本的源到较旧的副本的复制可能是可能的,但通常不受支持。这是由于多种因素:
-
二进制日志格式变化。 二进制日志格式可以在主要版本之间发生变化。虽然我们尝试保持向后兼容性,但这不总是可能的。源可能也会启用可选的功能,例如二进制日志事务压缩,这些压缩的事务负载不能被之前的副本从 MySQL 8.0.20 之前的版本读取。
这也对升级复制服务器有重要的影响;请参阅第 19.5.3 节,“升级或降级复制拓扑结构”,了解更多信息。
-
SQL 不兼容性。 您不能使用语句级别的复制从新版本的源到较旧的副本,如果要复制的语句使用了源端支持的 SQL 功能,但在副本端不支持。
然而,如果源和副本都支持行级别的复制,并且没有依赖于 SQL 功能的数据定义语句,您可以使用行级别复制来复制数据修改语句的效果,即使在源端运行的 DDL 语句在副本端不支持。
关于行级别复制的更多信息,请参阅第 19.2.1 节,“复制格式”。
关于潜在的复制问题了解更多信息,请见第19.5.1节,“复制特性和问题”。