本文基於 MySQL Reference Manual Chapter 7,系統梳理備份類型分類、四大備份方法、策略制定、mysqldump 進階用法、時間點恢復 (PITR)、MyISAM 維護與自動化建議,構建企業級備份知識體系。
| 維度 | 物理備份 | 邏輯備份 |
|---|---|---|
| 內容 | 直接複製資料檔案/目錄 | SQL 語句 (CREATE/INSERT) 或文字檔 |
| 速度 | 快 (無轉換開銷) | 慢 (需查詢轉換) |
| 輸出大小 | 小 | 大 |
| 粒度 | 檔案/頁級 | 資料庫/表/列級 |
| 適用場景 | 大型、關鍵、繁忙資料庫 | 小型、結構遷移、跨版本 |
| 工具 | mysqlbackup、cp/rsync、LVM 快照 | mysqldump、SELECT INTO OUTFILE |
| MEMORY 表 | 不支援 | 支援 |
| 可移植性 | 需相同硬體/OS/版本 | 高 (純 SQL) |
mysqldump 可遠程導出本地存;mysqlhotcopy 僅本地FLUSH LOGS 切換)# 邏輯備份標準範例 mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > full_backup.sql # --single-transaction: InnoDB 一致性快照 # --flush-logs: 切換 binlog,標記增量起點 # --master-data=2: 註釋記錄 binlog 位置 (CHANGE MASTER TO...)
mysqlhotcopy:Perl 腳本,FLUSH TABLES + LOCK TABLES + cp/scp,僅支援 MyISAM/ARCHIVE
FLUSH TABLES tbl_list WITH READ LOCK 後複製 .frm/.MYD/.MYI。InnoDB 不適用 (資料可能在記憶體/共享表空間)SELECT * INTO OUTFILE 或 mysqldump --tab# 週日 13:00 全備 (InnoDB 熱備) mysqldump --single-transaction --flush-logs --master-data=2 --all-databases > backup_sun_1pm.sql # 週一 13:00 增量備份 (切換 binlog) mysqladmin flush-logs # 產生 bin.000007 cp bin.000007 /backup/incr_mon_1pm.bin # 週二 13:00 增量備份 mysqladmin flush-logs # 產生 bin.000008 cp bin.000008 /backup/incr_tue_1pm.bin # 週三 08:00 崩潰恢復流程 # 1. 還原全備 mysql < backup_sun_1pm.sql # 2. 重放增量 binlog mysqlbinlog bin.000007 bin.000008 | mysql # 3. 若有最新 binlog (bin.000009) 繼續重放 mysqlbinlog bin.000009 | mysql
| 場景 | 指令 |
|---|---|
| 跨伺服器遷移 | mysqldump --databases db1 | mysql --host=remote -C db1 |
| 分離結構與資料 | mysqldump --no-data --routines --events db > struct.sqlmysqldump --no-create-info db > data.sql |
| 升級相容性測試 | 導出結構 → 目標版本導入 → 檢查警告 → 導入資料 |
| 導出特定資料 | mysqldump -w "id>100" db tbl > subset.sql |
# 1. 基於時間 mysqlbinlog --stop-datetime="2024-01-15 10:00:00" bin.000001 | mysql # 2. 基於 Event 位置 (更精確) mysqlbinlog --stop-position=368312 bin.000001 | mysql mysqlbinlog --start-position=368315 bin.000001 | mysql
myisamchk:離線檢查/修復/優化 (-r 修復、-q 快速、--safe-recover 安全模式)CHECK/REPAIR/OPTIMIZE/ANALYZE TABLE-r -q) → 困難修復 (重建索引) → 極困難 (需 .frm 備份)35 0 * * 0 myisamchk --fast --silent /datadir/*/*.MYIlog-bin) —— PITR 前提--single-transaction 熱備CHECKSUM TABLE、抽樣查詢、定期演練恢復建立標準化、自動化、可驗證的備份體系,是資料資產安全的最後防線。