一、環境說明
操作系統:Windows Server2008 R2
數據庫版本:MySql 8.0.19 數據庫中數據量很小,處於測試環境,風險較低
二、升級原因升級是因為測評漏洞,在進行國家三級等級保護測評過程中,漏掃發現多個MySql漏洞。
一共包含3個高危漏洞以及約50個高危漏洞,經過整體整改建議查看,需要升級到8.0.20版本后可以解決相關漏洞,因此評估對版本進行升級,發現最新版本的為8.0.22版本,直接一步到位,升級到最新版。
三、升級方法
查了相關資料,MySql升級從8.0.16是一個分水嶺,在該版本前后的升級方法有所不同,8.0.16版本之后升級方法大大簡化。恰好我這里是8.0.16版本后的,暗自慶幸一下。
網上大部分資料都是介紹8.0.16之前的版本升級,8.0.16后的版本升級資料不多,我這里是直接按照官方文檔進行的升級操作,簡單的大概分為三步即可【停服務】—>【文件覆蓋】—>【啟服務】(像不像把大象放進冰箱里面的操作,只要三步,打開冰箱—>放進大象—>關上冰箱(* ̄︶ ̄))。
下面來介紹一下具體的操作:
官方升級文檔參考:
https://dev.mysql.com/doc/refman/8.0/en/windows-upgrading.html#windows-upgrading-zip-distribution
大概總結如下(官方步驟中有一個操作可能可以通過多種方式實現):
1、下載最新的安裝包,我這里使用的是解壓包的方式,所以下載的為ZIP格式文件(使用exe升級的方式大同小異,可以同樣參考官方文檔進行操作);
下載地址:https://dev.mysql.com/downloads/mysql/
2、查看已安裝Mysql的版本
可以通過 SELECT VERSION(); 語句查看;
SELECT VERSION();
或者通過CMD命令中執行命令查看
MYSQL -V
3、停止服務前確定數據庫的引擎類型以及服務重啟方式。
查看數據庫默認引擎類型
show variables like '%storage_engine%';
查看提供的存儲引擎
show engines;
也可以通過表查看某一個表的了類型,在表的創建語句中找到ENGINE名稱,一般是InnoDB。
show create table 表名;
設置服務關閉方式,
show variables like '%innodb_fast_shutdown%';
設置為0:會做清除臟頁和插入緩沖區的合並操作,也會將臟頁全部刷新到磁盤上面去,但是這個時候關閉的速度也是最慢的;
設置為1:關閉MySQL的時候不會做清除臟頁和插入緩沖區的合並操作,也不會將臟頁刷新到磁盤;
設置為2:不會做清除臟頁和插入緩沖區的合並操作,也不會將臟頁刷新到磁盤,但是會刷新到redo log里面,再下次啟動mysql的時候恢復;
默認設置為1,可以通過 set global innodb_fast_shutdown=0 語句進行設置,建議設置為0或者1。
3、操作前備份
mysqldump -u root -p db-mcms-open > D:\backup20210106.sql
在cmd中通過語句輸入密碼進行數據庫備份。
數據備份后,對原始的Mysql安裝包也進行備份,以防萬一。
4、停止服務
右鍵停止服務即可。
5、文件替換
將下載的最新安裝包解壓,並覆蓋已安裝版本,選擇文件夾合並以及文件覆蓋(新的包里面沒有data文件夾以及my.ini配置文件)。
6、同第四步操作,啟動服務即可
7、通過第二步語句進行版本驗證以及數據庫登錄、應用等驗證工作。
至此,整個升級完畢,個人升級比較順利,過程中並未遇到什么問題,而且升級后進行了應用等驗證,均無問題。