Documentation Home

2.12.3 降级说明

在从 MySQL 5.6 降级之前,请查看本节中的信息。某些项目可能需要在降级前采取措施。

系统表

  • MySQL 5.6 中的mysql.user系统表有一password_expired列。MySQL 5.5 中的 mysql.user表没有。这意味着在MySQL 5.6 中密码过期的帐户在MySQL 5.5 中可以正常使用。

  • mysql.host表在 MySQL 5.6.7 中被删除。mysql.host降级到以前的版本时,如果表不存在,降级后的服务器上的启动将失败并出现错误 。您可以手动重新创建表或从升级到 MySQL 5.6.7 或更高版本之前的备份中恢复它。要手动重新创建表,请使用从 MySQL 5.6.7 之前的实例检索表定义SHOW CREATE TABLE,或参见 Bug #73634。

数据类型

  • 对于TIMEDATETIMETIMESTAMP列,MySQL 5.6.4 之前创建的表所需的存储与 5.6.4 及更高版本中创建的表所需的存储不同。这是由于 5.6.4 中的更改允许这些时间类型具有小数部分。要降级到 5.6.4 之前的版本,请在降级前使用 mysqldump转储受影响的表,并在降级后重新加载表。

    以下查询标识可能受此问题影响的表和列。其中一些是mysql数据库中的系统表(例如 columns_privproxies_priv)。这意味着这 mysql是您必须转储和重新加载的数据库之一,否则服务器启动可能会在降级后失败。

    SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE DATA_TYPE IN ('TIME','DATETIME','TIMESTAMP')
    ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;

InnoDB

  • InnoDBMySQL 5.6.4 中引入的搜索索引(类型为 FULLTEXT)与早期版本的 MySQL 不兼容,包括 5.6 系列中的早期版本。在执行降级之前删除此类索引。

    InnoDBFULLTEXT可以使用 INFORMATION_SCHEMA查询来识别带有索引的表 。例如:

    SELECT a.NAME AS Table_name, b.NAME AS Index_name
      FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES a,
           INFORMATION_SCHEMA.INNODB_SYS_INDEXES b
      WHERE a.TABLE_ID = b.TABLE_ID
            AND b.TYPE = 32;
  • InnoDBMySQL 5.6.4 中引入的配置选项指定的小页面大小 innodb_page_size 与早期版本的 MySQL 不兼容,包括 5.6 系列中的早期版本。转储InnoDB 使用较小 InnoDB页面大小的实例中的所有表,删除表,并在降级后重新创建和重新加载它们。

  • 使用 MySQL 5.6.6 中引入的持久统计表选项( 、 和 )创建的表STATS_PERSISTENTSTATS_AUTO_RECALC早期 STATS_SAMPLE_PAGES版本不兼容(错误 #70778)。在降级之前从表定义中删除选项。有关这些选项的信息,请参阅 第 14.8.11.1 节,“配置持久优化器统计参数”

  • MySQL 5.6 中增加了innodb_log_file_size 默认值和最大值。降级前,请确保配置的日志文件大小与之前的版本兼容。

  • InnoDB在 MySQL 5.6.3 中,对于使用 ROW_FORMAT=DYNAMICor 的表 ,索引前缀键的长度限制从 767 字节增加到 3072 字节 ROW_FORMAT=COMPRESSED。有关详细信息,请参阅 第 14.22 节,“InnoDB 限制”。此更改也反向移植到 MySQL 5.5.14。如果您从这些版本之一或更高版本降级到长度限制较低的早期版本,索引前缀键可能会被截断为 767 字节,或者降级可能会失败。innodb_large_prefix只有在正在降级的服务器上启用 了配置选项,才会出现此问题 。

复制

  • 从 MySQL 5.6 开始,该relay-log.info文件包含行数和复制延迟值,因此文件格式与旧版本不同。请参阅 第 17.2.2.2 节,“复制元数据存储库”。如果将副本服务器降级到早于 MySQL 5.6 的版本,则旧服务器无法正确读取文件。要解决此问题,请在文本编辑器中修改文件以删除包含行数的初始行。

  • 从 MySQL 5.6.6 开始,MySQL 服务器在写入二进制日志时使用版本 2 二进制日志事件。使用版本 2 日志事件写入的二进制日志不能被早期版本的 MySQL 服务器读取。要生成使用旧服务器可读的版本 1 日志事件写入的二进制日志,请使用 启动 MySQL 5.6.6 或更高版本 --log-bin-use-v1-row-events=1的服务器,这会强制服务器在写入二进制日志时使用版本 1 事件。

  • MySQL 5.6.5 版本为 MySQL 复制引入了全局事务标识符(GTID)。如果您在 MySQL 5.6 中启用了 GTID,并且想要降级到不支持 GTID 的 MySQL 版本,则必须在降级之前禁用 GTID(请参阅 第 17.1.3.5 节,“禁用 GTID 事务”)。