一、概述
目前創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、渭城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。Linux MySQL 5.7二進(jìn)制 小版本升級,升級前需要備份數(shù)據(jù)和mysql主配置文件my.cnf
對數(shù)據(jù)字典的升級數(shù)據(jù)字典有:mysql、information_schema、performance_schema、sys schema。
MySQL升級的兩種方式:
in-place upgrade:
適合小版本的升級。
即 關(guān)閉當(dāng)前的MySQL,替換當(dāng)前的二進(jìn)制文件或包,在現(xiàn)有的數(shù)據(jù)目錄上重啟MySQL,并運(yùn)行mysql_upgrade.
特點(diǎn):不改變數(shù)據(jù)文件,升級速度快;但,不可以跨操作系統(tǒng),不可以跨大版本(5.5—>5.7).
logical upgrade:
適合不同操作系統(tǒng)的MySQL升級,大版本之間的升級。
即:使用mysqldump 或 mydumper 導(dǎo)入導(dǎo)出數(shù)據(jù),實(shí)現(xiàn)版本的升級。
特點(diǎn):可以跨操作系統(tǒng),跨大版本;但,升級速度慢,容易出現(xiàn)亂碼等問題。
二、小版本升級
in-place upgrade方式
in-place upgrade包括關(guān)閉舊的MySQL服務(wù)器,用新的MySQL服務(wù)器替換舊的MySQL二進(jìn)制文件或軟件包,在現(xiàn)有數(shù)據(jù)目錄上重新啟動(dòng)MySQL,以及運(yùn)行mysql_upgrade。
2.1 XA事務(wù)InnoDB
如果您使用XA事務(wù)InnoDB,請XA RECOVER在升級之前運(yùn)行以檢查未提交的XA事務(wù)。如果返回結(jié)果,則通過發(fā)出XA COMMIT或 XA ROLLBACK聲明來提交或回滾XA事務(wù)。
2.2 配置MySQL以通過設(shè)置innodb_fast_shutdown為 執(zhí)行慢速關(guān)閉 0。
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
在關(guān)閉過程中,InnoDB執(zhí)行完全清除并在關(guān)閉之前更改緩沖區(qū)合并,這可確保在發(fā)布版本之間存在文件格式差異時(shí)完全準(zhǔn)備好數(shù)據(jù)文件。
2.3 關(guān)閉舊的MySQL服務(wù)器
mysqladmin -u root -p shutdown
2.4 安裝新的MySQL二進(jìn)制包
下載,解壓新的MySQL二進(jìn)制分發(fā)包;
授權(quán):chown -R mysql.mysql /usr/loacl/mysql_new
把MySQL的軟連接指向新的mysql服務(wù)
unlink /usr/loacl/mysql
ln -s /usr/loacl/mysql_new /usr/loacl/mysql
2.5 使用現(xiàn)有數(shù)據(jù)目錄啟動(dòng)新MySQL 5.7服務(wù)器
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
2.6 運(yùn)行mysql_upgrade
mysqlcheck --no-defaults --check-upgrade --databases --auto-repair
/usr/loacl/mysql_new/bin/mysql_upgrade -u root -p
mysql_upgrade檢查所有數(shù)據(jù)庫中的所有表是否與當(dāng)前版本的MySQL不兼容。mysql_upgrade還會(huì)升級mysql系統(tǒng)數(shù)據(jù)庫,以便您可以利用新的權(quán)限或功能。
注意
mysql_upgrade不會(huì)升級幫助表的內(nèi)容。
2.7 關(guān)閉并重新啟動(dòng)MySQL服務(wù)器以確保對系統(tǒng)表所做的任何更改都生效
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
logical upgrade
邏輯升級涉及使用備份或?qū)С鰧?shí)用程序(如mysqldump)從舊MySQL實(shí)例導(dǎo)出SQL ,安裝新的MySQL服務(wù)器以及將SQL應(yīng)用于新的MySQL實(shí)例。
簡單說明邏輯升級就是導(dǎo)出數(shù)據(jù),然后升級,最后再導(dǎo)入數(shù)據(jù);安全性高,主要針對數(shù)據(jù)量不大的數(shù)據(jù)庫;常用的工具:mysqldump和Xtrabackup。
3.1 從以前的MySQL安裝中導(dǎo)出現(xiàn)有數(shù)據(jù):
mysqldump -u root -p
--add-drop-table --routines --events
--all-databases --force > data-for-upgrade.sql
注意
如果數(shù)據(jù)庫包含存儲(chǔ)的程序, 請使用--routines和 mysqldump的--events選項(xiàng) (如上所示)。該 選項(xiàng)包括轉(zhuǎn)儲(chǔ)中的所有數(shù)據(jù)庫,包括保存系統(tǒng)表的 數(shù)據(jù)庫。 --all-databasesmysql
重要
如果您有包含生成列的表,請使用MySQL 5.7.9或更高版本提供的mysqldump實(shí)用程序來創(chuàng)建轉(zhuǎn)儲(chǔ)文件。早期版本中提供的 mysqldump實(shí)用程序?qū)ι傻牧卸x使用了錯(cuò)誤的語法(Bug#20769542)。您可以使用該 INFORMATION_SCHEMA.COLUMNS 表來標(biāo)識具有生成列的表。
3.2 關(guān)閉舊的MySQL服務(wù)器
mysqladmin -u root -p shutdown
3.3 安裝MySQL 5.7
參考:
mysql 5.7.21 二進(jìn)制安裝
3.4 初始化新數(shù)據(jù)目錄
mysqld --initialize --datadir=/path/to/5.7-datadir
復(fù)制'root'@'localhost' 顯示在屏幕上的臨時(shí)密碼或?qū)懭脲e(cuò)誤日志以供日后使用。
3.5 使用新數(shù)據(jù)目錄啟動(dòng)MySQL 5.7服務(wù)器:
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
3.6 重置root密碼:
shell> mysql -u root -p
Enter password: **** <- enter temporary root password
mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
3.7 將先前創(chuàng)建的轉(zhuǎn)儲(chǔ)文件加載到新的MySQL服務(wù)器中
mysql -u root -p --force < data-for-upgrade.sql
注意
gtid_mode=ON如果轉(zhuǎn)儲(chǔ)文件包含系統(tǒng)表, 則不建議在服務(wù)器()上啟用GTID時(shí)加載轉(zhuǎn)儲(chǔ)文件。 mysqldump為使用非事務(wù)性MyISAM存儲(chǔ)引擎的系統(tǒng)表發(fā)出DML指令,并且在啟用GTID時(shí)不允許這種組合。另請注意,將啟用了GTID的服務(wù)器中的轉(zhuǎn)儲(chǔ)文件加載到啟用了GTID的另一臺服務(wù)器中會(huì)導(dǎo)致生成不同的事務(wù)標(biāo)識符。
3.8 運(yùn)行mysql_upgrade
mysql_upgrade -u root -p
mysql_upgrade檢查所有數(shù)據(jù)庫中的所有表是否與當(dāng)前版本的MySQL不兼容。mysql_upgrade還會(huì)升級mysql系統(tǒng)數(shù)據(jù)庫,以便您可以利用新的權(quán)限或功能。
注意
mysql_upgrade不會(huì)升級幫助表的內(nèi)容。
3.9 關(guān)閉并重新啟動(dòng)MySQL服務(wù)器以確保對系統(tǒng)表所做的任何更改都生效。
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
三、大版本升級
概述
升級前的準(zhǔn)備:
提前做好備份。
了解新版本變更的信息(哪些不再兼容,不再支持哪些功能)
在官方網(wǎng)站的general information—>what is new in mysql 5.7
升級的注意事項(xiàng):
確認(rèn)新版本是否有重大變更
注意 SQL mode 的變化
比如:在MySQL5.7中發(fā)生了SQL mode的變化,對不再支持的SQL mode,部分SQL會(huì)跑不通,此時(shí)可以清空SQL mode,跑完之后在設(shè)置SQL mode。
升級成功后,確認(rèn)業(yè)務(wù)SQL是否可以跑通
程序?qū)邮欠穸颊?
有時(shí)原使用的程序語言部分內(nèi)容不被支持新版本數(shù)據(jù)庫。比如,在5.1時(shí)用的是PHP4.0,但升級到5.6,PHP的某些函數(shù)不被支持。
在升級完成之后,一定要在測試時(shí)使用和線上版本相同的程序,測試是否存在問題。
存儲(chǔ)引擎的變化
比如:在未來的5.8版本,不再支持myisam 引擎。
注意字符集的亂碼問題
in-place upgrade
環(huán)境:
5.6.15 —>5.7.26
升級前的準(zhǔn)備:
備份+留意新版本的變更內(nèi)容
升級操作:
1、對5.7的軟件包,下載,解壓
#tar -xzvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
#ln -s mysql-5.7.26-linux-glibc2.12-x86_64 mysql5.7
2、關(guān)閉當(dāng)前MySQL(5.6)
#mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
#mysqladmin -u root -p shutdown
3、替換二進(jìn)制文件(5.7 替換 5.6)
#cd /usr/local
#mv mysql mysql5.6
#mv mysql5.7 mysql
4、使用現(xiàn)有的數(shù)據(jù)目錄啟動(dòng)MySQL
#mysqld_safe --user=mysql -p --skip-grant-tables --datadir=/data/mysql/data
5、檢查所有表是否與當(dāng)前版本兼容,并更新系統(tǒng)庫
#mysql_upgrade -uroot -p
注:mysql_upgrade的作用是檢查所有庫的所有表是否與當(dāng)前的新版本兼容,并更新系統(tǒng)庫。
6、重啟,確保對系統(tǒng)表所做的變更得以生效
#mysqld --defaults-file=/etc/my.cnf &
#mysql -uroot -p
至此,升級完成。
跨大版本升級
一 數(shù)據(jù)備份
(1)查看當(dāng)前版本:
[root@centos ~]# mysql -V
(2)備份數(shù)據(jù):
[root@centos ~]# mysqldump -u root -h 127.0.0.1 -P 3306 -p --all-databases > databases.sql
(3)備份my.cnf配置文件:
[root@centos ~]# cp /etc/my.cnf /home/
#在關(guān)閉MySQL的進(jìn)程后開始升級
[root@localhost ~]# cd /usr/local/
[root@localhost local]# rm -rf mysql
[root@localhost local]# tar -jxvf /usr/local/src/mysql-5.7.26-linux-glibc2.5-x86_64.tar.bz2 -C ./
[root@localhost local]# mv mysql-5.7.26-linux-glibc2.5-x86_64 mysql
[root@localhost local]# cat /etc/ld.so.conf.d/mysql.conf#檢查lib路徑是否是對的/usr/local/mysql/lib
[root@localhost local]# ldconfig -v#重新加載最新的包到系統(tǒng)中,注意如果是依賴于MySQL的一些軟件可能需要重新編譯
[root@localhost local]# /etc/init.d/mysqld start#嘗試啟動(dòng),注意在MySQL 5.7中部分變量參數(shù)有取消,最好是在另外一臺已安裝的MySQL 5.7的服務(wù)器上查詢my.cnf中的變量是否有存在,如不存在說明在新版本中已取消該參數(shù)需要?jiǎng)h除直到啟動(dòng)為止
[root@localhost local]# /usr/local/mysql/bin/mysql_upgrade -u root -p#使用mysql_upgrade更新升級
在支持mysql_upgrade中會(huì)對舊版本的數(shù)據(jù)進(jìn)行檢查修改,確認(rèn)升級成功后會(huì)進(jìn)行升級,在升級完成后在databasedir下會(huì)生成mysql_upgrade_info記錄最新的MySQL版本,啟動(dòng)MySQL,升級完畢
四、數(shù)據(jù)庫升級建議及注意事項(xiàng)
升級部分并無太多區(qū)別和不同,更多需要注意版本升級后的不兼容,特性或函數(shù)的引用,以及SQL_mode的變更,需要業(yè)務(wù)進(jìn)行配合測試,致使升級后數(shù)據(jù)與原數(shù)據(jù)無異樣,才算升級成功,望知悉,并有測試環(huán)境進(jìn)行配合測試。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文標(biāo)題:MySQL升級-創(chuàng)新互聯(lián)
文章鏈接:http://jinyejixie.com/article30/csoppo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、面包屑導(dǎo)航、域名注冊、網(wǎng)站設(shè)計(jì)公司、營銷型網(wǎng)站建設(shè)、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容