原地升級(jí)
原地升級(jí)包括關(guān)閉舊的MySQL服務(wù)器,用新的MySQL二進(jìn)制文件或軟件包替換舊的MySQL二進(jìn)制文件或軟件包炬守,在現(xiàn)有數(shù)據(jù)目錄上重新啟動(dòng)MySQL以及升級(jí)現(xiàn)有安裝中需要升級(jí)的任何其余部分。
注意
如果要升級(jí)最初通過(guò)安裝多個(gè)RPM軟件包而產(chǎn)生的安裝,請(qǐng)升級(jí)所有軟件包,而不只是某些軟件包。例如缤剧,如果您以前安裝了服務(wù)器和客戶端RPM,則不要僅升級(jí)服務(wù)器RPM域慷。
對(duì)于某些Linux平臺(tái)荒辕,從RPM或Debian軟件包安裝的MySQL包括對(duì)管理MySQL服務(wù)器啟動(dòng)和關(guān)閉的系統(tǒng)支持。在這些平臺(tái)上犹褒,未安裝mysqld_safe抵窒。在這種情況下,請(qǐng)使用systemd來(lái)啟動(dòng)和關(guān)閉服務(wù)器叠骑,而不要使用以下說(shuō)明中使用的方法李皇。
要執(zhí)行原地升級(jí):
- 備份好數(shù)據(jù),包括系統(tǒng)庫(kù)宙枷;
- 知曉數(shù)據(jù)庫(kù)驅(qū)動(dòng)掉房、字段類型等兼容性問(wèn)題;
- 如果使用了
innodb
的XA
事務(wù)慰丛,在升級(jí)之前運(yùn)行XA RECOVER
來(lái)檢查未提交的XA事務(wù)圃阳。如果返回結(jié)果,則通過(guò)XA COMMIT
或者XA ROLLBACK
語(yǔ)句來(lái)提交或者回滾XA事務(wù)璧帝; - 如果存在加密的InnoDB表空間捍岳,請(qǐng)執(zhí)行以下語(yǔ)句:
ALTER INSTANCE ROTATE INNODB MASTER KEY;
- 如果使用
innodb_fast_shutdown=2
來(lái)啟動(dòng)MySQL服務(wù)器,通過(guò)執(zhí)行以下任一語(yǔ)句,將其配置為執(zhí)行快速或慢速關(guān)閉:
SET GLOBAL innodb_fast_shutdown = 1; -- fast shutdown
SET GLOBAL innodb_fast_shutdown = 0; -- slow shutdown
通過(guò)快速關(guān)閉或緩慢關(guān)閉锣夹,InnoDB會(huì)將其撤消日志和數(shù)據(jù)文件保持在某種狀態(tài)下页徐,以防止版本之間的文件格式差異。
- 關(guān)閉舊的MySQL服務(wù)器银萍。例如:
mysqladmin -u root -p shutdown
- 升級(jí)MySQL二進(jìn)制文件或軟件包变勇。如果要升級(jí)二進(jìn)制安裝程序,請(qǐng)解壓縮新的MySQL二進(jìn)制分發(fā)程序包贴唇。對(duì)于基于軟件包的安裝搀绣,請(qǐng)安裝新軟件包。
- 使用現(xiàn)有數(shù)據(jù)目錄啟動(dòng)MySQL 8.0服務(wù)器戳气。例如:
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
- 在上一步中链患,服務(wù)器將根據(jù)需要升級(jí)數(shù)據(jù)字典。現(xiàn)在有必要執(zhí)行所有剩余的升級(jí)操作:
- 從MySQL 8.0.16開(kāi)始瓶您,服務(wù)器將在上一步中完成此操作:在MySQL 5.7和MySQL 8.0之間的mysql系統(tǒng)模式中進(jìn)行所需的任何更改麻捻,以便可以利用新的特性或功能。它還使MySQL 8.0的Performance Schema呀袱,INFORMATION_SCHEMA和sys模式保持最新贸毕,并檢查所有用戶模式與當(dāng)前版本的MySQL的兼容性。
- 在MySQL 8.0.16之前夜赵,服務(wù)器僅在上一步中升級(jí)數(shù)據(jù)字典明棍。MySQL 8.0服務(wù)器成功啟動(dòng)后,執(zhí)行mysql_upgrade來(lái)執(zhí)行其余的升級(jí)任務(wù):
mysql_upgrade -u root -p
然后關(guān)閉并重新啟動(dòng)MySQL服務(wù)器寇僧,以確保對(duì)系統(tǒng)表所做的所有更改均生效摊腋。例如:
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir &
第一次啟動(dòng)MySQL 8.0服務(wù)器時(shí)(在較早的步驟中),可能會(huì)在錯(cuò)誤日志中注意到有關(guān)未升級(jí)表的消息婉宰。如果mysql_upgrade已成功運(yùn)行歌豺,則第二次啟動(dòng)服務(wù)器時(shí)不應(yīng)出現(xiàn)此類消息推穷。
注意
升級(jí)過(guò)程不會(huì)升級(jí)時(shí)區(qū)表的內(nèi)容心包。如果升級(jí)過(guò)程使用mysql_upgrade(即MySQL 8.0.16之前的版本),則該過(guò)程也不會(huì)升級(jí)幫助表的內(nèi)容馒铃。