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

mysqldump 完整指南:資料庫匯入匯出命令與參數詳解

     編輯:MySQL 資料庫相關知識

常用匯出/匯入場景

1. 匯出所有資料庫

mysqldump -uusername -ppassword --all-databases > all.sql

2. 匯入所有資料庫

mysql> source all.sql;

3. 匯出指定資料庫

mysqldump -uusername -ppassword --databases db1 db2 > db1db2.sql

4. 匯入指定資料庫

mysql> source db1db2.sql;

5. 匯出/匯入單一資料庫

# 匯出
mysqldump -uusername -ppassword db1 > db1.sql
# 匯入(系統命令列)
mysql -uusername -ppassword db1 < db1.sql
# 匯入(MySQL 命令列)
mysql> source db1.sql;

6. 匯出/匯入指定資料表

# 匯出
mysqldump -uusername -ppassword db1 table1 table2 > tb1tb2.sql
# 匯入
mysql -uusername -ppassword db1 < tb1tb2.sql
# 或 MySQL 命令列
mysql> use db1; source tb1tb2.sql;

7. 指定字符集匯出

mysqldump -uusername -ppassword --default-character-set=gb2312 db1 table1 > tb1.sql

mysqldump 核心機制

mysqldump 客戶端可轉儲資料庫供備份或遷移至其他 SQL 伺服器。轉儲內容包含建表與/或載入資料的 SQL 陳述式。若伺服器上表皆為 MyISAM,建議使用 mysqlhotcopy 以獲得更快的備份/恢復速度。

三種調用方式

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] --databases db1 [db2 db3...]
shell> mysqldump [options] --all-databases

未指定表或使用 --databases/--all-databases 時,轉儲整個資料庫。執行 mysqldump --help 可查看版本支援的選項。

關鍵參數詳解(節選常用)

參數說明
--help, -?顯示幫助訊息並退出
--add-drop-database每個 CREATE DATABASE 前加 DROP DATABASE
--add-drop-table每個 CREATE TABLE 前加 DROP TABLE
--add-locks用 LOCK TABLES/UNLOCK TABLES 包裹各表轉儲,重載更快
--all-databases, -a轉儲所有資料庫所有表
--allow-keywords允許關鍵字作為欄位名,需加表名前綴
--comments[={0|1}]0=禁止額外資訊(版本、主機等),預設 1
--compact精簡輸出,禁用註解並啟用多個 --skip-* 選項
--compatible=name產生相容其他資料庫/舊版 MySQL 的輸出(ansi、mysql323、postgresql、oracle 等)
--complete-insert, -c使用包含欄位名的完整 INSERT 陳述式
--compress, -C壓縮客戶端與伺服器間傳輸資料
--create-options在 CREATE TABLE 中包含所有 MySQL 表選項
--databases, -B轉儲多個資料庫,所有名稱參數視為資料庫名
--debug[=debug_options], -#寫除錯日誌
--default-character-set=charset指定預設字符集(預設 utf8)
--delayed-insert使用 INSERT DELAYED 插入行
--delete-master-logs主複制伺服器上,轉儲完成後刪除二進制日誌
--disable-keys, -k以 ALTER TABLE ... DISABLE/ENABLE KEYS 包裹 INSERT,加快 MyISAM 表載入
--extended-insert, -e使用多行 INSERT 語法,縮小檔案並加速重載
--flush-logs, -F轉儲前刷新伺服器日誌檔案
--force, -f轉儲過程中遇 SQL 錯誤仍繼續
--host=host_name, -h從指定主機轉儲資料(預設 localhost)
--hex-blob十六進制轉儲二進制字串欄位
--lock-all-tables, -x全域讀鎖定所有資料庫所有表
--lock-tables, -l轉儲前鎖定所有表(MyISAM 用 READ LOCAL 允許並行插入)
--master-data[=value]將二進制日誌位置/檔名寫入輸出,value=1 寫 CHANGE MASTER,2 寫註解
--no-create-db, -n禁用 CREATE DATABASE 陳述式
--no-create-info, -t不寫 CREATE TABLE 陳述式
--no-data, -d不寫資料行資訊,僅轉儲結構
--opt速記選項,等同 --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset(預設開啟)
--password[=password], -p連線密碼(短選項 -p 後不可有空格)
--port=port_num, -PTCP/IP 連接埠號
--protocol={tcp|socket|pipe|memory}連線協定
--quick, -q大表轉儲時逐行檢索而非全量緩存
--quote-names, -Q用反引號引用資料庫/表/欄位名(預設開啟)
--result-file=file, -r輸出導向指定檔案(Windows 下防止換行符轉換)
--routines, -R轉儲存儲程序/函數(含 CREATE PROCEDURE/FUNCTION)
--set-charset輸出中加入 SET NAMES default_character_set(預設開啟)
--single-transaction轉儲前發 BEGIN,適用 InnoDB/BDB 取得一致性快照
--socket=path, -S連接 localhost 時的套接字檔案
--tab=path, -T產生 Tab 分隔資料檔(需同機器且有 FILE 權限)
--tables覆蓋 --databases,後續參數視為表名
--triggers轉儲觸發器(預設開啟)
--tz-utc輸出加入 SET TIME_ZONE='+00:00' 便於跨時區轉儲/重載
--user=user_name, -uMySQL 使用者名稱
--verbose, -v詳細模式,列印操作資訊
--version, -V顯示版本資訊並退出
--where='where-condition', -w只轉儲符合 WHERE 條件的記錄
--xml, -X輸出 XML 格式

常見實戰範例

# 備份單一資料庫
mysqldump --opt db_name > backup-file.sql

# 還原
mysql db_name < backup-file.sql
# 或
mysql -e "source /path-to-backup/backup-file.sql" db_name

# 跨伺服器複製資料庫
mysqldump --opt db_name | mysql --host=remote_host -C db_name

# 備份多個資料庫
mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

# 備份所有資料庫
mysqldump --all-databases > all_databases.sql

# InnoDB 線上備份(僅開始需全域讀鎖)
mysqldump --all-databases --single-transaction > all_databases.sql

# 點對點恢復備份(含二進制日誌位置)
mysqldump --all-databases --master-data=2 > all_databases.sql
# 或配合刷新日誌
mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql

變數設定

  • max_allowed_packet:客戶端/伺服器通訊緩衝區最大值(最大 1GB)
  • net_buffer_length:通訊緩衝區初始大小,多行 INSERT 時行長度上限

可用 --var_name=value 或 --set-variable=var_name=value(不推薦)設定。

掌握 mysqldump 的靈活參數組合,能讓資料庫備份、遷移、災難恢復更高效可控。建議根據業務場景選擇適當的鎖策略、事務隔離與字符集設定。

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