MySQL 備份兩大主流工具 mysqlhotcopy(物理熱備份)與 mysqldump(邏輯備份)的原理、適用場景、優缺點對比與實戰命令範例。
# 備份指定資料庫 mysqlhotcopy -u root -p'password' db1 db2 /backup/dir # 備份所有資料庫 mysqlhotcopy -u root -p'password' --regexp=".*" /backup/dir
# 基礎備份(含 Blob 處理) mysqldump -u root -p'password' --hex-blob db1 > db1.sql # 全庫備份 mysqldump -u root -p'password' --all-databases > all.sql # 單表備份 mysqldump -u root -p'password' db1 table1 > table1.sql # 遠端直接同步(無中間檔) mysqladmin -h remote_host create db1 mysqldump --opt db1 | mysql -h remote_host db1 # SSH 通道遠端同步 ssh remote_host mysqladmin create db1 mysqldump --opt db1 | ssh remote_host mysql db1
--hex-blob:二進位欄位以十六進位編碼,避免 SQL 檔案格式錯誤,還原 100% 正確。--opt:啟用 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset 組合,預設開啟。--single-transaction(InnoDB 專用):一致性快照備份,**不鎖表**,生產環境首選。--master-data=2:輸出 CHANGE MASTER 註解,便於從庫搭建。| 維度 | mysqlhotcopy | mysqldump |
|---|---|---|
| 速度 | 極快(檔案級複製) | 較慢(SQL 解析/生成) |
| 引擎支援 | MyISAM/Archive 只有 | 所有引擎 |
| 一致性 | 鎖表保證 | --single-transaction (InnoDB) / 鎖表 (MyISAM) |
| 可移植性 | 低(同版本/同架構) | 高(純 SQL 文字) |
| InnoDB 適用 | ❌ | ✅ (--single-transaction) |
| 壓縮/傳輸 | 需額外 tar/gzip | 管道直接 gzip/ssh |
mysqlhotcopy,配合 cron 定時備份。mysqldump --single-transaction 或 xtrabackup(參見文章 247001)。mysqldump | gzip | ssh 管道流式傳輸。cp -r /var/lib/mysql),極易導致資料不一致、損壞。