| 維度 | 分類 | 特點 | 工具 |
|---|---|---|---|
| 邏輯/物理 | 邏輯備份 | SQL文本,可跨版本/跨引擎/可編輯,恢復慢 | mysqldump, mydumper |
| 物理備份 | 數據文件拷貝,速度快、恢復快,版本/引擎/架構強綁定 | xtrabackup, mysqlbackup, 快照 | |
| 熱/溫/冷 | 熱備份 | 業務不中斷,InnoDB支持 | xtrabackup, mysqldump --single-transaction |
| 溫備份 | 只讀鎖,讀不阻塞 | mysqldump --lock-tables | |
| 冷備份 | 停庫拷貝,最簡單最安全 | cp/rsync 數據目錄 | |
| 全量/增量 | 全量/增量 | 全量=基線,增量=Binlog/Redo Log,恢復=全量+重放增量 | mysqldump + Binlog, xtrabackup --incremental |
mysqldump -u root -p --single-transaction --routines --triggers --events \
--master-data=2 db_name > backup_$(date +%F).sql
--single-transaction:InnoDB熱備核心,啟動一致性快照,無阻塞--master-data=2:輸出CHANGE MASTER TO註釋,含Binlog坐標,從庫搭建必備--routines/triggers/events:導出存儲過程/觸發器/事件(默認不導出)--hex-blob:二進制列十六進制導出,避免編碼問題mysqldump -u root -p --databases db1 db2 db3 > multi_db.sql
mysqldump -u root -p --all-databases --single-transaction > full_instance.sql
mysqldump -d db_name > schema_only.sql -- 僅結構
mysqldump -t db_name > data_only.sql -- 僅數據
mysqldump ... | gzip > backup.sql.gz
# 全量備份
xtrabackup --backup --target-dir=/backup/full_$(date +%F) --user=root --password
# 增量備份 (基於LSN)
xtrabackup --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full_20240101
# 準備/恢復
xtrabackup --prepare --target-dir=/backup/full_20240101
xtrabackup --prepare --target-dir=/backup/full_20240101 --incremental-dir=/backup/inc1
# 恢復:停庫 → 清空datadir → xtrabackup --copy-back --target-dir=... → chown mysql:mysql → 啟動
優勢:物理拷貝+Redo Log應用,**恢復速度快10-100倍**,支持流式傳輸、壓縮、加密、並行。
pt-table-checksum 主從一致性、備份後抽樣CHECKSUM TABLEmysqlbinlog --start-datetime --stop-datetime# crontab 示例
0 2 * * * /usr/local/bin/backup_full.sh >> /var/log/backup.log 2>&1
*/30 * * * * /usr/local/bin/backup_binlog.sh >> /var/log/binlog_backup.log 2>&1
備份是數據庫最後防線,**未經驗證的備份等於沒有備份**。建立「備份→驗證→演練→審計」閉環,才是真正的數據資產保障。