本节介绍如何在 Unix/Linux 上降级 MySQL 二进制和基于包的安装。描述了就地和逻辑降级方法。
就地降级涉及关闭新的 MySQL 版本,用旧的替换新的 MySQL 二进制文件或包,并在现有数据目录上重新启动旧的 MySQL 版本。
同一版本系列中的 GA 版本之间的降级支持就地降级。
MySQL APT、SLES 和 Yum 存储库安装不支持就地降级。
对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括用于管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上, 未安装mysqld_safe 。在这种情况下,请使用 systemd 来启动和关闭服务器,而不是以下说明中使用的方法。请参阅 第 2.5.10 节,“使用 systemd 管理 MySQL 服务器”。
要执行就地降级:
查看 第 2.12.1 节“开始之前”中的信息。
如果将 XA 事务与 一起使用
InnoDB
,请在降级之前运行XA RECOVER
以检查未提交的 XA 事务。如果返回结果,则通过发出XA COMMIT
orXA ROLLBACK
语句提交或回滚 XA 事务。将 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_upgrade检查所有数据库中的所有表是否与当前版本的 MySQL 不兼容,并在发现问题时尝试修复这些表。
关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
逻辑降级涉及使用mysqldump转储新 MySQL 版本中的所有表,然后将转储文件加载到旧 MySQL 版本中。
逻辑降级支持在同一版本系列中的版本之间降级以及降级到以前的版本级别。仅支持一般可用性 (GA) 版本之间的降级。在继续之前,请查看第 2.12.1 节“开始之前”。
对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括用于管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上, 未安装mysqld_safe 。在这种情况下,请使用 systemd 来启动和关闭服务器,而不是以下说明中使用的方法。请参阅 第 2.5.10 节,“使用 systemd 管理 MySQL 服务器”。
对于 MySQL APT、SLES 和 Yum 存储库安装,仅支持降级到以前的版本级别。在指令要求初始化旧实例的地方,使用包管理实用程序删除 MySQL 5.7 包并安装 MySQL 5.6 包。
要执行逻辑降级:
查看 第 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 5.7 实例,请使用 带有 or 选项 的mysqld 。
--initialize
--initialize-insecure
mysqld --initialize --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_upgrade检查所有数据库中的所有表是否与当前版本的 MySQL 不兼容,并在发现问题时尝试修复这些表。
关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:
mysqladmin -u root -p shutdown mysqld_safe --user=mysql --datadir=/path/to/new-datadir