當(dāng)前不少系統(tǒng)的數(shù)據(jù)庫依舊是MySQL5.6,由于MySQL5.7及MySQL8.0在性能及安全方面有著很大的提升,因此需要升級(jí)數(shù)據(jù)庫。本文通過邏輯方式、物理方式原地升級(jí)來介紹MySQL5.6 升級(jí)至MySQL5.7的方法,并介紹其使用場(chǎng)景。
邏輯方式升級(jí)其實(shí)就是通過邏輯備份工具(例如mysqldump工具)將數(shù)據(jù)庫、表、其他相關(guān)對(duì)象及數(shù)據(jù)邏輯備份成SQL腳本,再將其還原至MySQL5.7的實(shí)例中。
詳細(xì)步驟如下:
當(dāng)前數(shù)據(jù)庫的版本為MySQL5.6.27,現(xiàn)在準(zhǔn)備備份
因?yàn)閹毂容^小,因此使用mysqldump進(jìn)行備份即可。mysqldump備份的方法可以參考?xì)v史文章進(jìn)行了解
MySQL數(shù)據(jù)備份及還原(一) https://mp.weixin.qq.com/s/JbLThtgUq5RjkCuztSgBJg 或 https://www.cnblogs.com/gjc592/p/12505347.html
備份腳本:
/* 備份所有庫及相關(guān)對(duì)象 */ /usr/local/mysql/bin/mysqldump -uroot -p --socket=/app/data/mysql3307/tmp/mysql.sock --master-data=2 --default-character-set=utf8 --routines --triggers --events --flush-logs --flush-privileges --single-transaction --all-databases > all_db.sql
MySQL5.7 的部署歷史文章里也有,如果不太熟悉的同學(xué)可以參考如下鏈接文章
MySQL5.7安裝https://mp.weixin.qq.com/s/fbp-3hpMxrCc7R3_HQTchA 或 https://www.cnblogs.com/gjc592/p/9203711.html
安裝過程比較簡(jiǎn)單,本文不再贅述。
將備份的MySQL5.6的數(shù)據(jù)導(dǎo)入到MySQL5.7 中即可。
使用mysql_update方式升級(jí)時(shí),時(shí)間相對(duì)較快,尤其是數(shù)據(jù)庫體量較大時(shí),此方式可以原地直接升級(jí)。
步驟如下:
下載需要升級(jí)到的版本的數(shù)據(jù)庫,例如本次升級(jí)到MySQL5.7.25-28版本(percona分支),則下載對(duì)應(yīng)安裝包,解壓后配置軟連接
因MySQL5.6 的部分參數(shù)再M(fèi)ySQL5.7 中已經(jīng)廢棄或者默認(rèn)值發(fā)生變化,另外也為了使用MySQL5.7的新特性,需要添加對(duì)應(yīng)的參數(shù)配置,例如:
當(dāng)日,還有很多新特性的參數(shù)需要調(diào)整,在此不再一一列舉,需要的同學(xué)直接聯(lián)系我 或者參考?xì)v史文章配置即可
MySQL5.6的關(guān)閉可以使用停止服務(wù)的方式,也可以通過命令行方式,命令如下:
/* mysql5.6 關(guān)閉實(shí)例的方式需要使用mysqladmin */ /usr/local/mysql/bin/mysqladmin --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p shutdown
建議: 生產(chǎn)環(huán)境中,如果可以使用此方式升級(jí),強(qiáng)烈建議先直接冷備一下整個(gè)數(shù)據(jù)庫的數(shù)據(jù)目錄,已防止升級(jí)失敗等情況出現(xiàn)。
此時(shí)需要用MySQL5.7來啟動(dòng)數(shù)據(jù)庫,啟動(dòng)后日志里會(huì)有一些報(bào)錯(cuò)信息。
啟動(dòng)數(shù)據(jù)庫
/usr/local/mysql5.7/bin/mysqld_safe --defaults-file=/app/data/mysql3307/etc/my.cnf &
日志里內(nèi)容如下,出現(xiàn)很多錯(cuò)誤,其中也提示到需要使用mysql_upgrade進(jìn)行修復(fù):
2.5 升級(jí)數(shù)據(jù)庫
MySQL升級(jí)工具是mysql_upgrade,錯(cuò)誤日志里也提到了使用mysql_upgrade進(jìn)行修復(fù)相應(yīng)的錯(cuò)誤。升級(jí)的方法如下:
/* 升級(jí)系統(tǒng)庫及業(yè)務(wù)庫 */ /usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p
如果只需要升級(jí)系統(tǒng)庫,則加-s參數(shù); 如果升級(jí)過程中有錯(cuò)誤或者中斷后想再次升級(jí) 可以添加--force參數(shù)強(qiáng)制升級(jí)
/* 只升級(jí)系統(tǒng)庫 */ /usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p -s /* 強(qiáng)制升級(jí) */ /usr/local/mysql5.7/bin/mysql_upgrade --socket=/app/data/mysql3307/tmp/mysql.sock -uroot -p --force
升級(jí)完成后建議再進(jìn)行以下工作
附: 升級(jí)后數(shù)據(jù)庫啟動(dòng)日志
相同大版本之間的小版本升級(jí)
數(shù)據(jù)量較大,提前測(cè)試過兩個(gè)版本之間可以原地升級(jí)時(shí)再用。
MySQL的邏輯升級(jí)及mysql_upgrade的原地升級(jí)都有各自的應(yīng)用場(chǎng)景。但是無論用哪種方式,都要注意以下幾點(diǎn):
a) 在生產(chǎn)環(huán)境上進(jìn)行升級(jí)操作之前一定需要先在測(cè)試環(huán)境中多次進(jìn)行相同版本的升級(jí)測(cè)試工作;
b) 實(shí)際工作中,測(cè)試環(huán)境升級(jí)成功后需要經(jīng)過相關(guān)業(yè)務(wù)的回歸測(cè)試,確保相關(guān)功能升級(jí)后能正常使用后再在生產(chǎn)環(huán)境進(jìn)行升級(jí),建議測(cè)試環(huán)境進(jìn)行1個(gè)月以上的測(cè)試
c) 生產(chǎn)環(huán)境升級(jí)前一定要進(jìn)行備份
d) 生產(chǎn)環(huán)境的升級(jí)順序建議是先升級(jí)從節(jié)點(diǎn),再升級(jí)主節(jié)點(diǎn)或進(jìn)行主從切換
聯(lián)系客服