shell> mysqldump [OPTIONS] database [tables]
若不指定資料表,整個資料庫將被匯出。執行 mysqldump --help 可查看當前版本支援的所有選項。
注意:未使用 --quick 或 --opt 時,mysqldump 會將整個結果集載入記憶體,匯出大型資料庫可能導致記憶體耗盡。
| 選項 | 說明 |
|---|---|
--add-locks | 每張表匯出前加 LOCK TABLES,匯入時加速插入。 |
--add-drop-table | 每個 CREATE TABLE 前加 DROP TABLE IF EXISTS。 |
-c, --complete-insert | 使用完整 INSERT 語法(含欄位名),便於閱讀與遷移。 |
-C, --compress | 客戶端與伺服器均支援壓縮時,壓縮傳輸資料。 |
--delayed | 使用 INSERT DELAYED 插入資料。 |
-e, --extended-insert | 多行 INSERT 語法,產生更緊湊、更快的匯入檔。 |
--help | 顯示幫助並退出。 |
-F, --flush-logs | 匯出前刷新 MySQL 伺服器日誌檔。 |
-f, --force | 發生 SQL 錯誤時繼續執行。 |
-h, --host=... | 指定遠端主機(預設 localhost)。 |
-l, --lock-tables | 匯出前鎖定所有表(讀鎖)。 |
-t, --no-create-info | 不輸出 CREATE TABLE 語句,僅匯出資料。 |
-d, --no-data | 不匯出資料,僅匯出結構(適合結構遷移)。 |
--opt | 等同 --quick --add-drop-table --add-locks --extended-insert --lock-tables,官方推薦的高效能預設組合。 |
-p, --password[=...] | 連線密碼(命令列帶密碼有安全風險,建議省略值讓工具提示輸入)。 |
-P, --port=... | TCP/IP 埠號(非 localhost 連線時需指定)。 |
-q, --quick | 不緩衝查詢,直接串流輸出至 stdout,減少記憶體佔用。 |
-S, --socket=... | 本地連線用的 socket 檔路徑。 |
-T, --tab=路徑 | 每表產生 .sql(結構)與 .txt(資料)檔,需在 mysqld 同一主機執行。 |
mysqldump --opt -u root -p mydb > mydb_backup.sql
mysqldump --no-data -u root -p mydb > mydb_structure.sql
mysql -u root -p mydb < mydb_backup.sql
gzip 壓縮:mysqldump --opt -u root -p mydb | gzip > mydb_backup.sql.gzcrontab 執行。--compatible=mysql40 等相容性選項。