首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

mysqldump 參數詳解與 MySQL 備份最佳實踐

     編輯:MySQL 綜合教學

mysqldump 核心參數速查表

mysqldump 是 MySQL 官方邏輯備份工具,輸出 SQL 腳本,支援跨版本遷移。掌握關鍵參數是高效備份的前提。

參數短參數功能說明適用場景/建議
--compatible=name-指定相容模式:ansi, mysql323, mysql40, postgresql, oracle 等跨版本/異構遷移時使用
--complete-insert-c完整 INSERT 語句(含欄位名)可讀性好,但受 max_allowed_packet 限制,大表不建議
--default-character-set=charset-指定導出字符集非 latin1 表必須指定,否則導入亂碼
--disable-keys-INSERT 前後加 DISABLE/ENABLE KEYS僅 MyISAM 有效,大幅提升導入速度
--extended-insert-多行合併 INSERT(預設開啟)大表必開,用 --skip-extended-insert 關閉
--hex-blob-二進位欄位用十六進位導出含 BINARY/VARBINARY/BLOB 必須開啟
--lock-all-tables-x全域讀鎖,保證一致性自動關閉 single-transaction,僅小庫或維護窗口用
--lock-tables-鎖定當前導出的表僅 MyISAM,InnoDB 請用 single-transaction
--no-create-info-t僅導出資料,無 CREATE TABLE資料遷移、同步場景
--no-data-d僅導出結構,無資料結構遷移、審計
--opt-綁定多個優化參數(預設開啟)含 add-drop-table, lock-tables, extended-insert 等
--quick-q流式讀取,不緩存整個結果集大表必須開啟,防止 OOM
--routines-R導出存儲程序與函數完整備份請加上
--single-transaction-啟動交易一致性備份(不鎖表)InnoDB 必用,配合 --quick
--triggers-導出觸發器(預設開啟)用 --skip-triggers 關閉
--master-data=1/2-輸出 CHANGE MASTER TO,含 Binlog 位置搭建 Slave、時間點恢復必用
--flush-logs-備份前切換 Binlog配合 master-data 使用

生產環境推薦備份命令

MyISAM 表備份

/usr/local/mysql/bin/mysqldump \
  -u backup_user -p'password' \
  --default-character-set=utf8 \
  --opt --extended-insert=FALSE \
  --triggers -R --hex-blob \
  --lock-all-tables \
  db_name > db_name_$(date +%F).sql

InnoDB 表備份(推薦:熱備份、不鎖表)

/usr/local/mysql/bin/mysqldump \
  -u backup_user -p'password' \
  --default-character-set=utf8 \
  --opt --extended-insert=FALSE \
  --triggers -R --hex-blob \
  --single-transaction --quick \
  db_name > db_name_$(date +%F).sql

搭建 Slave / 時間點恢復(含 Binlog 位置)

/usr/local/mysql/bin/mysqldump \
  -u backup_user -p'password' \
  --default-character-set=utf8 \
  --opt --master-data=1 \
  --single-transaction --flush-logs \
  db_name > db_name_$(date +%F).sql
  • --master-data=1:輸出 CHANGE MASTER TO(不可註釋)
  • --master-data=2:輸出註釋掉的 CHANGE MASTER TO
  • --flush-logs:備份瞬間切換新 Binlog,位置精確

進階備份策略

  1. 分庫並行備份:多個 schema 並行 dump,縮短備份窗口
  2. 壓縮傳輸:mysqldump ... | gzip > backup.sql.gz 或管道傳給遠端
  3. 增量備份:配合 Binlog 做增量,mysqlbinlog 解析重放
  4. 物理備份替代:大數據量(>500GB)建議用 Percona XtraBackup 熱備份
  5. 驗證備份:定期在測試環境恢復驗證,確保備份可用

常見坑點避雷

  • ❌ 忘記 --default-character-set 導致中文亂碼
  • ❌ 大表未加 --quick 導致客戶端 OOM
  • ❌ InnoDB 用 --lock-tables 造成長時間鎖表
  • ❌ 未備份存儲程序/觸發器/事件(需 -R --triggers --events)
  • ❌ 備份檔案未加密、未異地存放

掌握 mysqldump 參數組合,根據引擎類型、業務容忍度選擇適當策略,是 DBA 的基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved