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

MySQL 導入導出神器 mysqldump 與 source 命令全攻略

     編輯:MySQL 資料庫相關知識

mysqldump 導出篇

基礎語法


mysqldump -u user -p [options] db_name [tbl_name...] > dump.sql
# 密碼交互輸入,或 -ppassword(無空格,不安全)

核心參數速查

參數作用推薦場景
--opt啟用 quick、add-drop-table、add-locks、extended-insert、lock-tables常規備份(默認開啟)
--quick/-q不緩存結果直接寫文件,省內存大表必加
--no-data/-d僅導出結構(無 INSERT)遷移結構、對比 Schema
--add-drop-tableCREATE 前加 DROP IF EXISTS重複導入環境
--extended-insert/-e多行 VALUES 批量 INSERT加速導入(默認開啟)
--single-transactionInnoDB 一致性快照(不鎖表)線上熱備份核心參數
--master-data=2輸出 CHANGE MASTER TO 註釋(從庫搭建)主從構建
--where="cond"按條件導出數據增量/分表/歸檔
--skip-lock-tables不鎖表(配合 single-transaction)高併發線上備份

實戰範例


# 1. 全庫熱備份(生產標配)
mysqldump -u root -p --single-transaction --master-data=2 --routines --triggers --events db_name > full_$(date +%F).sql

# 2. 單表結構
mysqldump -u root -p -d db_name tbl_name > tbl_struct.sql

# 3. 條件導出(歸檔歷史數據)
mysqldump -u root -p --where="created_at < '2023-01-01'" db_name tbl_name > archive.sql

# 4. 多表並行導出(配合 xargs)
echo "tbl1 tbl2 tbl3" | xargs -n1 -P4 -I{} mysqldump -u root -p db_name {} > {}.sql

source / mysql 導入篇

交互式導入


mysql -u root -p
USE target_db;
SOURCE /path/to/dump.sql;

非交互式導入(腳本/自動化)


# 推薦:管道導入
mysql -u root -p target_db < dump.sql

# 大文件優化參數
mysql -u root -p --max_allowed_packet=100M --net_buffer_length=1M target_db < dump.sql

導入加速技巧


-- 臨時關閉檢查(導入前執行)
SET FOREIGN_KEY_CHECKS=0;
SET UNIQUE_CHECKS=0;
SET AUTOCOMMIT=0;
SET SQL_LOG_BIN=0;  -- 需 SUPER 權限

-- 導入後恢復
COMMIT;
SET FOREIGN_KEY_CHECKS=1;
SET UNIQUE_CHECKS=1;
SET AUTOCOMMIT=1;
SET SQL_LOG_BIN=1;

進階:條件導出與分庫分表


# 按 ID 範圍分片導出(分庫分表遷移)
for i in {0..9}; do
  mysqldump -u root -p --where="id % 10 = $i" db_name tbl_name > tbl_part_$i.sql &
done
wait

避坑清單

  • ❌ 導出含 VIEW 導入報錯 → 加 --skip-views 或手動處理
  • ❌ 導出 DEFINER 導入權限不足 → sed -i 's/DEFINER=[^ ]* //g' dump.sql
  • ❌ 字符集不匹配亂碼 → 導出導入同指定 --default-character-set=utf8mb4
  • ❌ 大事務導入卡住 → 調大 innodb_log_file_size、max_allowed_packet
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved