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

MySQL 命令行導出導入數據庫實戰手冊:mysqldump 與 source 全流程

     編輯:MySQL 資料庫相關知識

導出數據庫:mysqldump 核心參數詳解

基本語法

mysqldump [options] -u user -p db_name [tbl_name ...] > dump_file.sql

常用參數對照表

參數說明建議值
-u / --user用戶名root 或專用備份賬戶
-p / --password密碼(提示輸入更安全)-p 回車後輸入
-h / --host主機地址localhost / 127.0.0.1 / 遠程 IP
-P / --port端口3306
--single-transactionInnoDB 熱備份(一致性快照,無鎖)**必加**
--master-data=2輸出 CHANGE MASTER TO 註釋(從庫搭建用)2(註釋形式)
--routines導出存儲過程/函數加上
--triggers導出觸發器加上
--events導出事件調度器加上
--hex-blob二進制列用十六進制導出加上
--default-character-set連接字符集utf8mb4
--no-data / -d僅導出結構結構遷移時用
--no-create-info / -t僅導出數據數據同步時用
--where導出條件過濾"id > 1000"

生產環境標準導出命令模板

mysqldump -u backup_user -p -h 127.0.0.1 -P 3306 \
  --single-transaction \
  --master-data=2 \
  --routines --triggers --events \
  --hex-blob \
  --default-character-set=utf8mb4 \
  --set-gtid-purged=OFF \
  my_database > my_database_$(date +%F_%H%M).sql

導入數據庫:source 命令與管道導入

方法一:MySQL 客戶端內 source(適合小文件)

# 1. 登錄
mysql -u root -p

# 2. 創建目標庫(如不存在)
CREATE DATABASE IF NOT EXISTS target_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

# 3. 切換庫並導入
USE target_db;
SOURCE /path/to/dump_file.sql;

方法二:管道直導(適合大文件、自動化腳本)

# 直接管道導入(無需進入交互模式)
mysql -u root -p -h 127.0.0.1 -P 3306 \
  --default-character-set=utf8mb4 \
  target_db < dump_file.sql

# 或者帶進度條(需安裝 pv)
pv dump_file.sql | mysql -u root -p target_db

大數據量優化策略

場景優化方案
導出耗時長並行導出:mysqldump --tab + 多線程壓縮 / mydumper 工具
導入耗時長1. 關閉索引:ALTER TABLE ... DISABLE KEYS(僅 MyISAM)
2. 批量提交:SET autocommit=0; ... COMMIT;
3. 禁用外鍵:SET FOREIGN_KEY_CHECKS=0;
4. 禁用唯一檢查:SET UNIQUE_CHECKS=0;
5. 增大 innodb_buffer_pool_size / innodb_log_file_size
6. 使用 myloader(mydumper 配套)並行導入
跨版本遷移mysql_upgrade 檢查兼容性;避免使用已棄用語法
字符集不匹配導出/導入均指定 --default-character-set=utf8mb4

驗證清單

  1. 行數核對:SELECT COUNT(*) FROM src.tbl vs SELECT COUNT(*) FROM dst.tbl
  2. 校驗和:CHECKSUM TABLE tbl 對比
  3. 約束檢查:SET FOREIGN_KEY_CHECKS=1; SET UNIQUE_CHECKS=1; 重新啟用後無報錯
  4. 業務抽樣:關鍵業務表抽樣比對關鍵字段

常見報錯速查

錯誤原因解決
ERROR 1153: Got a packet bigger than 'max_allowed_packet'單條 SQL 超過限制導入端設置 SET GLOBAL max_allowed_packet=1G
ERROR 1062: Duplicate entry主鍵/唯一鍵衝突REPLACE INTO / ON DUPLICATE KEY UPDATE / 先清空目標表
ERROR 1217: Cannot delete or update a parent row外鍵約束SET FOREIGN_KEY_CHECKS=0 導入後再開啟
Unknown collation: 'utf8mb4_0900_ai_ci'目標版本不支援排序規則導出時加 --skip-set-charset / 手動修改文件中的 COLLATE

命令行導出導入是 DBA 的基本功,**參數精準、流程標準化、驗證自動化**,才能在遷移、備份、災難恢復中做到萬無一失。

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