資料是企業核心資產,備份策略直接決定災難恢復能力。本文對比「檔案級暴力複製」與「官方 mysqldump 邏輯備份」兩大流派,深度解析適用場景、操作細節與避坑指南,助您建立分級備份體系。
TestATestAdata/TestA 目錄至 HostB data/ 下TestAmysqldump [OPTIONS] database [tables...]
不指定表即備份整庫。大庫務必加 --quick 或 --opt(預設開啟),避免全量結果集載入記憶體導致 OOM。
| 參數 | 作用 | 建議場景 |
|---|---|---|
| --add-locks | 每表導出前鎖表,導入時加速插入 | 全量備份導入 |
| --single-transaction | InnoDB 熱備份,不鎖表,保證一致性視圖 | 線上業務零停機備份 |
| --master-data=2 | 輸出 Binlog 位置為註釋,便於從庫搭建 | 主從架構擴容 |
| --routines --triggers --events | 包含存儲過程/觸發器/事件 | 完整邏輯備份 |
| --hex-blob | 二進制欄位十六進制導出,避免編碼問題 | 含 BLOB/二進制資料 |
| --compress | 網路傳輸壓縮 | 遠端備份 |
# 線上 InnoDB 熱備份 + Binlog 座標 + 壓縮
mysqldump -h127.0.0.1 -uroot -p --single-transaction --master-data=2 --routines --triggers --events --hex-blob --compress mydb | gzip > mydb_$(date +%F).sql.gz
# 僅導出結構(不含資料)
mysqldump -d mydb > mydb_structure.sql
# 僅導出指定表
mysqldump mydb table1 table2 > partial.sql
# 全量恢復
mysql -uroot -p mydb < mydb_backup.sql
# 指定時間點恢復(需 Binlog)
mysqlbinlog --start-datetime="2024-01-15 10:00:00" --stop-datetime="2024-01-15 12:00:00" binlog.000001 | mysql -uroot -p mydb
原文片段提到雙主互備配置,補充完整流程:
log-bin、設定唯一 server-idGRANT REPLICATION SLAVE ON *.* TO 'repl'@'對方IP' IDENTIFIED BY 'pwd';CHANGE MASTER TO 指向對方 Binlog 位置| 層級 | 頻率 | 工具/方式 | 保留 | 驗證 |
|---|---|---|---|---|
| 全量邏輯備份 | 每日/每週 | mysqldump + 壓縮 + 加密 | 30 天 | 月度抽樣恢復演練 |
| 增量物理備份 | 每小時/實時 | Percona XtraBackup / MySQL Enterprise Backup | 7 天 | 週度校驗 |
| Binlog 歸檔 | 實時 | rsync/s3 異地同步 | 視 RPO 定 | 定期解析驗證 |
檔案級複製僅供測試環境快速克隆;生產環境必須採用 mysqldump(邏輯)或 XtraBackup(物理)建立規範、可驗證、分級的備份體系。記住:未經恢復演練的備份,等於沒有備份。