首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL mysqldump 核心參數速查與實戰用例大全

     編輯:MySQL 資料庫相關知識

一、基本語法

mysqldump [options] db_name [tbl_name ...]
mysqldump [options] --databases db_name1 [db_name2 ...]
mysqldump [options] --all-databases

無表名 = 導出整庫;導出結果為可直接執行的 SQL 文本。

二、核心參數分類速查表

分類參數作用建議
連接/認證-u, --user=name用戶名必填
-p, --password[=pwd]密碼(不寫 = 交互輸入)生產用配置文件 [client] 段
-h, --host=host主機(默認 localhost 走 socket)遠程必填
-P, --port=port端口(默認 3306)
-S, --socket=pathSocket 文件路徑本地多實例必填
--protocol={TCP|SOCKET|PIPE|MEMORY}強制協議
輸出控制--no-data, -d只導結構(無 INSERT)遷移審計常用
--no-create-info, -t只導數據(無 CREATE TABLE)數據同步常用
--add-drop-table每表前加 DROP TABLE IF EXISTS重複導入安全
--add-drop-database每庫前加 DROP DATABASE IF EXISTS
--add-locksINSERT 前後加 LOCK/UNLOCK TABLESMyISAM 加速導入;InnoDB 單事務無效
--extended-insert, -e多行 INSERT(默認開啟)大幅減小文件、加快導入
--complete-insert, -cINSERT 含列名(INSERT INTO t (a,b) VALUES...)跨表結構導入安全,文件變大
--hex-blob二進制列十六進制導出(0x...)含 BLOB/BINARY 必加
一致性/鎖--single-transaction啟動事務一致性導出(InnoDB 專用,**生產必加**)不鎖表,配合 --quick
--lock-tables, -l鎖定所有表(MyISAM 一致性)與 --single-transaction 互斥
--lock-all-tables, -x全局讀鎖(FLUSH TABLES WITH READ LOCK)阻塞寫入,慎用
--master-data=[1|2]輸出 CHANGE MASTER TO 註釋(1=可執行,2=註釋)主從搭建/時間點恢復關鍵
--flush-logs, -F導出前切換 binlog配合 --master-data 獲取精確位置
--dump-slave=[1|2]從庫導出時記錄主庫 binlog 位置從庫備份場景
對象篩選--databases, -B後續參數視為库名(輸出 CREATE DATABASE)
--tables後續參數視為表名(跳過 -B)混合庫/表導出
--where="condition", -w只導出滿足 WHERE 的行大表分批、增量導出
--ignore-table=db.tbl排除指定表跳過大日志表等
--routines, -R導出存儲過程/函數建議常開
--triggers導出觸發器(默認開啟)
--events導出事件調度器
性能/輸出格式--quick, -q流式讀取不緩存結果集(**大表必加**)防 OOM
--opt綁定 --quick --add-drop-table --add-locks --extended-insert --lock-tables --set-charset --disable-keys默認開啟,--skip-opt 關閉
--compress, -C客戶端-服務器壓縮傳輸遠程導出帶寬受限時
--tab=path, -T生成 .sql(結構) + .txt(數據) 文件(需服務器同機、FILE 權限)配合 LOAD DATA 极速導入
--fields-terminated-by=, 等配合 -T 控制 .txt 格式同 LOAD DATA 參數
調試/其它--debug[=options]調試追蹤
--verbose, -v詳細輸出
--version, -V版本信息

三、高頻實戰命令模板

1. 生產全庫邏輯備份(標準版)

mysqldump -u backup -p --single-transaction --master-data=2 \
  --routines --triggers --events --hex-blob \
  --default-character-set=utf8mb4 \
  --databases db1 db2 | gzip > /backup/full_$(date +%F).sql.gz

2. 大表分批導出(按主鍵範圍)

# 假設 id 1-1000000
mysqldump -u backup -p --single-transaction --where="id BETWEEN 1 AND 1000000" \
  db big_table | gzip > /backup/big_table_1_1M.sql.gz

3. 只導結構(Schema 遷移/審計)

mysqldump -u backup -p --no-data --routines --triggers --events \
  --default-character-set=utf8mb4 db > schema.sql

4. 只導數據(數據同步/初始化從庫)

mysqldump -u backup -p --no-create-info --single-transaction \
  --default-character-set=utf8mb4 db > data.sql

5. 遠程直接遷移(管道零落地)

mysqldump -h src_host -u backup -p --single-transaction db | \
  mysql -h dst_host -u root -p db

6. 導出為文本文件(極速導入配合 LOAD DATA)

mysqldump -u backup -p --tab=/tmp/export --fields-terminated-by=, \
  --fields-enclosed-by='"' --lines-terminated-by='\n' \
  --single-transaction db tbl1 tbl2
# 生成 /tmp/export/tbl1.sql, /tmp/export/tbl1.txt 等

四、導入/恢復方式

# 1. mysql 客戶端直接執行
mysql -u root -p db < backup.sql
# 或
mysql -u root -p -e "SOURCE /path/backup.sql;" db

# 2. 壓縮文件管道導入
zcat backup.sql.gz | mysql -u root -p db

# 3. 多線程並行導入(需工具)
# mydumper/myloader, mysqlpump (5.7+ 內置並行導出,導入仍單線程)

五、避坑提醒

  • 無 --single-transaction 導出 InnoDB → 數據不一致、鎖表阻塞業務。
  • 字符集不指定 → 導入亂碼,必加 --default-character-set=utf8mb4。
  • 大表不加 --quick → 客戶端 OOM 崩潰。
  • 含 BLOB 不加 --hex-blob → 導入報錯或數據截斷。
  • 版本不匹配:高版本導出導入低版本可能報錯,加 --compatible=mysql56 或手動修正 SQL。
  • GTID 啟用庫:導入前需 SET @@GLOBAL.GTID_PURGED=''; 或使用 --set-gtid-purged=OFF (5.7.18+/8.0)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved