覆蓋命令列 source、mysqldump 管道串流、圖形化 phpMyAdmin 三種主流方式,滿足不同場景需求。
# 1. 進入 mysql 互動模式
mysql -u root -p
# 2. 若檔案含 CREATE DATABASE,直接匯入
mysql> SOURCE /path/to/dump.sql;
# 3. 若檔案無 CREATE DATABASE,先建庫/切庫
mysql> CREATE DATABASE target_db;
mysql> USE target_db;
mysql> SOURCE /path/to/dump.sql;
關鍵細節:
SET autocommit=0; SET unique_checks=0; SET foreign_key_checks=0; 再 SOURCE,最後 COMMIT;。SET NAMES utf8mb4) 與匯出檔案編碼一致。# 本地庫間同步
mysqldump -u root -p --single-transaction --routines --triggers --events \
--master-data=2 --hex-blob --default-character-set=utf8mb4 src_db \
| mysql -u root -p dst_db
# 遠端同步 (生產 → 測試/開發)
mysqldump -h prod_host -u root -p --single-transaction --routines --triggers --events \
--master-data=2 --hex-blob --default-character-set=utf8mb4 --compress src_db \
| mysql -h test_host -u root -p dst_db
優勢:無磁碟 I/O 瓶頸、即時同步、可配合 pv 顯示進度、支援壓縮傳輸 (--compress / gzip 管道)。
Export 標籤 → 選 Quick 或 Custom (勾選 routines/triggers/events、輸出壓縮 gzip) → Go 下載 .sql.gz。Import 標籤 → 選檔案 → 字元集選 utf8mb4 → Go。限制:受限於 PHP upload_max_filesize、post_max_size、max_execution_time,大檔案 (>50MB) 易超時/失敗,請改用命令列。
--default-character-set=utf8mb4 (mysqldump) / phpMyAdmin 選 utf8mb4。SET NAMES utf8mb4 或配置 default-character-set=utf8mb4。SHOW CREATE TABLE 檢查 CHARSET=utf8mb4。| 場景 | 推薦方式 | 理由 |
|---|---|---|
| 單表/小庫 (<100MB) 單次匯入 | phpMyAdmin / SOURCE | 操作直觀、無需記憶參數 |
| 整庫遷移、跨環境同步、大數據量 | mysqldump 管道 | 效能最佳、可斷點續傳(配合 pv)、支援壓縮 |
| 定時備份自動化腳本 | mysqldump 輸出檔案 + 壓縮 + 上傳對象存儲 | 易整合調度系統、留存審計軌跡 |
| 編碼遷移 (latin1 → utf8mb4) | mysqldump --default-character-set=latin1 導出 → 圖形化轉碼工具 → utf8mb4 匯入 | 需中間轉碼步驟,避免雙重編碼 |