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(生产)版本,当 GA 版本适用于该发行版系列时。
服务器版本记录在二进制日志中,用于最初提交事务的服务器 (original_server_version
),以及用于复制拓扑中当前服务器的直接源服务器 (immediate_server_version
)。
从较新的源到较旧的副本的复制可能是可能的,但通常不支持。这是由于以下几个因素:
二进制日志格式更改。 二进制日志格式可能会在主要版本之间发生变化。虽然我们尝试保持向后兼容性,但这并不总是可行。源也可能启用了可选功能,这些功能不被较旧的副本理解,例如二进制日志事务压缩,其中生成的压缩事务有效负载无法被早期版本的 MySQL 8.0.20 的副本读取。
这也对升级复制服务器有重大影响;有关更多信息,请参阅 第 19.5.3 节,“升级或降级复制拓扑”。
SQL 不兼容性。 您不能使用基于语句的复制从较新的源复制到较旧的副本,如果要复制的语句使用源上可用但在副本上不可用的 SQL 功能。
但是,如果源和副本都支持基于行的复制,并且没有要复制的数据定义语句依赖于源上存在但在副本上不存在的 SQL 功能,则即使源上运行的 DDL 不受副本支持,您也可以使用基于行的复制来复制数据修改语句的效果。
有关基于行的复制的更多信息,请参阅 第 19.2.1 节,“复制格式”。
有关潜在复制问题的更多信息,请参阅 第 19.5.1 节,“复制功能和问题”。