最近对后端组件进行安全扫描时,发现了一些轻微漏洞,为了避免后续部署后安全扫描出现问题,决定对mysql做一次版本升级。升级的原则是对mysql的二进制文件进行升级,若有主备节点,先升级从节点升级完成后将其提为主节点,然后再升级原主节点。
升级步骤:
mysql当前版本:5.7.24
目标版本:5.7.28
前期准备:
1.待升级mysql安装包:mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz,下载地址:https://dev.mysql.com/downloads/mysql/
2.备份mysql数据:
./mysqldump -u<ACCOUNT> -p<PASSWORD> -S mysql.sock -F -A -B |gzip > ~/mysql_backup/20191020/mysqlbak.sql.gz
3.备份配置文件:
cp <mysql-root>/*.cnf ~/mysql_backup/20191020/
步骤(完整流程包含准备内容):
1.备份数据库:
mysqldump -u<username> -p<password> -S mysql.sock -F -A -B |gzip >/home/user/backup/20191029/mysqlbak.sql.gz
2.停止mysql数据库,我是使用supervisor做进程管理,所以直接执行命令:
supervisorctl stop mysql
tip:若未使用守护进程则使用如下命令关闭mysql:
mysql -u root -p -S /data/mysql3308/mysql3308.sock --execute="SET GLOBAL innodb_fast_shutdown=0" mysqladmin -u root -p -S /data/mysql3308/mysql3308.sock shutdown
3.备份启动配置文件以及启动脚本:
cp mysql/*.cnf /home/user/backup/20191029/ ### 启动脚本是自己写的用于supervisor,正常mysql是没有这个的 cp mysql/bin/start.sh /home/user/backup/20191029/
4.解压新版本的压缩包至安装目录:
tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C <install-root>
5.将mysql的软连接指向新版本的二进制文件
mv mysql mysql.20191029 ln -s <install-root>/mysql-5.7.28-linux-glibc2.12-x86_64 mysql
6.将备份的启动配置文件以及启动脚本拷贝至新的mysql当中:
cp /home/user/backup/20191029/*.cnf <install-root>/mysql/
cp /home/user/backup/20191029/bin/start.sh<install-root>/mysql/bin
7.启动mysql:
supervisorctl start mysql
8.检查所有表是否与当前版本兼容,并更新系统库(这个版本因为比较小所以系统库的内容是兼容的):
mysql_upgrade -u<user> -p<password> -S mysql.sock
9.重新启动mysql,让对系统表的改动生效:
supervisorctl restart mysql