兩大備份流派
| 維度 | 物理備份(檔案複製) | 邏輯備份 |
| 原理 | 直接複製資料目錄檔案 | 匯出 SQL 語句重建資料 |
| 工具 | cp/rsync/xtrabackup/快照 | mysqldump/mydumper |
| 速度 | 極快(受限於磁碟 I/O) | 較慢(需解析/執行 SQL) |
| 跨版本/架構 | 困難(需相同版本、架構、配置) | 優(純文字 SQL,高相容) |
| 單表/單庫還原 | 困難 | 容易(編輯 SQL 檔即可) |
| 一致性 | 需鎖表/快照/熱備工具 | --single-transaction 熱備 |
| 檔案大小 | 含索引、空洞,較大 | 可壓縮,通常較小 |
方法一:檔案複製法(僅限特定條件)
適用條件
- MySQL 版本、編譯參數、配置完全一致
- 資料表引擎相同(MyISAM 較安全,InnoDB 需注意 tablespace)
- 可停機或使用 LVM/ZFS 快照
操作步驟
# 來源主機
systemctl stop mysqld
rsync -av /var/lib/mysql/ /backup/mysql_$(date +%F)/
systemctl start mysqld
# 目標主機
systemctl stop mysqld
rsync -av /backup/mysql_2023-01-01/ /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld
風險提醒
- InnoDB
ibdata1、ib_logfile* 必須完整複製
- 若啟用
innodb_file_per_table,.ibd 檔案需與表定義匹配
- 不同 CPU 架構(x86 vs ARM)不可直接複製
- 生產環境強烈建議使用專業工具而非手動複製
方法二:mysqldump 官方標準備份
核心參數詳解
| 參數 | 作用 | 建議 |
--single-transaction | InnoDB 熱備份關鍵,一致性快照不鎖表 | 生產必加 |
--routines --triggers --events | 包含預存程序/觸發器/事件 | 完整備份必加 |
--master-data=2 | 輸出 CHANGE MASTER 語句(註解形式),記錄 binlog 位置 | 複寫環境必加 |
--quick | 逐行讀取,避免大結果集佔記憶體 | 大表必加 |
--compress | 客戶端-伺服器傳輸壓縮 | 遠端備份建議 |
--default-character-set=utf8mb4 | 指定字元集避免亂碼 | 統一加上 |
生產環境標準指令
mysqldump --single-transaction --routines --triggers --events \
--master-data=2 --quick --compress \
--default-character-set=utf8mb4 \
-u backup_user -p \
--databases db1 db2 | gzip > full_backup_$(date +%F_%H-%M).sql.gz
還原操作
# 建立資料庫
mysql -u root -p -e "CREATE DATABASE db1 CHARACTER SET utf8mb4;"
# 還原(解壓管道直導)
zcat full_backup_2023-01-01_02-00.sql.gz | mysql -u root -p db1
# 或進入 mysql 執行
mysql -u root -p db1 < full_backup.sql
進階備份策略
- 分層備份:每日全備 + 每小時增量(binlog)
- 並行備份:
mydumper 多執行緒並行,大庫備份快 5-10 倍
- 物理熱備:Percona XtraBackup 不鎖表、支援增量、還原快,TB 級首選
- 雲端快照:AWS EBS/RDS 快照、GCP Persistent Disk Snapshot、阿里雲快照
備份驗證與演練
- 自動化腳本:備份完成 → 校驗檔案大小/檢查碼 → 發送通知
- 定期(月/季)在測試環境完整還原驗證
- 建立 RTO/RPO 目標:RTO(恢復時間目標)、RPO(恢復點目標)
- 異地備份:至少保留一份異地副本(跨可用區/跨區域)
選擇建議
| 場景 | 推薦方案 |
| 中小型庫(< 100GB)、需跨版本遷移 | mysqldump + 壓縮 |
| 大型庫(> 500GB)、極速還原要求 | XtraBackup 物理熱備 |
| 雲端託管資料庫 | 雲廠商自動備份 + 手動快照 |
| 高可用複寫架構 | 從庫備份 + Binlog 歸檔 |
「備份不演練,等於沒備份。」建立標準化流程、自動化執行、定期驗證,才是資料安全的真正保障。