--single-transaction + `FLUSH TABLES WITH READ LOCK` 協調# 依賴 apt-get update && apt-get install -y \ libglib2.0-dev libmysqlclient-dev zlib1g-dev libpcre3-dev g++ cmake # 編譯安裝最新版(GitHub Release) cd /tmp wget https://github.com/mydumper/mydumper/releases/download/v0.12.1/mydumper-0.12.1.tar.gz tar -zxvf mydumper-0.12.1.tar.gz cd mydumper-0.12.1 cmake . make && make install # 驗證 mydumper --version myloader --version
| 參數 | 說明 | 建議值 |
|---|---|---|
-B, --database | 備份庫名 | 必填 |
-T, --tables-list | 指定表(逗號分隔) | 可選 |
-o, --outputdir | 輸出目錄 | 必填 |
-t, --threads | 線程數 | CPU 核心數 × 2 |
-c, --compress | 壓縮輸出 (gzip) | 建議開啟 |
-r, --rows | 按行數分塊導出大表 | 大表 500000 |
-k, --no-locks | 不加鎖(需 --single-transaction) | 生產環境建議 |
-b, --binlogs | 導出 Binlog | PITR 需求開啟 |
-D, --daemon | 守護進程模式 | 持續備份場景 |
--regex | 正則匹配表名 | 批量庫/表 |
結論:提升倍數受限於 **磁碟 IO、CPU、網路、表結構**。SSD + 高核心 CPU 效果最明顯。
/backup/
├── metadata # 備份時間、Binlog 位置
├── db_name.table1-schema.sql # 表結構
├── db_name.table1.sql # 表資料
├── db_name.table2-schema.sql
├── db_name.table2.sql
└── binlog_snapshot/ # --binlogs 產出
├── mysql-bin.000001
└── mysql-bin.000002
# 建庫 mysql -u root -p -e "CREATE DATABASE db_name;" # 多線程還原(-o 覆蓋既有表) myloader -u root -p -h 127.0.0.1 -B db_name -d /backup/db_name -t 8 -o
#!/bin/bash
# /usr/local/bin/mydumper_backup.sh
set -euo pipefail
DB_USER="backup_user"
DB_PASS="$(cat /etc/mysql/backup_pass)"
DB_HOST="127.0.0.1"
DB_NAME="prod_db"
OUT_DIR="/backup/mydumper/$(date +%F)"
THREADS=8
LOG="/var/log/mydumper_backup.log"
mkdir -p "$OUT_DIR"
exec >> "$LOG" 2>&1
echo "[$(date)] START backup $DB_NAME -> $OUT_DIR"
mydumper -u "$DB_USER" -p "$DB_PASS" -h "$DB_HOST" \
-B "$DB_NAME" -o "$OUT_DIR" -t "$THREADS" -c -k -b \
--long-query-guard 60 --kill-long-queries
echo "[$(date)] END backup"
# 保留 7 天
find /backup/mydumper -type d -mtime +7 -exec rm -rf {} \;
# 每天 02:30 30 2 * * * /usr/local/bin/mydumper_backup.sh
sha256sum $OUT_DIR/*.sql.gz > $OUT_DIR/manifest.sha256myloader -o 驗證mydumper 是大庫備份的標準答案。掌握多線程參數調優、輸出結構理解、Daemon 模式持續備份、myloader 高速還原、監控驗證閉環,構建企業級 MySQL 備份體系。配合 xtrabackup(物理備份)雙軌並行,實現 RPO=0、RTO<分鐘 的高可用保障。