核心用法
mysqldump [OPTIONS] database [tables]
# 不指定 tables → 導出整庫
關鍵參數分類速查
| 類別 | 參數 | 說明 |
| 效能/一致性 | --opt | 綜合開啟 --quick --add-drop-table --add-locks --extended-insert --lock-tables,**最推薦生產備份** |
--single-transaction | InnoDB 專用,啟動一致性快照讀,**無需鎖表**,配合 --master-data=2 獲取 Binlog 座標 |
--lock-tables / --lock-all-tables | MyISAM 必須鎖表保證一致性 |
| 輸出格式 | -c / --complete-insert | 完整 INSERT(含欄位名),便於異構導入 |
-e / --extended-insert | 多行 INSERT,體積小、導入快 |
-t / --no-create-info | 僅導出資料,無 CREATE TABLE |
-d / --no-data | 僅導出結構,無資料 |
| 導出控制 | -w / --where='condition' | 條件過濾導出,如 --where="id>100" |
--ignore-table=db.tbl | 排除特定表 |
-T / --tab=dir | 每表產生 .sql (結構) + .txt (資料),需在伺服器本機執行,配合 --fields-* --lines-* |
| 連線/壓縮 | -h / --host | 遠端主機 |
-P / --port | 端口 |
-C / --compress | 客戶端/伺服器均支援時壓縮傳輸 |
| Binlog/複製 | -F / --flush-logs | 備份前切換 Binlog,便於增量恢復 |
--master-data=1|2 | 輸出 CHANGE MASTER TO 語句(1=註解、2=可執行),搭配 --single-transaction 完美支援複製建立 |
--dump-slave | 從庫備份時記錄 Master 資訊 |
常用組合範例
# 1. 全庫備份(生產標準)
mysqldump --opt --single-transaction --master-data=2 -u root -p db_name > backup_$(date +%F).sql
# 2. 結構備份
mysqldump -d -u root -p db_name > schema.sql
# 3. 遠端壓縮備份
mysqldump -h 10.0.0.1 -C --opt db_name | gzip > backup.sql.gz
# 4. 導出特定表資料為文字檔(配合 LOAD DATA)
mysqldump -T /tmp/export -u root -p db_name tbl1 tbl2 --fields-terminated-by=',' --lines-terminated-by='\n'
注意事項
- 無
--quick/--opt 時會將全結果集載入記憶體,大庫易 OOM。
-T 僅限本機執行,輸出目錄需 mysqld 寫入權限。
- 導入時對應指定
--fields-* --lines-* 參數。