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 存储库安装不支持就地降级。

笔记

对于某些 Linux 平台,从 RPM 或 Debian 软件包安装 MySQL 包括用于管理 MySQL 服务器启动和关闭的 systemd 支持。在这些平台上, 未安装mysqld_safe 。在这种情况下,请使用 systemd 来启动和关闭服务器,而不是以下说明中使用的方法。请参阅 第 2.5.10 节,“使用 systemd 管理 MySQL 服务器”

要执行就地降级:

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

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

  3. 将 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

    mysql_upgrade检查所有数据库中的所有表是否与当前版本的 MySQL 不兼容,并在发现问题时尝试修复这些表。

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

要执行逻辑降级:

  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 5.7 实例,请使用 带有 or 选项 的mysqld 。--initialize--initialize-insecure

    mysqld --initialize --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

    mysql_upgrade检查所有数据库中的所有表是否与当前版本的 MySQL 不兼容,并在发现问题时尝试修复这些表。

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

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