萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

mysqldump 完整使用指南:條件導出、結構導出、跨庫遷移

基本語法

mysqldump -u用戶 -p密碼 -h主機 資料庫 [表] [選項] > 輸出檔.sql

常用場景與命令

1. 條件導出(--where / -w)

# 導出 id > 100 的資料
mysqldump -uroot -p123456 test test_data --where="id > 100" > /tmp/test.sql

# 複雜條件
mysqldump -h host -u user -p db tbl --where="unit_id >= 1 AND unit_id <= 10000" --skip-lock-tables > out.sql

2. 整庫導出

mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql

3. 僅導出結構(無資料)

mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc > wcnc_db.sql
# -d: no-data
# --add-drop-table: 每個 CREATE 前加 DROP TABLE

4. 導出多個表

mysqldump -u root -p db_name table1 table2 table3 > tables.sql

5. 遠端導出並壓縮

mysqldump -h remote_host -u user -p db_name | gzip > db_$(date +%F).sql.gz

關鍵參數速查

參數說明
-d, --no-data僅導出結構
-t, --no-create-info僅導出資料
--single-transactionInnoDB 一致性備份(不鎖表)
--lock-tables=false不鎖表(MyISAM 需配合)
--routines包含存儲過程/函數
--triggers包含觸發器
--events包含事件
--hex-blob二進位欄位用十六進位
--master-data=2附帶 CHANGE MASTER TO 註釋(主從同步用)

導入對應命令

# 一般導入
mysql -u user -p db_name < backup.sql

# 壓縮檔直導
gunzip < backup.sql.gz | mysql -u user -p db_name

# 異步大檔導入(關閉索引、外鍵、唯一檢查)
mysql -u user -p db_name -e "SET FOREIGN_KEY_CHECKS=0; SET UNIQUE_CHECKS=0; SET AUTOCOMMIT=0;" 
cat backup.sql | mysql -u user -p db_name
mysql -u user -p db_name -e "SET FOREIGN_KEY_CHECKS=1; SET UNIQUE_CHECKS=1; COMMIT;"

避坑提醒

  • 密碼含特殊字元請用單引號包裹或交互式輸入
  • 導出大表建議加 --quick(預設開啟)避免記憶體暴漲
  • 跨版本遷移加 --compatible=mysql40 等相容參數
  • 定期驗證備份可還原:mysql -u user -p test_db < backup.sql
copyright © 萬盛學電腦網 all rights reserved