數據備份是資料庫運維的生命線。MySQL 生態提供了豐富的備份工具鏈,覆蓋邏輯備份、物理備份、熱備、冷備等多種場景。本文系統梳理主流工具特點與適用場景,助你構建可靠的備份策略。
| 工具 | 類型 | 熱備支持 | 備份速度 | 恢復速度 | 適用場景 |
|---|---|---|---|---|---|
| mysqldump | 邏輯備份 | ✅ (需 --single-transaction) | 慢 | 慢 | 小數據量、跨版本遷移、結構導出 |
| Percona XtraBackup | 物理備份 | ✅ 完全熱備 | 快 | 快 | 大數據量生產環境、增量備份、PITR |
| MySQL Enterprise Backup | 物理備份 | ✅ 完全熱備 | 快 | 快 | 企業級付費支持、壓縮加密 |
| LVM/ZFS 快照 | 文件系統級 | ✅ 近乎零影響 | 極快 | 快 | 雲環境、虛擬化存儲、配合凍結 I/O |
| Replication (主從) | 邏輯複製 | ✅ 異步/半同步 | 實時 | 需重建 | 高可用架構、讀寫分離、異地災備 |
--single-transaction 或 XtraBackup 實現FLUSH TABLES WITH READ LOCK + 拷貝文件# 全庫備份(含存儲過程、觸發器、事件)
mysqldump -uroot -p --all-databases \
--single-transaction --master-data=2 \
--routines --triggers --events \
> full_backup_$(date +%F).sql
# 指定庫備份,排除不需要的表
mysqldump -uroot -p --databases db1 db2 \
--ignore-table=db1.log_table \
--single-transaction \
> partial_backup.sql
# 只導出結構,不含數據
mysqldump -uroot -p --no-data --all-databases > schema_only.sql
--single-transaction:InnoDB 熱備必須,開啟可重複讀事務保證一致性視圖--master-data=2:輸出 CHANGE MASTER 註釋,記錄 Binlog 位置,便於從庫搭建--lock-tables:MyISAM 專用,InnoDB 下請勿使用--quick:流式導出,避免大結果集佔用客戶端內存# 1. 完全備份
xtrabackup --backup --target-dir=/backup/full_20240101 \
--user=root --password=xxx --datadir=/var/lib/mysql
# 2. 準備備份(應用日志,使數據文件一致)
xtrabackup --prepare --target-dir=/backup/full_20240101
# 3. 增量備份(基於上次完全備份的 LSN)
xtrabackup --backup --target-dir=/backup/inc_20240102 \
--incremental-basedir=/backup/full_20240101
# 4. 合併增量到完全備份
xtrabackup --prepare --apply-log-only --target-dir=/backup/full_20240101
xtrabackup --prepare --target-dir=/backup/full_20240101 \
--incremental-dir=/backup/inc_20240102
# 5. 恢復:停止 MySQL,清空 datadir,拷回文件
systemctl stop mysql
rm -rf /var/lib/mysql/*
xtrabackup --copy-back --target-dir=/backup/full_20240101
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql
提示:InnoDB 表務必使用
--single-transaction保證一致性;MyISAM 表無事務支持,只能鎖表備份或停庫冷備。