一篇學(xué)會如何使用 Myloader 恢復(fù)數(shù)據(jù)
前言
上篇文章介紹了 mydumper 備份工具的使用方法,文中有提到 mydumper 和 myloader 是一對相互的命令,即 mydumper 負責備份(導(dǎo)出),myloader 負責恢復(fù)(導(dǎo)入)。那么 myloader 又該如何使用呢?本篇文章我們一起來看下。
1. myloader 介紹
myloader 是與 mydumper 工具配合使用的多線程備份恢復(fù)工具,可以直接以 mydumper 輸出文件為輸入,恢復(fù)備份數(shù)據(jù)。主要用于將 dump 出來的 sql 文件以并行的方式進行恢復(fù)。
執(zhí)行 myloader --help 可以查看幫助信息,同樣的,我們來看下 myloader 相關(guān)參數(shù):
參考官方介紹,以下簡要說明部分常用的參數(shù)。
我們知道,myloader 也是多線程的,面對 mydumper 備份出來的那么多文件,恢復(fù)的時候是如何順序執(zhí)行的呢?各個線程是如何工作的?myloader 具體工作流程可參考下圖:
即首先會創(chuàng)建一個主線程,主線程負責主邏輯,子線程為 worker 線程,執(zhí)行具體恢復(fù)數(shù)據(jù)任務(wù),子線程執(zhí)行完成后再由主線程創(chuàng)建函數(shù)、存儲過程、事件及視圖、觸發(fā)器這些對象。
2. myloader 恢復(fù)示例
我們以上篇文章備份出的文件為例,來看下如何用 myloader 進行恢復(fù):
- # 恢復(fù)備份文件中的全部 若表已存在則先刪除
- myloader -u root -p 123456 -o -d /backups/all3
- # 從全備中恢復(fù)指定庫
- myloader -u root -p 123456 -s db1 -o -d /backups/all3
- # 將某個數(shù)據(jù)庫備份還原到另一個數(shù)據(jù)庫中(目標庫不存在則會新建)
- myloader -u root -p 123456 -B recover_db1 -s db1 -o -d /backups/all3
- myloader -u root -p 123456 -B recover_db1 -o -d /backups/db1
- # 恢復(fù)時開啟binlog(有備庫的時候需要開啟)
- myloader -u root -p 123456 -e -o -d /backups/db1
- # 無法直接還原單表 只能找到單表的sql文件 進入命令行source 執(zhí)行
- source db1.tb1-schema.sql 還原表結(jié)構(gòu)
- source db1.tb1.sql 還原表數(shù)據(jù)
可以看到使用 myloader 恢復(fù)數(shù)據(jù)還是很方便的,并且有多個參數(shù)可選,恢復(fù)場景也更加靈活。比如我們可以從全備中恢復(fù)出單個庫,或者將備份恢復(fù)到一個新庫中等等,這些場景基本能覆蓋日?;謴?fù)需求。雖然不支持單表恢復(fù),但我們可以到文件夾中輕松找到該表的建表及插數(shù)據(jù)的 sql 腳本,進入 mysql 命令行中再執(zhí)行單個腳本也能實現(xiàn)恢復(fù)單表的需求。
不過要注意的是 myloader 恢復(fù)時默認不開啟 binlog,這雖然可以加快恢復(fù)速度,但是當存在從庫時,一定要注意使用 -e 參數(shù)來打開 binlog 記錄。