微信微網(wǎng)站平臺(tái)seo優(yōu)化流程
零、說(shuō)在前面
??????? MySQL導(dǎo)數(shù)據(jù)通常使用第三方工具和MySQL自身的工具,本文分別就這兩類(lèi)方法分別介紹。
一、第三方工具之 Navicat
1.1、Navicat的“數(shù)據(jù)傳輸”工具
??????? 打開(kāi)Navicat,點(diǎn)擊“工具”標(biāo)簽,找到“數(shù)據(jù)傳輸”,即可看到操作界面。這里不對(duì)這個(gè)工具本身做過(guò)多介紹,側(cè)重點(diǎn)在于工具中的一些配置選項(xiàng)的含義的介紹上。如下圖所示
??????? 上圖的傳輸選項(xiàng)選擇好之后,點(diǎn)擊下一步,看到如下界面。然后根據(jù)需要選擇傳遞哪些表或哪些對(duì)象。選好后點(diǎn)擊“下一步”
??????? 以傳輸單表舉例。選中左側(cè)的某個(gè)表,然后可以在右側(cè)看到“高級(jí)”選項(xiàng),這里重點(diǎn)說(shuō)一下高級(jí)選項(xiàng)中的一些參數(shù)
二、MySQL自身工具之 mysqldump
2.1、使用方法
??????? linux 操作系統(tǒng)下,通常會(huì)使用mysqldump 這種基于數(shù)據(jù)的邏輯備份方式來(lái)導(dǎo)出數(shù)據(jù),此方法在恢復(fù)數(shù)據(jù)階段的速度不是很快,但勝在穩(wěn)定而且備份的文件是基于數(shù)據(jù)的,所以能不受數(shù)據(jù)庫(kù)引擎影響。
??????? 導(dǎo)庫(kù)命令格式為 "mysqldump -u登錄名 -p 庫(kù)名? > 路徑 文件名";導(dǎo)表與導(dǎo)庫(kù)方式的區(qū)別在于需要加上表名,命令格式為 "mysqldump -u登錄名 -p 庫(kù)名 表名 > 文件期望保存的路徑 文件名",如下圖所示
??????? 上圖中的導(dǎo)出數(shù)據(jù)的命令本身沒(méi)有什么可說(shuō)的,只要命令正確就能導(dǎo)出成功。上圖中有一點(diǎn)要說(shuō)的就是我在導(dǎo)出命令前還加了一個(gè) time 命令,目的是查看操作過(guò)程中的耗時(shí)情況。當(dāng)導(dǎo)出操作成功后,會(huì)看到如上圖下面三行所示的內(nèi)容,其含義分別是?
real: 實(shí)際用時(shí),即從命令開(kāi)始到命令結(jié)束的總用時(shí),包括所有進(jìn)程執(zhí)行和阻塞等待的時(shí)間
user: 用戶(hù)進(jìn)程的CPU用時(shí)
sys: CPU內(nèi)核中執(zhí)行系統(tǒng)命令調(diào)用花費(fèi)的時(shí)間
??????? 當(dāng)需要使用導(dǎo)出的文件進(jìn)行數(shù)據(jù)恢復(fù)數(shù)據(jù)時(shí)的命令不再區(qū)分全庫(kù)導(dǎo)入還是單表導(dǎo)入,命令都是 "mysql -u登錄名 -p 庫(kù)名 < 文件路徑 文件名 ",成功之后會(huì)在庫(kù)中看到最新的數(shù)據(jù),如下圖所示
2.2、加快dump導(dǎo)數(shù)據(jù)的速度
? ? ? ? 如果MySQL打開(kāi)了二進(jìn)制日志,那么必然會(huì)影響寫(xiě)入速度,因此可以臨時(shí)修改binlog的模式。
三、遇到的問(wèn)題
3.1、磁盤(pán)空間
????????我在使用mysqldump導(dǎo)入單表的數(shù)據(jù)時(shí),發(fā)現(xiàn)很久很久都沒(méi)有動(dòng)靜,其耗時(shí)遠(yuǎn)高于導(dǎo)出數(shù)據(jù)用時(shí),通過(guò)排查發(fā)現(xiàn)原來(lái)是存儲(chǔ)空間滿(mǎn)了。解決方法見(jiàn)我的 VMWare虛擬機(jī)擴(kuò)容并掛載磁盤(pán),此處就不再贅述了。
3.2、字符集編碼
? ? ? ?目前常用的MySQL版本多為5.7和8.0。其中5.7的編碼默認(rèn)為?latin1,而8.0及以后默認(rèn)的utf-8編碼是?utf8mb4。因此需要在互導(dǎo)數(shù)據(jù)之前確認(rèn)一下源頭與目標(biāo)的字符集是否統(tǒng)一。同時(shí)建議新建數(shù)據(jù)庫(kù)最好都使用 utf8mb4 編碼。