最近對后端組件進行安全掃描時,發現了一些輕微漏洞,為了避免后續部署后安全掃描出現問題,決定對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