mydumper/myloader 是輕量級多線程邏輯備份恢復工具,恢復速度遠超原生 mysql 導入。
# 備份 sakila 庫
mydumper -u leshami -p xxx -B sakila -o /tmp/bak
# 恢復到新庫 restoredb
mysql -uroot -pxxx -e "CREATE DATABASE restoredb;"
myloader -u leshami -p xxx -B restoredb -d /tmp/bak
# 恢復到原庫(需加 -o 覆蓋)
myloader -u leshami -p xxx -o -B sakila -d /tmp/bak
# 刪除表
mysql -uroot -pxxx -e "DROP TABLE sakila.tb;"
# 直接執行備份生成的 schema 和 data 文件
mysql -uroot -pxxx -e "
USE sakila;
SOURCE /tmp/bak/sakila.tb-schema.sql;
SOURCE /tmp/bak/sakila.tb.sql;"
# 驗證
mysql -uroot -pxxx -e "SELECT COUNT(*) FROM sakila.tb;"
# 備份:排除 mysql、test 庫
mydumper -u leshami -p xxx --regex '^(?!(mysql|test))' -o /tmp/bak
# 刪除部分庫模擬災難
mysql -uroot -pxxx -e "DROP DATABASE tempdb; DROP DATABASE sakila;"
# 全量恢復(覆蓋模式)
myloader -u leshami -p xxx -o -d /tmp/bak
| 參數 | 說明 | 默認值 |
|---|---|---|
| -d, --directory | 備份文件目錄 | 必填 |
| -q, --queries-per-transaction | 每事務 INSERT 條數 | 1000 |
| -o, --overwrite-tables | 表存在則 DROP 重建 | 關閉 |
| -B, --database | 指定恢復目標庫(可重命名) | 原庫名 |
| -e, --enable-binlog | 恢復操作寫入 Binlog | 關閉 |
| -t, --threads | 並行線程數 | 4 |
| -v, --verbose | 輸出詳情級別 0-3 | 2 |
myloader 不直接支持單表恢復,**推薦直接 source 對應的 .sql 文件**,靈活且可控。