數據庫備份是災難恢復的最後防線。本文系統對比兩大備份方式優劣,制定備份命名、壓縮、異地、過期、驗證五大原則,並闡述完整備份+二進制日誌實現時間點恢復(PITR)的核心機制。
| 維度 | mysqldump | 文件直接拷貝 |
|---|---|---|
| 運作層面 | 通過 MySQL Server 協作 | 繞過 Server,文件系統級 |
| 一致性保證 | 自動處理(可加鎖) | 需手動鎖表或停服務 |
| 速度 | 較慢 | 極快(磁碟順序讀寫) |
| 可移植性 | 跨架構/版本遷移 | 僅 MyISAM 支援跨架構 |
| 輸出格式 | SQL 文本 | 二進制數據文件 |
# 必須確保拷貝期間表不被修改 FLUSH TABLES WITH READ LOCK; -- 全局讀鎖 # cp -r /var/lib/mysql/db /backup/ UNLOCK TABLES;
若不加鎖,備份文件處於不一致狀態,恢復無意義。
log-bin 記錄所有變更,實現增量備份與 PITRdbname_YYYY-MM-DD.sql,避免 backup1/2 混淆mysqldump | gzip,大幅減少磁碟佔用# 1. 從完全備份恢復
mysql dbname < backup_dbname_2024-01-15.sql
# 2. 重放二進制日誌(從備份時間點到故障前)
mysqlbinlog --start-datetime="2024-01-15 02:00:00" \
--stop-datetime="2024-01-15 14:30:00" \
mysql-bin.000123 | mysql dbname
術語對應:完全備份 = Full Dump,二進制日誌 = Incremental Dump。
備份技術可直接用於:主從搭建、測試環境克隆、版本升級驗證、機房遷移。