數據是企業核心資產,備份策略直關業務連續性。MySQL 備份分為物理備份(文件級拷貝)與邏輯備份(SQL 語句導出)兩大流派。本文系統對比兩類方案優劣、適用場景,詳細講解 mysqldump 核心參數、恢復流程、自動化腳本最佳實踐,幫助構建 RPO/RTO 達標的備份體系。
datadir)下的庫子目錄與文件(.frm/.ibd/.MYD/.MYI)FLUSH TABLES WITH READ LOCK)、跨版本/架構/存儲引擎遷移風險大、InnoDB 需配合 innodb_fast_shutdown=0 確保數據頁刷新FLUSH TABLES WITH READ LOCK; → 記錄 SHOW MASTER STATUS Binlog 位置datadir 目標庫目錄到備份介質UNLOCK TABLES;datadir 對應目錄 → 啟動 MySQLCHANGE MASTER TO ... 指向記錄的 Binlog 位置 → START SLAVE| 參數 | 短參數 | 作用 | 推薦場景 |
|---|---|---|---|
--opt | - | 綁定 --quick --add-drop-table --add-locks --extended-insert --lock-tables,最快導出/導入 | 常規全庫備份 |
--quick | -q | 不緩衝結果集,流式寫入 stdout,防大表 OOM | 大表必加 |
--single-transaction | - | InnoDB 熱備份核心:啟動可重複讀事務,無需鎖表,獲取一致性快照 | InnoDB 生產環境**必加** |
--master-data=2 | - | 輸出註釋形式的 CHANGE MASTER TO 含 Binlog 位置,從庫搭建零手工 | 主從搭建 |
--routines --triggers --events | -R --triggers --events | 導出存儲過程/觸發器/事件 | 完整備份必加 |
--hex-blob | - | 二進制列(BLOB/BINARY)以十六進制導出,避免字符集問題 | 含二進制列 |
--compress | -C | 客戶端/服務端壓縮傳輸 | 跨網絡備份 |
--no-data | -d | 僅導出結構(DDL) | 結構遷移 |
--no-create-info | -t | 僅導出數據(DML) | 數據遷移 |
--where | -w | 按條件導出子集 | 分表/歸檔 |
--tab | -T | 每表生成 .sql (DDL) + .txt (數據),需服務端本地權限 | 大規模並行導入 |
# 生產環境 InnoDB 全庫熱備份(推薦標準)
mysqldump -u backup_user -p --host=localhost \
--single-transaction --quick --master-data=2 \
--routines --triggers --events --hex-blob \
--databases db1 db2 > /backup/full_$(date +%F).sql
# 僅導出結構
mysqldump -u root -p --no-data --routines --triggers --events db1 > structure.sql
# 大表分表導出並壓縮
mysqldump -u root -p --single-transaction --quick --where="id BETWEEN 1 AND 1000000" db1 big_table | gzip > big_table_part1.sql.gz
# 1. 創建目標庫
mysqladmin -u root -p create target_db
# 2. 導入(單線程)
mysql -u root -p target_db < full_backup.sql
# 3. 大文件優化:多線程並行導入(需 mydumper/myloader 或自行拆分)
# 4. 從庫同步:檢查備份文件中的 CHANGE MASTER TO 註釋,執行對應命令
| 維度 | 建議 |
|---|---|
| 頻率 | 全量:每日低峰(如 02:00);增量:每小時/每 30 分鐘(Binlog/xtrabackup --incremental) |
| 保留 | 全量保留 7-30 天;增量保留 2-7 天;月度/年度歸檔存冷存儲 |
| 驗證 | **每周隨機抽取 1 庫在測試環境全量恢復驗證**,記錄 RTO |
| 異地 | 備份文件異步複製至異地對象存儲(S3/OSS/COS)或異地機房 |
| 加密 | 傳輸層 TLS + 靜態加密(GPG/KMS) |
| 監控 | 備份任務成功/失敗、耗時、文件大小、校驗和入 Prometheus/Grafana 告警 |
--single-transaction 直接備份 InnoDB → 表鎖導致寫入阻塞、主庫卡頓--quick 導致客戶端 OOM → 必加 -q--master-data=1 (可執行) 與 =2 (註釋) → 從庫搭建報錯**物理備份(XtraBackup)適合大規模、高可用、低 RTO 場景;邏輯備份(mysqldump)適合中小規模、跨版本遷移、粒度恢復、審計合規場景。** 生產建議**雙軌並行**:每日 XtraBackup 全量 + Binlog 增量構建 PITR(時間點恢復)能力;每周 mysqldump 全量作為邏輯審計副本與異地歸檔。核心鐵律:**未經驗證的備份 = 無備份**。