軟件測試 | 升級MySQL
MySQL的版本更新更快,新版本中往往包含了很多新功能,并且解決了很多舊版本中的BUG,因此很多情況下用戶需要對數(shù)據(jù)庫進(jìn)行升級。
MySQL的升級很簡單,以下給出了幾種不同的升級方法,每種升級方法都有一定的優(yōu)缺點,用戶可以按照實際需求選擇合適的方法進(jìn)行操作。
方法一:最簡單,適用于任何存儲引擎(不一定速度最快)。
(1)在目標(biāo)服務(wù)器上安裝新版本的MySQL。
(2)在新版本MySQL上創(chuàng)建和老版本同名的數(shù)據(jù)庫。命令如下:
(3)將老版本MySQL上的數(shù)據(jù)庫通過管道導(dǎo)入到新版本數(shù)據(jù)庫中。命令如下:
這里的--opt選項表明采用優(yōu)化(Optimize)方式進(jìn)行導(dǎo)出。
注意:如果網(wǎng)絡(luò)較慢,可以在導(dǎo)出選項中加上--compress來減少網(wǎng)絡(luò)傳輸。
對于不支持管道操作符(|)的操作系統(tǒng),可以先用mysqldump工具將舊版本的數(shù)據(jù)導(dǎo)出為文本文件,然后再往新版本MySQL中導(dǎo)入此文件。其實就是把上面操作分為兩步執(zhí)行,具體操作如下:
(4)將舊版本MySQL中的mysql數(shù)據(jù)庫目錄全部cp過來覆蓋新版本的MySQL中的mysql數(shù)據(jù)庫。例如將/home /mysql_old/data/mysql目錄覆蓋掉/home/mysql_new/data/mysql,可以使用如下命令。
這里,-R選項表示cp整個目錄下內(nèi)容,包括嵌套的所有子目錄。
(5)新版本服務(wù)器的shell里面執(zhí)行mysql_fix_privilege_tables命令升級權(quán)限表。
(6)重啟新版本MySQL服務(wù)。
至此,升級完畢。
方法二:適用于任何存儲引擎,速度較快。
(1)參照方法一種的步驟(1)安裝新版本MySQL
(2)在舊版本MySQL中,創(chuàng)建用來(2)在舊版本 MySQL 中,創(chuàng)建用來保存輸出文件的目錄并用 mysqldump 備份數(shù)據(jù)庫:
這里使用--tab 選項不會生成 SQL 文本。而是在備份目錄下對每個表分別生成了.sql 和.txt 文件,其中.sql 保存了表的創(chuàng)建語句;.txt 保存了用默認(rèn)分隔符生成的純數(shù)據(jù)文本。
(3)將 DUMPDIR 目錄中的文件轉(zhuǎn)移到目標(biāo)服務(wù)器上相應(yīng)的目錄中并將文件裝載到新版本的 MySQL 中,具體操作如下(以下命令都在新版本服務(wù)器中執(zhí)行):
(4)參照方法一中的步驟(4)、(5)、(6)升級權(quán)限表,并重啟 MySQL 服務(wù)。
方法三:適合于 MyISAM 存儲引擎的表,速度最快。
(1)參照方法一中的步驟(1)安裝新數(shù)據(jù)庫。
(2)將舊版本 MySQL 中的數(shù)據(jù)目錄下的所有文件(.frm、.MYD 和.MYI)cp 到新版本MySQL 下的相應(yīng)目錄下。
(3)參照方法一中的步驟(4)、(5)、(6)升級權(quán)限表,并重啟 MySQL 服務(wù)。
從上面 3 種方法中可以看出,其實升級的步驟都大同小異,區(qū)別僅僅在于數(shù)據(jù)遷移方法的不同。這里需要提醒讀者的有兩點:
上面的升級方法都是假設(shè)升級期間舊版本 MySQL 不再進(jìn)行數(shù)據(jù)更新,否則,遷移過去的數(shù)據(jù)將不能保證和原數(shù)據(jù)庫一致。
遷移前后的數(shù)據(jù)庫字符集最好能保持一致,否則可能會出現(xiàn)各種各樣的亂碼問題。
搜索微信公眾號:TestingStudio霍格沃茲的干湖都很硬核