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

MySQL 備份工具 mysqldump 核心參數與實戰用法速查表

     編輯:MySQL 綜合教學

MySQL 備份工具 mysqldump 核心參數與實戰用法速查表

mysqldump 是 MySQL 官方邏輯備份工具,將數據庫導出為可重放的 SQL 腳本。本文梳理核心參數分類、常用場景命令模板與避坑指南。

一、參數分類速查

類別參數說明
連接認證-u, --user用戶名
-p, --password[=...]密碼(不建議明文,留空交互輸入)
-h, --host主機,默認 localhost
-P, --port端口,默認 3306
輸出內容控制--databases, -B後跟多個庫名,輸出含 CREATE DATABASE,跨庫遷移必加
--all-databases, -A備份所有庫
--no-create-info, -t僅導出數據(無 DDL)
--no-data, -d僅導出結構(無 DML)
--routines, -R包含存儲過程/函數
--events, -E包含 Event 事件
一致性與性能--single-transactionInnoDB 熱備份核心,啟動一致性快照,配合 --quick
--quick, -q流式讀取不緩存全表結果集,大表必加
--master-data=[1|2]輸出 CHANGE MASTER TO 位置,1=註釋,2=可執行
--lock-tables, -l鎖表備份(MyISAM),InnoDB 勿用
--flush-logs, -F備份前切換二進制日志,配合增量備份
格式與兼容--hex-blob二進制列用十六進制導出,避免字符集亂碼
--default-character-set指定連接字符集,建議 utf8mb4
--compatible=mysql40兼容舊版本語法
--skip-comments去除版本註釋,減小文件體積
文本導出-T, --tab=path導出 .sql (DDL) + .txt (數據) 分離文件,需 FILE 權限
--fields-terminated-by=,字段分隔符
--lines-terminated-by=\n行分隔符

二、黃金場景命令模板

# 1. 生產庫全量熱備份(InnoDB,含位置、事件、觸發器,流式讀取)
mysqldump -u backup_user -p -h 10.0.0.1 \
  --all-databases --events --routines --triggers \
  --single-transaction --quick --master-data=2 \
  --hex-blob --default-character-set=utf8mb4 \
  > full_$(date +%F_%H-%M).sql

# 2. 單庫遷移(含建庫語句,目標端可直接 source)
mysqldump -u root -p --databases mydb \
  --single-transaction --quick --master-data=2 \
  --hex-blob > mydb_migrate_$(date +%F).sql

# 3. 只導結構(審計/評審用)
mysqldump -u root -p -d --databases mydb > mydb_schema.sql

# 4. 只導數據(同結構實例同步)
mysqldump -u root -p -t --databases mydb > mydb_data.sql

# 5. 導出純文本供 LOAD DATA / 異構導入
mysqldump -u root -p -T /data/export --databases mydb \
  --fields-terminated-by=, --fields-enclosed-by=\" \
  --lines-terminated-by=\r\n

三、避坑指南

  1. 忘加 --databases:導出文件無 CREATE DATABASE,目標端需手動建庫再導入,否則報 ERROR 1046 (3D000): No database selected。
  2. 大表不加 --quick:客戶端緩存全表結果集導致 OOM,必加 --quick 或 --single-transaction(隱含 quick)。
  3. 字符集不匹配:導出導入全鏈路指定 --default-character-set=utf8mb4,目標庫建庫同字符集。
  4. GTID 模式下 --master-data 衝突:GTID 複制環境下 --master-data 可能導致從庫報錯,改用 --set-gtid-purged=OFF 或不加該參數。
  5. 版本不兼容導入報錯:高版本導出低版本導入,加 --compatible=mysql56 或手動調整語法(如 utf8mb4_0900_ai_ci → utf8mb4_general_ci)。

四、恢復驗證腳本

# 1. 語法檢查
mysql -u root -p --dry-run < backup.sql

# 2. 實際導入(建議事務包裹)
mysql -u root -p -e "SET autocommit=0; SOURCE backup.sql; COMMIT;"

# 3. 核心表行數對比
mysql -u root -p -e "SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA='mydb';"
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved