MySQL 官方提供的 mysqldump(備份)與 source(恢復)是最基礎、最高兼容的備份恢復工具組合。本文匯總常用參數模板,覆蓋單庫、多庫、單表、全量、定時備份及恢復實戰場景。
| 參數 | 說明 | 常用值 |
|---|---|---|
-u | 用戶名 | -u root |
-p | 密碼(緊跟 -p 無空格,或留空交互輸入) | -pPass123 / -p |
-B | 備份多個數據庫(Databases) | -B db1 db2 |
--all-databases | 備份所有庫 | 無需列名 |
--single-transaction | InnoDB 熱備份關鍵:一致性快照,無鎖表 | 生產必加 |
--master-data=2 | 輸出 CHANGE MASTER TO 註釋(從庫重建用) | 主從架構必加 |
-R | 包含存儲過程/函數/觸發器 | 建議常開 |
--triggers | 包含觸發器(默認開啟) | --triggers |
--events | 包含事件調度器 | --events |
--hex-blob | 二進制列用十六進制導出(避免編碼問題) | 含 BLOB 必加 |
--quick / -q | 大表分批讀取,不緩存全表到內存 | 大表必加 |
--compress | 客戶端-服務端傳輸壓縮 | 跨網段備份加速 |
mysqldump -u root -p -B --single-transaction --master-data=2 -R --events --hex-blob --quick \
my_database > /backup/mysql/my_database_$(date +%F_%H-%M).sql
mysqldump -u root -p -B db1 db2 db3 --single-transaction -R > /backup/mysql/multi_db_$(date +%F).sql
mysqldump -u root -p my_database table1 table2 > /backup/mysql/tables_$(date +%F).sql
mysqldump -u root -p --all-databases --single-transaction --master-data=2 -R --events \
> /backup/mysql/full_$(date +%F_%H-%M).sql
mysqldump -u root -p -d my_database > /backup/mysql/structure_$(date +%F).sql
mysqldump -u root -p -t my_database > /backup/mysql/data_only_$(date +%F).sql
mysqldump -h 10.0.0.50 -u root -p --single-transaction --quick my_db | gzip > /backup/mysql/remote_my_db_$(date +%F).sql.gz
mysql -u root -p
# 進入後
mysql> source /backup/mysql/my_database_2024-01-15_02-30.sql;
優點:可見導入進度、錯誤即時顯示、支持大文件流式執行。
# 未壓縮文件
mysql -u root -p my_database < /backup/mysql/my_database.sql
# 壓縮文件(解壓管道導入)
gunzip < /backup/mysql/my_database.sql.gz | mysql -u root -p my_database
sed/awk 切分 SQL 文件,或用 mysqldump 導出時加 -t 只導數據,配合 REPLACE INTO/INSERT IGNORE 導入。mysql -u root -p --force my_database < backup.sql(慎用,可能掩蓋數據損壞)。| 策略 | 頻率 | 保留 | 驗證 |
|---|---|---|---|
| 全量備份 | 每日 1 次(低峰期) | 7-30 天 | 每月隨機抽取 1 次全量恢復演練 |
| 增量備份 | 每小時/每 30 分鐘 | 7 天 | 配合 Binlog 點位恢復測試 |
| 異地備份 | 實時同步至異地存儲 | 永久/合規要求 | 半年一次異地拉起演練 |
mysqldump + source 是 MySQL 備份恢復的「瑞士軍刀」:參數要全(單事務、主數據、存儲程序、事件、十六進制)、壓縮要早(管道 gzip)、恢復要驗(source 交互、定期演練)。將上述模板寫入備份腳本,納入監控告警,才是真正的生產就緒。