MySQL 備份分為物理備份(文件級拷貝)與邏輯備份(SQL 文本導出)兩大流派。本文深度對比 mysqlhotcopy 與 mysqldump 的適用場景、優缺點、實操命令,幫助選型最適合業務的備份策略。
# 基本語法
mysqlhotcopy -u root -p'RootPass' db1 db2 ... /backup/dir/
# 備份所有庫
mysqlhotcopy -u root -p'RootPass' --regexp=".*" /backup/dir/
FLUSH TABLES WITH READ LOCK → 拷貝 → UNLOCK TABLES,無需停庫。--flushlog 刷新 Binlog,備份文件與 Binlog 位點對齊,支援增量恢復。FILE、RELOAD、LOCK TABLES 權限。# 單庫導出(含 Blob 十六進制編碼,避免特殊字符破壞 SQL)
mysqldump -u root -p'RootPass' --hex-blob db1 > db1.sql
# 全庫導出
mysqldump -u root -p'RootPass' --all-databases --hex-blob > all.sql
# 直接跨機器遷移(管道流式,無中間文件)
mysqldump -u root -p'RootPass' --opt db1 | mysql -h remote_host -u root -p'Pass' db1
# SSH 隧道遠程導入
ssh remote_host "mysqladmin create db1"
mysqldump -u root -p'RootPass' --opt db1 | ssh remote_host "mysql db1"
| 參數 | 作用 | 建議 |
|---|---|---|
| --opt | 組合啟用:--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset | ✅ 生產必加 |
| --hex-blob | BLOB/二進制列以 0x 十六進制導出 | ✅ 含 Blob 必加 |
| --single-transaction | InnoDB 熱備份:啟動事務一致性視圖,不鎖表 | ✅ InnoDB 必加 |
| --master-data=2 | 輸出文件含 CHANGE MASTER 位點註釋 | ✅ 搭建從庫必加 |
| --routines --triggers --events | 導出存儲過程/觸發器/事件 | ✅ 完整遷移必加 |
| --no-data | 僅導出結構 | 按需 |
| 維度 | mysqlhotcopy | mysqldump |
|---|---|---|
| 引擎支持 | MyISAM/Archive 僅 | 全引擎 |
| 備份速度 | 極快(GB/s 級) | 較慢(受 SQL 解析、網絡限制) |
| 恢復速度 | 極快(拷貝回去) | 慢(需執行 SQL) |
| 跨版本/跨平台 | 不支持 | 完美支持 |
| 遠程備份 | 不支持 | 原生支持 |
| 單表恢復 | 需手動拷貝文件 | 天然支持(按表導出/導入) |
| 一致性保證 | 全局讀鎖瞬間一致 | --single-transaction 事務視圖一致 |
mysqlhotcopy 首選,速度優勢壓倒性。mysqldump --single-transaction 或 XtraBackup 物理熱備。mysqldump SQL 文本可讀、可編輯、可版本控制。直接拷貝數據目錄(cp/rsync/tar)已被廢棄:無法保證一致性、InnoDB 表空間極易損壞、無 Binlog 位點、無法單表恢復。請在所有 SOP 中移除此方式。
建立「全量周備 + 增量日備 + Binlog 實時歸檔 + 季度恢復演練」的立體備份體系,才是數據安全的終極保障。