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