萬盛學電腦網

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

MySQL mysqldump 命令詳解:從備份到遷移的完整指南

為什麼需要導出資料?

  • 災難備份:資料價值高昂,定期備份是防止遺失的唯一保障。
  • 資料共享與遷移:跨環境、跨版本、跨平台移轉資料的標準格式。

mysqldump 核心優勢

  • 將整個資料庫(結構+資料)轉為單一純文字 SQL 檔案,包含 CREATE TABLE(DDL)與 INSERT(DML)。
  • 支援單表、多表、甚至帶 WHERE 條件的部分資料導出。
  • 輸出檔可直接用 mysql 客戶端或批次腳本還原,極度通用。

常用語法範例

# 導出整個資料庫
mysqldump -u root -p Meet_A_Geek > MeetAGeek_Dump_File.txt

# 導出單一資料表
mysqldump -u root -p Meet_A_Geek Orders > MeetAGeek_Orders.txt

# 條件導出(僅導出 Order_ID > 2000 的記錄)
mysqldump -u root -p --where="Order_ID > 2000" Meet_A_Geek Orders > Special_Dump.txt

關鍵參數對照表

參數作用適用場景
--add-drop-table每張表前加 DROP TABLE IF EXISTS還原時避免「表已存在」報錯
--add-locksINSERT 前後加 LOCK/UNLOCK TABLES防止還原期間其他連線干擾,加速大量寫入
-c / --complete-insertINSERT 語句包含完整欄位名跨資料庫/結構不完全相同時遷移更安全
--delayed-insert使用 INSERT DELAYED降低還原對線上服務衝擊
-F / --flush-logs導出前刷新 Binlog配合增量備份策略
-f / --force忽略錯誤繼續導出損壞資料庫搶救
-t / --no-create-info僅導出資料,不含 DDL同結構不同資料的環境同步
-d / --no-data僅導出結構,不含資料建立空資料庫架構
-l / --lock-tables導出期間鎖定表(讀鎖)確保備份一致性(預設開啟)
--single-transactionInnoDB 專用:單一交易快照線上熱備份不阻塞寫入(需 InnoDB)

進階技巧

  • 壓縮輸出:mysqldump ... | gzip > dump.sql.gz 節省磁碟空間。
  • 排除特定表:--ignore-table=db.tbl。
  • 主從同步初始化:--master-data=2 在輸出檔頭記錄 Binlog 位置。

還原操作

# 進入 mysql 客戶端後
SOURCE /path/to/dump.sql;

# 或直接命令列
mysql -u root -p TargetDB < dump.sql
copyright © 萬盛學電腦網 all rights reserved