資料遺失原因:硬體故障、人為誤操作、軟體 Bug、惡意破壞、自然災害。完整備份體系需覆蓋全量基線、增量日誌、異地副本、定期演練四大支柱。
| 維度 | mysqldump (邏輯備份) | 物理拷貝 (xtrabackup/cp/tar) |
|---|---|---|
| 原理 | SQL 語句導出 | 資料檔案直接複製 |
| 一致性 | --single-transaction 熱備 | 需鎖表/停庫或 xtrabackup 熱備 |
| 跨版本/跨架構 | 支援 (SQL 標準) | 僅限相同版本、相同架構、相同引擎 |
| 速度 | 慢 (GB 級分鐘~小時) | 快 (流式複製、並行、壓縮) |
| 檔案大小 | 大 (文本、可壓縮 70%+) | 小 (原始頁面、可壓縮) |
| 還原靈活性 | 高 (可篩選表/行/WHERE) | 低 (通常整庫/整表) |
| 工具 | mysqldump, mydumper | xtrabackup, mysqlbackup, cp/tar/rsync |
# 標準熱備命令
mysqldump -u backup -p \
--single-transaction --routines --triggers --events \
--master-data=2 --flush-logs --hex-blob \
--quick --compress \
dbname | gzip > /backup/dbname_$(date +%F).sql.gz
# 命名規範:dbname_YYYY-MM-DD_HHMM.sql.gz
# 保留策略:每日保留 30 天、每週保留 12 週、每月保留 12 月
--master-data=2:輸出 Binlog 位置註解,支援時間點恢複 (PITR)。--flush-logs:輪轉 Binlog,使增量起點清晰對齊。rsync -avz /backup/ user@offsite:/backup/ 或上傳至 S3/OSS。# 完全備份
xtrabackup --backup --target-dir=/backup/full_$(date +%F) --user=backup --password=pass
# 增量備份 (基於上次完全/增量)
xtrabackup --backup --target-dir=/backup/inc_$(date +%F) \
--incremental-basedir=/backup/full_2024-01-15
# 準備 (合併增量、應用 Redo Log)
xtrabackup --prepare --target-dir=/backup/full_2024-01-15
xtrabackup --prepare --apply-log-only --target-dir=/backup/full_2024-01-15 \
--incremental-dir=/backup/inc_2024-01-16
# 還原 (需停止 MySQL、清空 datadir)
xtrabackup --copy-back --target-dir=/backup/full_2024-01-15
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
log_bin = mysql-bin、binlog_format = ROW、expire_logs_days = 7 (或更長)。--flush-logs --master-data=2 記錄基點。# 定期複製 Binlog (或用 mysqlbinlog 遠程流式)
mysqlbinlog --read-from-remote-server --host=localhost --user=backup --password=pass \
--raw --stop-never mysql-bin.000123 > /backup/binlog/ &
# 或定期 cp /var/lib/mysql/mysql-bin.* /backup/binlog/
mysqlbinlog --start-position=XXX --stop-datetime='2024-01-15 14:30:00' \
/backup/binlog/mysql-bin.000123 | mysql -u root -p
sed/awk 或 pt-table-sync 提取單表 SQL 片段導入。SELECT * INTO OUTFILE 導出目標表 → 導入生產庫。mysqlbinlog --database=db --table=t1 過濾單表事件 (ROW 格式支援較好)。| 級別 | 指標 | 驗證方式 |
|---|---|---|
| L1 基礎 | 每日全量備份成功率 100% | 監控告警 + 日誌巡檢 |
| L2 進階 | Binlog 連續無縫隙、異地副本同步延遲 < 5 分鐘 | Binlog 序號連續性檢查、rsync 狀態監控 |
| L3 高階 | 季度恢複演練 100% 成功、RTO < 4h、RPO < 5min | 實戰演練記錄、計時、資料核對 |
| L4 專家 | 自動化故障切換、備份加密、合規審計、跨雲容災 | 架構評審、滲透測試、合規報告 |
mydumper/myloader (多線程、一致性、壓縮)。xtrabackup (Percona)、mysqlbackup (Oracle MEE)。Backup Ninja、Percona Monitoring and Management (PMM)、ClusterControl。備份無小事,未經驗證的備份 = 無備份。建立「全量+增量、本地+異地、自動+演練」四維體系,將 RTO/RPO 納入 SLA 考核,讓備份從「後台任務」升級為「核心資產保護工程」。記住:資料價值 = 恢複速度 × 資料完整性 × 業務連續性。