MySQL 支持从较旧的源复制到较新的副本,对于我们支持从源版本升级到副本版本的版本组合,如 第 1.3 节,“MySQL 版本:创新和 LTS” 和 第 3.2 节,“升级路径” 中所述。但是,如果源使用在副本上使用的 MySQL 版本中不再支持的语句或依赖于不再支持的行为,则在从较旧的源复制到较新的副本时可能会遇到困难。
在涉及多个源的复制设置中,不支持使用多个 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 节,“复制功能和问题”。