實驗環境:WinNT 4.0 + MySQL 3.22.34 + phpMyAdmin 2.1.0。
操作:將 Host A 的 C:\MySQL\data\TestA 整個目錄複製到 Host B 同位置,重整 phpMyAdmin 即可見資料庫出現並可正常查詢修改。
結論:MyISAM 表在同版本、同架構、同 OS、服務完全停止條件下,直接複製目錄可行。但不具備官方支援承諾,風險自負。
# 基本語法
mysqldump [OPTIONS] database [tables]
# 生產環境黃金參數組合
mysqldump --opt --single-transaction --master-data=2 -u root -p db_name > backup.sql
| 參數 | 說明 |
|---|---|
--opt | 綜合最佳化(quick, add-drop-table, add-locks, extended-insert, lock-tables) |
--single-transaction | InnoDB 熱備份關鍵,利用 MVCC 不鎖表 |
--master-data=2 | 輸出 Binlog 座標註釋,利於建 Slave |
--add-drop-table | 還原前先 DROP,避免「表已存在」錯誤 |
--quick | 逐行串流,防大表 OOM |
--compress | 跨網路傳輸壓縮 |
-d / --no-data | 僅導結構 |
-t / --no-create-info | 僅導資料 |
-w / --where | 條件過濾導出 |
# 建立目標庫並還原
mysqladmin -u root -p create target_db
mysql -u root -p target_db < backup.sql
# 遠端遷移(管道直連,無落地檔)
mysqldump --opt db_name | mysql -h remote_host -u user -p db_name
ibdata*、ib_logfile*)。日常備份:mysqldump --single-transaction + 壓縮 + 異地同步。
大規模遷移/災難恢復演練:配合 Percona XtraBackup(InnoDB 物理熱備)或檔案系統快照(LVM/ZFS/EBS)。