mysqldump 是 MySQL 官方備份工具,可匯出結構、資料或兩者兼備,支援多種格式與過濾選項。
mysqldump [選項] 資料庫名稱 [資料表...]
未指定資料表則匯出整個資料庫。
| 選項 | 說明 |
|---|---|
--add-locks | 每個表匯出前加 LOCK TABLES,後加 UNLOCK TABLES |
--add-drop-table | 每個 CREATE 前加 DROP TABLE |
--allow-keywords | 允許關鍵字作為欄位名 (加表名前綴) |
-c, --complete-insert | 使用完整 INSERT 語法 (含欄位名) |
-C, --compress | 客戶端與伺服器均支援壓縮時啟用 |
--delayed | 使用 INSERT DELAYED |
-e, --extended-insert | 多行 INSERT 語法 (更緊湊、更快) |
-F, --flush-logs | 匯出前 flush 伺服器日誌 |
-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 連接埠 |
-q, --quick | 不緩衝查詢,直接輸出 stdout |
-u, --user | 指定連線使用者 |
-v, --verbose | 詳細模式 |
-w, --where | 僅匯出符合條件的記錄 (需引號) |
# 完整備份 (含結構與資料)
mysqldump --opt db_name > backup.sql
# 僅備份結構
mysqldump --no-data db_name > schema.sql
# 僅備份資料
mysqldump --no-create-info db_name > data.sql
# 遠端備份並直接導入另一台伺服器
mysqldump --opt db_name | mysql --host=remote_host -C db_name
# 匯入備份檔
mysqladmin create target_db
mysql target_db < backup.sql
--quick 避免記憶體耗盡。