在从 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。
数据类型
对于
TIME
、DATETIME
和TIMESTAMP
列,MySQL 5.6.4 之前创建的表所需的存储与 5.6.4 及更高版本中创建的表所需的存储不同。这是由于 5.6.4 中的更改允许这些时间类型具有小数部分。要降级到 5.6.4 之前的版本,请在降级前使用 mysqldump转储受影响的表,并在降级后重新加载表。以下查询标识可能受此问题影响的表和列。其中一些是
mysql
数据库中的系统表(例如columns_priv
和proxies_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
InnoDB
MySQL 5.6.4 中引入的搜索索引(类型为FULLTEXT
)与早期版本的 MySQL 不兼容,包括 5.6 系列中的早期版本。在执行降级之前删除此类索引。InnoDB
FULLTEXT
可以使用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;
InnoDB
MySQL 5.6.4 中引入的配置选项指定的小页面大小innodb_page_size
与早期版本的 MySQL 不兼容,包括 5.6 系列中的早期版本。转储InnoDB
使用较小InnoDB
页面大小的实例中的所有表,删除表,并在降级后重新创建和重新加载它们。使用 MySQL 5.6.6 中引入的持久统计表选项( 、 和 )创建的表
STATS_PERSISTENT
与STATS_AUTO_RECALC
早期STATS_SAMPLE_PAGES
版本不兼容(错误 #70778)。在降级之前从表定义中删除选项。有关这些选项的信息,请参阅 第 14.8.11.1 节,“配置持久优化器统计参数”。MySQL 5.6 中增加了
innodb_log_file_size
默认值和最大值。降级前,请确保配置的日志文件大小与之前的版本兼容。InnoDB
在 MySQL 5.6.3 中,对于使用ROW_FORMAT=DYNAMIC
or 的表 ,索引前缀键的长度限制从 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 事务”)。