原理: MyISAM 引擎以檔案儲存,資料庫對應目錄,表對應 .frm/.MYD/.MYI 檔案。
datadir/TestA/ → 目標伺服器 datadir/。FLUSH TABLES。優點: 極快、無 SQL 解析開銷、保留完整索引統計資訊。
缺點: 需停機、同版本/同架構/同引擎、InnoDB 共享表空間 (ibdata) 需整體遷移、權限表需同步。
mysqldump [OPTIONS] database [tables...] > backup.sql
不指定表則備份整庫。大型資料庫必加 --quick 或 --opt (預設開啟),避免全量結果集載入記憶體導致 OOM。
| 參數 | 作用 |
|---|---|
--opt | 組合:--quick --add-drop-table --add-locks --extended-insert --lock-tables (最快匯入) |
--quick | 不緩衝查詢結果,直接串流輸出 |
--add-drop-table | 建表前加 DROP TABLE,重建無衝突 |
--extended-insert | 多值 INSERT,大幅縮減體積與匯入時間 |
--lock-tables | 備份期間鎖表 (MyISAM 需要),InnoDB 建議 --single-transaction |
--single-transaction | InnoDB 一致性熱備份 (無需鎖表),需啟用 --master-data 記錄 binlog 位置 |
--no-data / -d | 僅導出結構 |
--no-create-info / -t | 僅導出資料 |
--where='cond' | 條件篩選備份 (需引號) |
-h/-u/-p/-P/-S | 連線參數 |
-T /path | 生成 .sql (結構) + .txt (資料) 分離檔案,需同機器 |
mysqldump --opt --single-transaction --master-data=2 db_name | mysql -h remote_host -C db_name
管道串流傳輸,無中間檔案,-C 啟用壓縮協議。
mysqladmin create target_db
mysql target_db < backup.sql
| 場景 | 推薦方案 |
|---|---|
| 大型 MyISAM 庫、可停機維護窗口 | 檔案級冷備份 (極速) |
| InnoDB 線上業務、需時間點恢復 | mysqldump --single-transaction + binlog |
| 異構遷移 (版本/OS/引擎不同) | mysqldump 邏輯備份 |
| 定期自動化備份 | mysqldump + 壓縮 + 異地存儲 |