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

mysqldump 工具深度解析:從基礎參數到生產級備份最佳實踐

     編輯:MySQL 綜合教學

基本語法

mysqldump [OPTIONS] database [tables]
mysqldump [OPTIONS] --databases db1 db2 ...
mysqldump [OPTIONS] --all-databases

核心參數分類詳解

輸出格式控制

參數說明
-c, --complete-insert完整 INSERT 包含欄位名,利於閱讀與部分恢復,但受 max_allowed_packet 限制
-e, --extended-insert多行 INSERT (預設開啟),體積小、恢復快
--hex-blobBINARY/VARBINARY/BLOB 十六進位輸出,避免特殊字元問題
-t, --no-create-info僅導出資料,無 CREATE TABLE
-d, --no-data僅導出結構
--add-drop-tableCREATE 前加 DROP TABLE,便於覆蓋恢復

一致性與鎖控制 (關鍵)

參數適用引擎行為
--single-transactionInnoDB啟動 REPEATABLE READ 快照,不鎖表,熱備份首選
--lock-tablesMyISAM鎖定當前庫所有表
--lock-all-tables (-x)所有全域讀鎖,自動關閉 single-transaction
--master-data=1|2所有輸出 CHANGE MASTER TO,1=生效,2=註解
-F, --flush-logs所有備份前切換 Binlog,配合增量備份

字元集與相容性

  • --default-character-set=utf8:指定導出編碼,避免亂碼 (注意非 utf-8)。
  • --compatible=mysql40,postgresql,oracle...:產生相容特定版本/異構資料庫的 SQL。

效能與除錯

  • -q, --quick:大表必加,流式讀取不緩存結果集。
  • -v, --verbose:詳細輸出進度。
  • --debug:除錯追蹤。

生產級備份命令模板

InnoDB 熱備份 (標準)

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 \
--single-transaction \
--master-data=2 \
--routines --triggers \
--hex-blob \
--extended-insert=FALSE \
--quick \
db_name > db_name.sql

MyISAM 備份

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 \
--lock-tables \
--extended-insert=FALSE \
--triggers -R --hex-blob \
db_name > db_name.sql

線上備份並記錄 Binlog 位點 (搭建從庫專用)

/usr/local/mysql/bin/mysqldump -uyejr -pyejr \
--default-character-set=utf8 \
--single-transaction --flush-logs --master-data=1 \
db_name > db_name.sql

還原方式

  1. 管道導入:mysql -uusr -ppwd db < backup.sql
  2. SOURCE 指令:mysql> SOURCE /absolute/path/backup.sql; (需 mysqld 執行身份可讀)

常見編碼問題解決

mysql> SET NAMES utf8;  -- 注意無連字號
mysql> SOURCE /path/backup.sql;

進階:mysqlhotcopy 與 SQL 語法備份簡介

  • mysqlhotcopy:Perl 腳本,僅 MyISAM、類 Unix,速度最快 (複製檔案層級)。
  • BACKUP TABLE / RESTORE TABLE:鎖表複製檔案,不備索引,恢復慢,不推薦。
  • SELECT ... INTO OUTFILE / LOAD DATA INFILE:文字檔導出入,適合跨平台遷移或 ETL。

Binlog 增量備份策略

開啟 Binlog → 定期 FLUSH LOGS 切割 → 複製新 Binlog 檔 → mysqlbinlog 重放實現 PITR。配合主從架構在從庫備份可達零影響主庫。

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