之前數據庫的安裝是通下載mysql-5.7.22-1.el7.x86_64.rpm-bundle.tar中的rpm包,進行安裝的,現在發現5.7.22版本有許多的安全漏洞,需要升級到最新版5.7.31版;在這里記錄一下通過rpm方式升級MySQL
下載最新版的MySQL安裝包
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
解壓
tar -xvf mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar
把需要升級的rpm包放到一個目錄
-rw------- 1 root root 25820440 Jun 3 18:07 mysql-community-client-5.7.31-1.el7.x86_64.rpm -rw------- 1 root root 378784 Jun 3 18:07 mysql-community-common-5.7.31-1.el7.x86_64.rpm -rw------- 1 root root 3891548 Jun 3 18:07 mysql-community-devel-5.7.31-1.el7.x86_64.rpm -rw------- 1 root root 2511392 Jun 3 18:07 mysql-community-libs-5.7.31-1.el7.x86_64.rpm -rw------- 1 root root 169502800 Jun 3 18:08 mysql-community-server-5.7.31-1.el7.x86_64.rpm
升級
查看當前版本
方式一:mysql -V
方式二:rpm -qa |grep -i mysql
記錄當前版本信息
備份
mysqldump -u root -p --add-drop-table --routines --events --all-databases --force > upgrade.sql
備份配置文件
cp /etc/my.cnf /etc/my.cnf.bak
cp /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service.bak
flush tables with read lock; 關閉所有的表,並給所有數據庫的所有表加上一個global read lock。這對於backup操作來說很有用,加鎖之后,可以防止應用修改數據庫。這個是全局級別的鎖,而非表鎖。
設置參數使數據庫關閉時會清空緩存避免版本間緩存格式差異
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
關閉數據庫(如果在升級安裝開始時MySQL服務器正在運行,則會在安裝結束時自動重啟,執行上述升級命令后,可直接查看版本號變為升級后的版本號)
systemctl stop mysqld
這里是關閉數據庫后再升級,那么升級完畢后要記得重啟.
升級:卸載和安裝信息二進制文件(即直接yum uninstall /rpm -ivh升級rpm包)數據庫目錄等都不變
yum remove -y mysql-community-libs-5.7.22-1.el7.x86_64
yum remove -y mysql-community-common-5.7.22-1.el7.x86_64
rpm -qa |grep -i mysql
rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm
rpm -qa |grep -i mysql
啟動數據庫
mv /etc/my.cnf.bak /etc/my.cnf
mv /usr/lib/systemd/system/mysqld.service.bak /usr/lib/systemd/system/mysqld.service
先還原備份配置文件再啟動 systemctl start mysqld
啟動后 執行 unlock tables 防止表讀被鎖
檢查並可能解決舊數據和升級軟件之間的任何不兼容性
在這一步,如果是關閉數據庫升級,數據庫要已啟動
mysql_upgrade -uroot -p
當從5.7.29升級到5.7.30需要更新,當升級到最新的5.7.30后,就不用了.當然,如果非要更新(其實沒必要),要加–force選項.
驗證
rpm驗證
rpm -qa |grep -i mysql
mysql命令
mysql -V
進入msyql系統后驗證
mysql> select version();