熱拷貝 是指在 MySQL 服務持續運行狀態下,直接複製資料檔案進行備份。它與 mysqldump 熱備份的最大差異在於:
mysqldump 邏輯備份:輸出 SQL 敘述,適用所有儲存引擎,但速度較慢。mysqlhotcopy 物理備份:直接複製 .frm、.MYD、.MYI 檔案,速度極快,僅支援 MyISAM 引擎。重要限制:
mysqlhotcopy無法備份 InnoDB 表格。生產環境若以 InnoDB 為主,請改用mysqldump --single-transaction或 Percona XtraBackup。
mysqlhotcopy 為 Perl 腳本,需安裝 DBI 模組:
yum install perl-DBI perl-DBD-MySQL -y
# 語法:mysqlhotcopy -u <用戶> -p<密碼> <資料庫名> <備份目標目錄> mysqlhotcopy -u root -p123456 larrydb /databackup/
成功輸出範例:
Flushed 2 tables with read lock (`larrydb`.`class`, `larrydb`.`stu`) in 0 seconds. Locked 0 views () in 0 seconds. Copying 5 files... Copying indices for 0 files... Unlocked tables. mysqlhotcopy copied 2 tables (5 files) in 0 seconds (0 seconds overall).
# 1. 刪除資料表(模擬災難) mysql -uroot -p123456 -e "DROP TABLE larrydb.class, larrydb.stu;" # 2. 還原:直接複製檔案回資料目錄 cp -arvf /databackup/larrydb /usr/local/mysql/data/ # 3. 若為 InnoDB 表(class),需額外匯入 .sql 結構檔 mysql -uroot -p123456 < larrydb.sql

| 表格 | 引擎 | 熱拷貝結果 | 說明 |
|---|---|---|---|
| stu | MyISAM | ✅ 完整還原 | .MYD/.MYI 直接複製即可 |
| class | InnoDB | ❌ 僅結構 | 資料需透過 .sql 匯入 |
總結:
mysqlhotcopy雖快但侷限於 MyISAM。理解其原理(FLUSH TABLES WITH READ LOCK + 檔案複製)有助於掌握物理備份本質,但生產環境請優先評估 XtraBackup 等更完整的解決方案。