License: Attribution-NonCommercial-ShareAlike 4.0 International
本文出自 Suzf Blog。 如未注明,均为 SUZF.NET 原创。
就地升级是使用服务器中的现有数据来完成。 一般来说,就是停止服务器,安装新的服务器版本并使用之前的数据文件启动它。 虽然它可能不适合于高复杂性的环境,但它们可能适用于许多场景。 以下是5.7系列中相关的改变的总结。 强烈建议您阅读以下指南,因为它们包含可能导致自动升级失败的不兼容更改的信息:
注意 在一个崩溃的实例上从5.6升级到5.7是不推荐的。如果这个服务器上的实例已经崩溃了,应该在进行升级前将崩溃的实例恢复。 同时在版本升级完成之后,一定要记得执行 mysql_upgrade 并重新启动服务,否则 Mysql user 表可能会出现兼容问题。因为Mysql 5.7 的表结构做了细微更改。
使用 Percona 的仓库进行升级
如果可能最简单和推荐的方法是使用Percona的仓库。 在系统中启用仓库的说明可以从下面的找到:
基于DEB的发行版本
注意
接下来执行命令需要切换到 root 用户或者是使用 sudo
待完全备份(或是 对数据进行转储)完成之后,停止服务进程:
service mysql stop
之后继续修改你所需要的在配置文件中,正如文章开头所述的那样。
注意 如果你运行的是 Debian / Ubuntu系统,systemd作为默认系统的服务管理器,你可以使用systemctl 代替 service 来调用上面的命令。 目前都是支持的。
接着安装新的服务:
$ apt-get install percona-server-server-5.7
如果您正在使用的是 Percona Server 5.6 与 TokuDB,您还需要指定 TokuDB 包:
$ apt-get install percona-server-server-5.7 percona-server-tokudb-5.7
安装脚本不会像以前的版本一样自动运行 mysql_upgrade。 您需要手动运行该命令,并在完成 更新后重新启动服务。
$ mysql_upgrade Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK mysql.engine_cost OK ... Upgrade process completed successfully. Checking if update is needed. $ service mysql restart
注意:从MySQL 5.6 或 5.7 升级到 Percona Server 5.7 时,此过程是相同的。
基于RPM的发行版本
注意
接下来执行命令需要切换到 root 用户或者是使用 sudo
待完全备份(或是 对数据进行转储)完成之后,停止服务进程:
service mysql stop
注意 如果你运行的是 RHEL / CentOS系统,systemd作为默认系统的服务管理器,你可以使用systemctl 代替 service 来调用上面的命令。 目前都是支持的。
检测你所安装的软件包:
$ rpm -qa | grep Percona-Server Percona-Server-shared-56-5.6.28-rel76.1.el7.x86_64 Percona-Server-server-56-5.6.28-rel76.1.el7.x86_64 Percona-Server-devel-56-5.6.28-rel76.1.el7.x86_64 Percona-Server-client-56-5.6.28-rel76.1.el7.x86_64 Percona-Server-test-56-5.6.28-rel76.1.el7.x86_64 Percona-Server-56-debuginfo-5.6.28-rel76.1.el7.x86_64
检查之后,接着忽略依赖关系移除它们:
$ rpm -qa | grep Percona-Server | xargs rpm -e --nodeps
这是很重要的删除它的时候忽略依赖关系,因为许多软件包可能依赖这些(因为它们取代mysql),如果省略,将被删除。 注意:从MySQL 5.6 或 5.7 升级到 Percona Server 5.7 时,此过程是相同的。只需要将 Percona-Server 使用 `grep '^mysql-'` 替代 并移除它们。 你将需要安装下面的软件包:
- Percona-Server-server-57
$ yum install Percona-Server-server-57
如果您正在使用的是 Percona Server 5.6 与 TokuDB,您还需要指定 TokuDB 包:
$ yum install Percona-Server-server-57 Percona-Server-tokudb-57
安装后,继续修改配置文件 my.cnf,并在必要时重新安装插件。
注意 如果您使用的是TokuDB存储引擎,您需要在启动服务器之前注释掉配置文件中的所有TokuDB 特定的变量,否则服务器将无法启动。 RHEL / CentOS 7自动将以前的配置文件备份到/etc/my.cnf.rpmsave并安装默认的my.cnf。 在升级/安装过程完成后,您可以移动旧的配置文件(在删除所有不支持的系统变量后)。
现在你可以启动 mysql 服务了:
$ service mysql start
并使用 `mysql_upgrade` 迁移到新的授权表,如果需要的话,它将重建索引并进行所需的修改:
注意 如果你正在使用 TokuDB 存储引擎,你将需要运行下面的命令重新启用存储引擎插件 ps_tokudb_admin --enable # 需要在执行 mysql_upgrade 之前进行,否则你将会得到错误
$ mysql_upgrade Checking if update is needed. Checking server version. Running queries to upgrade MySQL server. Checking system database. mysql.columns_priv OK mysql.db OK ... pgrade process completed successfully. Checking if update is needed.
待更新完毕,向往常一样重启服务:
$ service mysql restart
服务成功重新启动后,您就可以使用新的Percona Server 5.7。
使用独立软件包升级
基于DEB的发行版本
待完全备份(或是 对数据进行转储)完成之后,停止服务进程:
service mysql stop
移除所安装的软件包含它们的依赖包:
$ sudo apt-get autoremove percona-server-server-56 percona-server-client-56
软件删除之后继续修改你所需要的在配置文件中,正如文章开头所述的那样。 接着, 根据你的系统 结构[x86, x86_64]下载下面的安装包:
- percona-server-server-5.7
- percona-server-client-5.7
- percona-server-common-5.7
- libperconaserverclient20
以下示例将为Debian 8.0下载Percona Server 5.7.10-3发行版软件包:
$ wget https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.10-3/binary/debian/jessie/x86_64/Percona-Server-5.7.10-3-r63dafaf-jessie-x86_64-bundle.tar
解压缩包之后,您应该看到以下包:
$ ls *.deb libperconaserverclient20-dev_5.7.10-3-1.jessie_amd64.deb libperconaserverclient20_5.7.10-3-1.jessie_amd64.deb percona-server-5.7-dbg_5.7.10-3-1.jessie_amd64.deb percona-server-client-5.7_5.7.10-3-1.jessie_amd64.deb percona-server-common-5.7_5.7.10-3-1.jessie_amd64.deb percona-server-server-5.7_5.7.10-3-1.jessie_amd64.deb percona-server-source-5.7_5.7.10-3-1.jessie_amd64.deb percona-server-test-5.7_5.7.10-3-1.jessie_amd64.deb percona-server-tokudb-5.7_5.7.10-3-1.jessie_amd64.deb
现在你通过下面命令可以安装 Percona Server:
$ sudo dpkg -i *.deb
这将安装软件包中的所有软件包。 另一个选项是仅下载/指定运行Percona Server安装所需的软件包(libperconaserverclient20_5.7.10-3-1.jessie_amd64.deb,percona-server-client-5.7_5.7.10-3-1.jessie_amd64.deb,percona -server-common-5.7_5.7.10-3-1.jessie_amd64.deb和percona-server-server-5.7_5.7.10-3-1.jessie_amd64.deb。如果你想要TokuDB存储引擎,您可以选择安装percona-server-tokudb-5.7_5 .7.10-3-1.jessie_amd64.deb)。
注意
Percona Server 5.7 附带 TokuDB storage engine. 你可以找到更多的信息在TokuDB Installation 手册中关于 `如何安装和启用 TokuDB 存储引擎` 的文章。
警告
如果你选择手动安装的的时候,你需要自己解决依赖关系并安装需要的软件包。
这种方式安装脚本不会像以前的版本一样自动运行 mysql_upgrade。 您需要手动运行该命令,并在完成 更新后重新启动服务。
基于RPM的发行版本
待完全备份(或是 对数据进行转储)完成之后,停止服务进程:
service mysql stop
检查你所安装的软件:
$ rpm -qa | grep Percona-Server Percona-Server-shared-56-5.6.28-rel76.1.el6.x86_64 Percona-Server-server-56-5.6.28-rel76.1.el6.x86_64 Percona-Server-client-56-5.6.28-rel76.1.el6.x86_64 Percona-Server-tokudb-56-5.6.28-rel76.1.el6.x86_64
您可能有一个shared-compat 包,这是为了兼容性目的。 检查完之后,进行忽略依赖管理移除软件:
$ rpm -qa | grep Percona-Server | xargs rpm -e --nodeps
这是很重要的删除它的时候忽略依赖关系,因为许多软件包可能依赖这些(因为它们取代mysql),如果省略,将被删除。 注意:从MySQL 5.6 或 5.7 升级到 Percona Server 5.7 时,此过程是相同的。只需要将 Percona-Server 使用 `grep '^mysql-'` 替代 并移除它们。 在 download page 中根据你系统的结构下载需要的系列。最简单的方法是下载包含所有包的包。 以下示例将为CentOS 7下载Percona Server 5.7.10-3发行包:
$ wget https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.10-3/binary/redhat/7/x86_64/Percona-Server-5.7.10-3-r63dafaf-el7-x86_64-bundle.tar
你应该解压包已获得软件包:
$ tar xvf Percona-Server-5.7.10-3-r63dafaf-el7-x86_64-bundle.tar
解压之后你将看到下面的软件包:
$ ls *.rpm Percona-Server-57-debuginfo-5.7.10-3.1.el7.x86_64.rpm Percona-Server-client-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-devel-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-server-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-shared-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-shared-compat-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-test-57-5.7.10-3.1.el7.x86_64.rpm Percona-Server-tokudb-57-5.7.10-3.1.el7.x86_64.rpm
现在,你可以安装 Percona Server 5.7,通过下面的操作:
rpm -ivh Percona-Server-server-57-5.7.10-3.1.el7.x86_64.rpm \ Percona-Server-client-57-5.7.10-3.1.el7.x86_64.rpm \ Percona-Server-shared-57-5.7.10-3.1.el7.x86_64.rpm
这种方式将只安装 Percona Server 5.7 所需要的包. (可选) 你可以安装 TokuDB storage engine 通过添加 Percona-Server-tokudb-57-5.7.10-3.1.el7.x86_64.rpm 到上面的命令中. 你可以在 TokuDB Installation 中找到更多的信息关于如何安装和启用 TokuDB 存储引擎。 安装所有的软件包(为了测试、调试、等等),你应该运行:
$ rpm -ivh *.rpm
注意
如果你选择手动安装的的时候,你需要自己解决依赖关系并安装需要的软件包。
安装后,继续修改配置文件 - my.cnf,如果需要的话安装所需的插件。 如果您使用的是TokuDB存储引擎,您需要在启动服务器之前注释掉配置文件中的所有TokuDB特定变量,否则服务器将无法启动。 RHEL / CentOS 7自动将以前的配置文件备份到/etc/my.cnf.rpmsave并安装默认的my.cnf。 在升级/安装过程完成后,您可以移动旧的配置文件(在删除所有不支持的系统变量后)。 由于授权表的模式已更改,服务器必须在不读取它们的情况下启动:
$ service mysql start
并使用 `mysql_upgrade` 迁移到新的授权表,如果需要的话,它将重建索引并进行所需的修改:
注意 如果你正在使用 TokuDB 存储引擎,你将需要运行下面的命令重新启用存储引擎插件 ps_tokudb_admin --enable # 需要在执行 mysql_upgrade 之前进行,否则你将会得到错误
$ mysql_upgrade
当更新完之后,向往常一样重启服务:
$ service mysql restart
源文:Percona Server In-Place Upgrading Guide: From 5.6 to 5.7