MySQL5.7.26升级至5.7.31

  • 下载所需软件
  • 下载xtrabackup
  • 下载MySQL
  • 将软件上传至服务器
  • 安装xtrabackup
  • 使用xtrabackup备份MySQL数据库
  • 升级MySQL
  • 停止MySQL服务
  • 卸载现有MySQL
  • 安装新版MySQL
  • 使用xtrabackup还原
  • 启动MySQL数据库


项目运维过程中,被扫描出MySQL安全漏洞,需要通过升级MySQL版本来解决问题,服务器上原本安装的是mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz,本文介绍的是将mysql升级至mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz

下载所需软件

下载xtrabackup

数据库软件在升级前,需要对原有数据库进行备份,这里采用的xtrabackup进行备份还原。需要下载libev与percona-xtrabackup
(1)下载libev

https://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

(2)下载percona-xtrabackup

CentOS6

https://repo.percona.com/yum/release/6/RPMS/x86_64/percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm

CentOS7

https://repo.percona.com/yum/release/7/RPMS/x86_64/percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

下载MySQL

登录MySQL官方网站,下载指定版本的MySQL安装包

https://dev.mysql.com/downloads/mysql/

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_数据库

将软件上传至服务器

通过SFTP将安装包上传至opt目录

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_MySQL_02

安装xtrabackup

cd /opt/xtrabackup/
ll
rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
# CentOS6
rpm -ivh percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
# CentOS7
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_MySQL_03

使用xtrabackup备份MySQL数据库

(1)对mysql做一个全量备份。–host指定mysql主机,–port指定mysql数据库服务端口,–user指定连接数据库的用户名,–password指定连接数据库的密码,/opt/mysqldb/指定备份文件存储路径。

innobackupex --no-timestamp --host=127.0.0.1 --port=3306 --user=root --password=123456 --parallel=5 /opt/mysqldb/

等到出现“completed OK!”就说明备份完成。

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_mysql版本漏洞查看官网_04


如果mysql数据库有做主从复制,执行以下语句,备份日志。

innobackupex --host=127.0.0.1 --port=3306 --apply-log /opt/mysqldb/

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_mysql_05

升级MySQL

执行完备份后,停止mysql服务,对原有MySQL进行卸载,并重新安装。

停止MySQL服务

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_数据库_06

卸载现有MySQL

这里直接将原有版本的mysql目录进行重新命名。

cd /usr/local/
mv mysql mysql_bak

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_数据库_07

安装新版MySQL

在之前的教程中有介绍了MySQL的安装,这里就不在说明,具体参考:

使用xtrabackup还原

在使用xtrabackup还原MySQL数据之前,要先停止正在运行的mysql数据库,同时将/usr/local/mysql/database/进行备份删除。

service mysql stop
mv /usr/local/mysql/database/ /usr/local/mysql/database_bak

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_mysql_08


执行innobackupex还原数据库

innobackupex --copy-back /opt/mysqldb/

出现“completed OK!”说明还原成功

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_mysql版本漏洞查看官网_09


检查一下database目录,确定是否还原成功

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_数据库_10

启动MySQL数据库

启动mysql数据库,检查是否还原成功。

mysql版本漏洞查看官网 mysql5.7.31漏洞补丁升级_运维_11