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