Documentation Home
MySQL 8.0 参考手册  / 第 2 章安装和升级 MySQL  / 2.12 降级MySQL  /  2.12.4 在 Unix/Linux 上降级二进制和基于包的安装

2.12.4 在 Unix/Linux 上降级二进制和基于包的安装

本节介绍如何在 Unix/Linux 上降级 MySQL 二进制和基于包的安装。描述了就地和逻辑降级方法。

就地降级

就地降级涉及关闭新的 MySQL 版本,用旧的替换新的 MySQL 二进制文件或包,并在现有数据目录上重新启动旧的 MySQL 版本。

同一版本系列中的 GA 版本之间的降级支持就地降级。

MySQL APT、SLES 和 Yum 存储库安装不支持就地降级。

要执行就地降级:

  1. 查看 第 2.12.1 节“开始之前”中的信息。

  2. 如果将 XA 事务与 一起使用InnoDB,请在降级之前运行XA RECOVER以检查未提交的 XA 事务。如果返回结果,则通过发出 XA COMMITor XA ROLLBACK语句提交或回滚 XA 事务。

  3. 如果您使用InnoDB,请将 MySQL 配置为执行缓慢关闭,方法是设置 innodb_fast_shutdown0。例如:

    mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"

    通过缓慢关闭,InnoDB在关闭之前执行完全清除和更改缓冲区合并,这确保在版本之间文件格式不同的情况下数据文件已完全准备好。

  4. 关闭较新的 MySQL 服务器。例如:

    mysqladmin -u root -p shutdown
  5. 缓慢关闭后,从目录中删除 InnoDB重做日志文件(the ib_logfile*files), data以避免与版本之间可能发生的重做日志文件格式更改相关的降级问题。

    rm ib_logfile*
  6. 通过将较新的二进制文件或包替换为较旧的二进制文件或包,就地降级 MySQL 二进制文件或包。

  7. 使用现有的数据目录启动旧的(降级的)MySQL 服务器。例如:

    mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
  8. 运行mysql_upgrade。例如:

    mysql_upgrade -u root -p
  9. 关闭并重新启动 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 包。

要执行逻辑降级:

  1. 查看 第 2.12.1 节“开始之前”中的信息。

  2. 转储所有数据库。例如:

    mysqldump -u root -p
      --add-drop-table --routines --events
      --all-databases --force > data-for-downgrade.sql
  3. 关闭较新的 MySQL 服务器。例如:

    mysqladmin -u root -p shutdown
  4. 使用新的数据目录初始化旧的 MySQL 实例。例如:

    scripts/mysql_install_db --user=mysql
  5. 使用新的数据目录启动旧的 MySQL 服务器。例如:

    mysqld_safe --user=mysql --datadir=/path/to/new-datadir
  6. 将转储文件加载到旧的 MySQL 服务器中。例如:

    mysql -u root -p --force < data-for-upgrade.sql
  7. 运行mysql_upgrade。例如:

    mysql_upgrade -u root -p
  8. 关闭并重新启动 MySQL 服务器以确保对系统表所做的任何更改生效。例如:

    mysqladmin -u root -p shutdown
    mysqld_safe --user=mysql --datadir=/path/to/new-datadir