CentOS 7 下将 MySQL 5.6 升级为MySQL 5.7
学长写的一个sql语句用到了 MySQL 5.7 的函数,这个函数在 MySQL 5.6 中不支持,所以现在需要在不影响数据库数据的情况下升级版本
备份数据
虽然以下升级方法不影响数据库的数据,但为了以防万一,建议备份原数据库表
下载安装 MySQL 5.7 的 yum 源
1 在 MySQL官网中下载 MySQL 5.7 的源
选择 5.7,操作系统选择 Red Hat,然后点击下方的 Download Now
跳转页面后,在下方的下载列表里面选择和自己操作系统版本对应的下载
点击下载后会让我们登录,可以选择不登录,直接下载
我下载后的文件名为 mysql80-community-release-el7-3.noarch.rpm
,里面包含了 8,5.7,5.6 等多个版本,默认有效的是 8 的版本。我之前直接升级到了 8 的版本,结果会提示 5.6 以前的不能升级到 8,会失败,所以我又搞了半天回退升级的操作,需要使 5.7 的为默认有效的,让 5.6 升级到 5.7。
2 安装 MySQL 源
可以安装自己的下载的文件
# yum install mysql80-community-release-el7-3.noarch.rpm
之前已经安装过其他的源文件会报错,两个源文件冲突,需要先使用 yum remove
删除掉之前的源,然后再安装现在的源。
3 设置源中的 5.7 为有效
通过以下命令可以查看安装源所支持的所有版本
# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community disabled
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - disabled
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community disabled
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - disabled
mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Community disabled
mysql-cluster-8.0-community-source MySQL Cluster 8.0 Community - disabled
mysql-connectors-community/x86_64 MySQL Connectors Community enabled: 108
mysql-connectors-community-source MySQL Connectors Community - disabled
mysql-tools-community/x86_64 MySQL Tools Community enabled: 90
mysql-tools-community-source MySQL Tools Community - Sourc disabled
mysql-tools-preview/x86_64 MySQL Tools Preview disabled
mysql-tools-preview-source MySQL Tools Preview - Source disabled
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - disabled
mysql56-community/x86_64 MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - disabled
mysql57-community/x86_64 MySQL 5.7 Community Server enabled: 347
mysql57-community-source MySQL 5.7 Community Server - disabled
mysql80-community/x86_64 MySQL 8.0 Community Server disabled
mysql80-community-source MySQL 8.0 Community Server - disabled
默认是 mysql80-community
有效,使 5.7 有效的方法是执行下面两条命令:
# yum-config-manager --disable mysql80-community
# yum-config-manager --enable mysql57-community
4 错误升级为 8 后回退 yum 升级历史
# yum history list 列出通过Yum执行过的操作
# yum history info 7 查看ID 7 的操作过程
# yum history undo 7 撤销 ID 7 的操作
5 通过 yum 升级 MySQL 版本
停掉 MySQL 服务
# systemctl stop mysqld
升级 MySQL
# yum update mysql-server
升级完之后重新启动 MySQL
# systemctl start mysqld
重启可能会报错,具体错误可以见参考资料描述,需要跳过密码验证的方式启动 mysqld。
可以进入MySQL客户端,发现版本已经更新了,最后还需要退出客户端,再执行以下命令对数据库表进行升级
# mysql_update
执行完毕之后就可以重启MySQL服务,完成升级
# systemctl restart mysqld
注意如果设置了跳过密码验证方式,需要取消该方式
参考资料
[1] http://www.zsythink.net/archives/2345 MySQL 从 5.1 升级到 5.7 (使用 yum 源)
[2] https://www.cnblogs.com/Cohen/p/9027553.html yum 回滚
[3] https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 从源中安装 5.7 而不是 8