MySQL 8.0 参考手册  / 第十七章复制  / 17.5 复制注意事项和技巧  /  17.5.2 MySQL 版本之间的复制兼容性

17.5.2 MySQL 版本之间的复制兼容性

MySQL 支持从一个版本系列复制到下一个更高版本系列。例如,您可以从运行 MySQL 5.6 的源复制到运行 MySQL 5.7 的副本,从运行 MySQL 5.7 的源复制到运行 MySQL 8.0 的副本,等等。但是,如果源使用语句或依赖于副本上使用的 MySQL 版本不再支持的行为,则在从较旧的源复制到较新的副本时可能会遇到困难。例如,MySQL 8.0 不再支持超过 64 个字符的外键名称。

在涉及多个源的复制设置中,不支持使用两个以上的 MySQL 服务器版本,无论源或副本 MySQL 服务器的数量如何。此限制不仅适用于发布系列,还适用于同一发布系列中的版本号。例如,如果您使用链式或循环复制设置,则不能同时使用 MySQL 8.0.22、MySQL 8.0.24 和 MySQL 8.0.28,尽管您可以同时使用这些版本中的任何两个。

重要的

强烈建议使用给定 MySQL 版本系列中可用的最新版本,因为复制(和其他)功能正在不断改进。当 GA(生产)版本可用于该版本系列时,还建议将使用早期版本的 MySQL 的源和副本升级到 GA(生产)版本。

从 MySQL 8.0.14 开始,服务器版本记录在每个事务的二进制日志中,用于最初提交事务的服务器(original_server_version),以及作为复制拓扑中当前服务器的直接源的服务器(immediate_server_version)。

从较新的源复制到较旧的副本可能是可能的,但通常不支持。这是由于多种因素造成的:

  • 二进制日志格式更改。  二进制日志格式可以在主要版本之间更改。虽然我们试图保持向后兼容性,但这并不总是可能的。源可能还启用了旧副本无法理解的可选功能,例如二进制日志事务压缩,在 MySQL 8.0.20 之前的版本中,副本无法读取生成的压缩事务​​有效负载。

    这对升级复制服务器也有重要意义;有关详细信息,请参阅 第 17.5.3 节,“升级复制拓扑”

  • 有关基于行的复制的更多信息,请参阅 第 17.2.1 节,“复制格式”

  • SQL 不兼容。  如果要复制的语句使用源上可用但副本上不可用的 SQL 功能,则无法使用基于语句的复制从较新的源复制到较旧的副本。

    但是,如果源和副本都支持基于行的复制,并且没有要复制的数据定义语句依赖于在源上找到但在副本上没有的 SQL 功能,则可以使用基于行的复制来复制即使副本不支持在源上运行的 DDL,数据修改语句的影响也是如此。

在 MySQL 8.0.26 中,对复制工具名称进行了不兼容的更改,包括线程阶段的名称,其中包含术语master更改为 sourceslave更改为 replica,以及mts(代表 多线程从机”),改为 mta(代表多线程应用程序”)). 使用这些工具名称的监视工具可能会受到影响。如果不兼容的更改对您有影响,请将terminology_use_previous 系统变量设置为BEFORE_8_0_26以使 MySQL 服务器使用先前列表中指定的对象的旧版本名称。这使得依赖旧名称的监视工具能够继续工作,直到它们可以更新为使用新名称。

有关潜在复制问题的更多信息,请参阅 第 17.5.1 节,“复制功能和问题”