2.5.2 使用 MySQL Yum 存储库替换 MySQL 的第三方分发

对于受支持的基于 Yum 的平台(有关列 table,请参见第 2.5.1 节“使用 MySQL Yum 存储库在 Linux 上安装 MySQL”),可以使用 MySQL Yum 存储库中的最新 GA 版本(当前为 MySQL 5.7 系列)替换 MySQL 的第三方发行版。根据您的 MySQL 第三方发行版的安装方式,可以执行以下不同步骤:

替换 MySQL 的本地第三方分发

如果您从本地软件存储库(即您自己的 Linux 发行版提供的软件存储库)安装了 MySQL 的第三方发行版,请按照以下步骤操作:

备份数据库

为了避免数据丢失,请始终备份数据库,然后再尝试使用 MySQL Yum 存储库替换 MySQL 安装。有关如何备份数据库的信息,请参见第 7 章,备份和恢复

添加 MySQL Yum 存储库

按照添加 MySQL Yum 存储库中给出的说明,将 MySQL Yum 存储库添加到系统的存储库列 table 中。

通过 Yum 更新或 DNF 升级替换本地第三方分发

根据设计,当您在系统上执行 yum update 命令时,MySQL Yum 存储库将使用 MySQL Yum 存储库中的最新 GA 版本(当前为 MySQL 5.7 系列)替换您的本地第三方 MySQL,或者 yum 更新 mysql-server

使用 Yum 存储库更新 MySQL 之后,使用较旧版本的共享 Client 端库编译的应用程序应 continue 运行。但是,如果要重新编译应用程序并将其动态链接到更新的库,请参见升级共享 Client 端库,以获取一些特殊注意事项。

替换 MySQL 的 nonlocal 第三方分发

如果您从 nonlocal 软件存储库(即您自己的 Linux 发行版未提供的软件存储库)安装了 MySQL 的第三方发行版,请按照以下步骤操作:

备份数据库

为了避免数据丢失,请始终备份数据库,然后再尝试使用 MySQL Yum 存储库替换 MySQL 安装。有关如何备份数据库的信息,请参见第 7 章,备份和恢复

阻止 Yum 从第三方 nonlocal 存储库接收 MySQL 软件包

在使用 MySQL Yum 存储库安装 MySQL 之前,必须停止系统从任何第三方 nonlocalYum 存储库接收 MySQL 软件包。

例如,如果您使用自己的软件存储库安装了 MariaDB,请使用以下命令获取已安装的 MariaDB 软件包的列 table:

shell> yum list installed mariadb\*
MariaDB-common.i686                      10.0.4-1                       @mariadb
MariaDB-compat.i686                      10.0.4-1                       @mariadb
MariaDB-server.i686                      10.0.4-1                       @mariadb

从命令输出中,我们可以确定已安装的软件包(MariaDB-commonMariaDB-compatMariaDB-server)及其来源(名为mariadb的 nonlocal 软件存储库)。

再举一个例子,如果您使用自己的软件存储库安装了 Percona,请使用以下命令获取已安装的 Percona 软件包的列 table:

shell> yum list installed Percona\*
Percona-Server-client-55.i686     5.5.39-rel36.0.el6          @percona-release-i386
Percona-Server-server-55.i686     5.5.39-rel36.0.el6          @percona-release-i386
Percona-Server-shared-55.i686     5.5.39-rel36.0.el6          @percona-release-i386
percona-release.noarch            0.1-3                       @/percona-release-0.1-3.noarch

从命令输出中,我们可以确定已安装的软件包(Percona-Server-clientPercona-Server-serverPercona-Server-sharedpercona-release.noarch)及其来源(名为percona-release的 nonlocal 软件存储库)。

如果不确定安装了哪个第三方 MySQL 分支,此命令应将其显示出来并列出为其安装的 RPM 软件包以及提供软件包的第三方存储库:

shell> yum --disablerepo=\* provides mysql\*

下一步是阻止 Yum 从 nonlocal 存储库接收软件包。如果您的平台支持 yum-config-manager Util,则可以使用此命令来停止从 MariaDB 传递:

shell> sudo yum-config-manager --disable mariadb

使用此命令停止从 Percona 交货:

shell> sudo yum-config-manager --disable percona-release

您可以通过删除/etc/yum.repos.d/目录下存储库文件之一中存在的软件存储库的条目来执行相同的任务。该条目通常是如何查找 MariaDB 的:

[mariadb] name = MariaDB
 baseurl = [base URL for repository]
 gpgkey = [URL for GPG key]
 gpgcheck =1

该条目通常在 MariaDB 的文件/etc/yum.repos.d/MariaDB.repo中找到-删除文件或从中删除条目(或从找到条目的文件中删除条目)。

Note

如果要删除发行包(对于 Percona 为percona-release.noarch),则此步骤对于配置了 Yum 存储库发行包(如 Percona)的安装来说不是必需的,如以下步骤 3 中针对 Percona 的卸载命令所示。

卸载 MySQL 的 nonlocal 第三方 MySQL 发行版

必须先卸载 nonlocal 第三方 MySQL 发行版,然后才能使用 MySQL Yum 存储库安装 MySQL。对于以上步骤 2 中找到的 MariaDB 软件包,请使用以下命令将其卸载:

shell> sudo yum remove MariaDB-common MariaDB-compat MariaDB-server

对于 Percona 软件包,我们在上面的步骤 2 中找到了:

shell> sudo yum remove Percona-Server-client-55 Percona-Server-server-55 \
  Percona-Server-shared-55.i686 percona-release

使用 MySQL Yum 存储库安装 MySQL

然后,按照第 2.5.1 节“使用 MySQL Yum 存储库在 Linux 上安装 MySQL”中给出的说明,将 MySQL 与 MySQL Yum 存储库一起安装。

Important

如果您选择用 MySQL Yum 存储库中的更新版本的 MySQL 替换第三方 MySQL 发行版,请记住在服务器启动后运行mysql_upgrade,以检查并可能解决旧数据与升级软件之间的任何不兼容问题。 mysql_upgrade还执行其他功能;有关详情,请参见第 4.4.7 节“ mysql_upgrade-检查和升级 MySQLtable”

*对于基于 EL7 的平台:*请参见基于 EL7 的平台的兼容性信息