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

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

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

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

重要的

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

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

  • 二进制日志格式更改。  二进制日志格式可以在主要版本之间更改。虽然我们试图保持向后兼容性,但这并不总是可能的。例如,MySQL 5.0 中实现的二进制日志格式与以前版本中使用的格式有很大的不同,特别是在字符集、LOAD DATA时区和时区的处理方面。这意味着通常不支持从 MySQL 5.0(或更高版本)源复制到 MySQL 4.1(或更早版本)副本。

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

  • 使用基于行的复制。  基于行的复制是在 MySQL 5.1.5 中实现的,因此您不能使用基于行的复制从任何 MySQL 5.6 或更高版本的源复制到早于 MySQL 5.1.5 的副本。

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

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

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

  • MySQL 5.6 中的重要变量。  特性已添加到 MySQL 5.6,在复制到早期 MySQL 版本时需要禁用这些特性。为避免不兼容,请在 MySQL 5.6 源上设置以下变量:

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