本节介绍如何在 Unix/Linux 上降级 MySQL 二进制和基于包的安装。描述了就地和逻辑降级方法。
就地降级涉及关闭新的 MySQL 版本,用旧的替换新的 MySQL 二进制文件或包,并在现有数据目录上重新启动旧的 MySQL 版本。
同一版本系列中的 GA 版本之间的降级支持就地降级。
MySQL APT、SLES 和 Yum 存储库安装不支持就地降级。
要执行就地降级:
查看 第 2.12.1 节“开始之前”中的信息。
如果将 XA 事务与 一起使用
InnoDB
,请在降级之前运行XA RECOVER
以检查未提交的 XA 事务。如果返回结果,则通过发出XA COMMIT
orXA ROLLBACK
语句提交或回滚 XA 事务。如果您使用
InnoDB
,请将 MySQL 配置为执行缓慢关闭,方法是设置innodb_fast_shutdown
为0
。例如:mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
通过缓慢关闭,
InnoDB
在关闭之前执行完全清除和更改缓冲区合并,这确保在版本之间文件格式不同的情况下数据文件已完全准备好。关闭较新的 MySQL 服务器。例如:
mysqladmin -u root -p shutdown
缓慢关闭后,从目录中删除
InnoDB
重做日志文件(theib_logfile*
files),data
以避免与版本之间可能发生的重做日志文件格式更改相关的降级问题。rm ib_logfile*
通过将较新的二进制文件或包替换为较旧的二进制文件或包,就地降级 MySQL 二进制文件或包。
使用现有的数据目录启动旧的(降级的)MySQL 服务器。例如:
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
运行mysql_upgrade。例如:
mysql_upgrade -u root -p
关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
逻辑降级涉及使用mysqldump转储新 MySQL 版本中的所有表,然后将转储文件加载到旧 MySQL 版本中。
逻辑降级支持在同一版本系列中的版本之间降级以及降级到以前的版本级别。仅支持一般可用性 (GA) 版本之间的降级。在继续之前,请查看第 2.12.1 节“开始之前”。
对于 MySQL APT、SLES 和 Yum 存储库安装,仅支持降级到以前的版本级别。在指令要求初始化旧实例的地方,使用包管理实用程序删除 MySQL 5.6 包并安装 MySQL 5.5 包。
要执行逻辑降级:
查看 第 2.12.1 节“开始之前”中的信息。
转储所有数据库。例如:
mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > data-for-downgrade.sql
关闭较新的 MySQL 服务器。例如:
mysqladmin -u root -p shutdown
使用新的数据目录初始化旧的 MySQL 实例。例如:
scripts/mysql_install_db --user=mysql
使用新的数据目录启动旧的 MySQL 服务器。例如:
mysqld_safe --user=mysql --datadir=/path/to/new-datadir
将转储文件加载到旧的 MySQL 服务器中。例如:
mysql -u root -p --force < data-for-upgrade.sql
运行mysql_upgrade。例如:
mysql_upgrade -u root -p
关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/new-datadir