mysqldump 是 MySQL 官方邏輯備份工具,產出可重放的 SQL 腳本(CREATE DATABASE、CREATE TABLE、INSERT...),支援跨版本、跨架構遷移。本文系統整理 13 大常用場景、完整參數表、一致性保證機制與生產級最佳實務。
mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --databases DB1 [DB2 ...]
mysqldump [OPTIONS] --all-databases
mysqldump -uroot -p --all-databases > /tmp/all.sql
mysqldump -uroot -p --databases db1 db2 > /tmp/user.sql
輸出含 CREATE DATABASE IF NOT EXISTS 判斷語句。
mysqldump -uroot -p --databases db1 --tables a1 a2 > /tmp/db1.sql
輸出無 CREATE DATABASE,直接 DROP TABLE、CREATE TABLE、INSERT。
mysqldump -uroot -p --databases db1 --tables a1 --where="id=1" > /tmp/a1.sql
mysqldump -uroot -p --databases db1 -F > /tmp/db1.sql
配合 --master-data 可實現增量備份切分點。
mysqldump -uroot -p --no-data --databases db1 > /tmp/struct.sql
mysqldump -h h1 -uroot -p --databases db1 | mysql -h h2 -uroot -p db2
db2 必須預先建立。-C 啟用壓縮傳輸(低頻寬環境加速)。# 在從庫執行
mysqldump -uroot -p --dump-slave=1 --databases db1 > /tmp/db1.sql
# 輸出含 CHANGE MASTER TO ... 陳述式
mysqldump -uroot -p --dump-slave=2 --databases db1 > /tmp/db1.sql
# 註解形式輸出
自動啟用 --lock-all-tables,除非指定 --single-transaction。
# 在主庫執行
mysqldump -uroot -p --master-data=1 --databases db1 > /tmp/db1.sql
# 輸出 CHANGE MASTER TO ...
mysqldump -uroot -p --master-data=2 --databases db1 > /tmp/db1.sql
# 註解形式
自動啟用 --lock-all-tables,除非指定 --single-transaction。
等同於:
--add-drop-table --add-locks --create-options --quick
--extended-insert --lock-tables --set-charset --disable-keys
可用 --skip-opt 關閉。
mysqldump -uroot -p --single-transaction --quick --databases db1 > /tmp/db1.sql
BEGIN,可重複讀隔離級別,不阻塞寫入。--lock-tables 互斥。--quick 避免緩衝區爆滿。mysqldump -uroot -p --routines --all-databases > /tmp/all.sql
--triggers(預設開啟,--skip-triggers 關閉)--events / -E(需顯式開啟)| 參數 | 短參 | 說明 |
|---|---|---|
--all-databases | -A | 導出全部庫 |
--databases | -B | 導出指定庫(後續參數視為库名) |
--tables | 覆蓋 -B,指定導出表 | |
--where | -w | 條件導出(單表) |
--no-data | -d | 僅結構 |
--no-create-info | -t | 僅資料 |
--single-transaction | 一致性備份(InnoDB) | |
--lock-tables | -l | 鎖表(MyISAM 適合) |
--lock-all-tables | -x | 全域讀鎖 |
--master-data | 追加主庫 Binlog 座標 | |
--dump-slave | 追加從庫同步座標 | |
--routines | -R | 存儲過程/函數 |
--events | -E | 事件 |
--triggers | 觸發器(預設開) | |
--hex-blob | 二進制欄位十六進制導出 | |
--compress | -C | 壓縮傳輸 |
--quick | -q | 不緩衝直接輸出(大表必加) |
--extended-insert | -e | 多值 INSERT(預設開) |
--complete-insert | -c | 含欄位名 INSERT |
--result-file | -r | 直接寫檔(Windows 換行處理) |
--set-charset | 輸出 SET NAMES(預設開) | |
--tz-utc | 時區標準化 TIMESTAMP |