MySQL 資料庫實際以目錄與檔案形式儲存於 data 目錄下。若兩台主機 MySQL 版本、架構相同,可直接複製資料庫對應子目錄完成遷移。
data/TestA 目錄完整複製至主機 B 的 data/ 下。優點:速度極快、無需額外工具。缺點:跨版本、跨架構 (如 32/64 位元、不同 OS) 可能失效,且需停機。
語法:mysqldump [OPTIONS] database [tables]。若不指定資料表則導出整個資料庫。
| 參數 | 說明 |
|---|---|
--opt | 啟用 --quick --add-drop-table --add-locks --extended-insert --lock-tables,產生最快匯入效能。 |
--quick | 不緩衝查詢結果直接輸出,適合大資料表。 |
--add-drop-table | 每個 CREATE TABLE 前加上 DROP TABLE IF EXISTS,避免匯入報錯。 |
--extended-insert | 使用多行 INSERT 語法,減少檔案體積與匯入時間。 |
--lock-tables | 備份前鎖定所有資料表,確保一致性。 |
--compress | 客戶端與伺服器傳輸壓縮,適合遠端備份。 |
-h, --host | 指定遠端主機。 |
-u, --user / -p, --password | 連線認證。 |
# 完整備份並壓縮
mysqldump --opt mydb | gzip > mydb_$(date +%F).sql.gz
# 遠端直接同步 (無中間檔案)
mysqladmin -h remote_host create mydb
mysqldump --opt mydb | mysql -h remote_host -C mydb
# 只導出結構
mysqldump --no-data mydb > structure.sql
# 只導出資料
mysqldump --no-create-info mydb > data.sql
mysqladmin create target_db
mysql target_db < backup-file.sql
# 或
zcat backup.gz | mysql target_db
mysqldump。--quick --single-transaction (InnoDB) 避免長時間鎖表。