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

mysqldump 備份還原與匯入匯出大全:核心參數詳解、MyISAM/InnoDB 差異策略、線上備份 --master-data 實戰

     編輯:MySQL 資料庫相關知識

mysqldump 是 MySQL 官方邏輯備份工具,參數豐富但文檔分散。本文系統整理核心參數、MyISAM/InnoDB 差異備份策略、線上備份 --master-data 實戰、還原兩種方式,並給出生產環境常用指令模板。

核心參數分類詳解

參數短參功能建議場景
--compatible=name-導出相容指定資料庫/版本 (ansi,mysql323,postgresql,oracle...)跨版本/異構遷移
--complete-insert-c完整 INSERT (含欄位名),提高插入效率但可能超過 max_allowed_packet小表/結構複雜表
--default-character-set=charset-**關鍵:指定導出字元集**,防亂碼**所有備份必加**
--disable-keys-INSERT 前後加 DISABLE/ENABLE KEYS,大幅加速 MyISAM 載入MyISAM 大表
--extended-insert-預設開啟,多列合併 INSERT;設 false 退回單列大表設 false 避免封包過大
--hex-blob-二進位欄位 (BINARY/VARBINARY/BLOB) 以十六進位導出**含二進位欄位必加**
--lock-all-tables-x全域讀鎖,保證一致性,關閉 single-transaction/lock-tablesMyISAM 全庫一致性備份
--lock-tables-鎖定當前庫所有表 (MyISAM 適用)MyISAM 單庫備份
--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**一般備份直接用 --opt**
--quick-q**大表必加**,串流讀取不緩存全結果集**大表必加**
--routines-R導出預存程序/函數完整備份必加
--single-transaction-**InnoDB 線上熱備份核心**,啟動事務一致性視圖,不阻塞寫入**InnoDB 必加**
--triggers-導出觸發器 (預設開啟)完整備份
--master-data[=1|2]-輸出 CHANGE MASTER TO 陳述式,指定 binlog 座標,支援主從同步建立**建立從庫/時間點恢復**

生產環境常用指令模板

MyISAM 表備份 (鎖表一致性)

/usr/local/mysql/bin/mysqldump -u user -p'pwd' \
  --default-character-set=utf8 \
  --opt --extended-insert=false \
  --triggers -R --hex-blob \
  --lock-all-tables \
  db_name > db_name_$(date +%F).sql

InnoDB 表備份 (線上熱備份,不鎖表)

/usr/local/mysql/bin/mysqldump -u user -p'pwd' \
  --default-character-set=utf8 \
  --opt --extended-insert=false \
  --triggers -R --hex-blob \
  --single-transaction \
  db_name > db_name_$(date +%F).sql

線上備份 + 建立從庫 (含 binlog 座標)

/usr/local/mysql/bin/mysqldump -u user -p'pwd' \
  --default-character-set=utf8 \
  --opt --master-data=1 \
  --single-transaction --flush-logs \
  db_name > db_name_$(date +%F).sql
  • --master-data=1:輸出 CHANGE MASTER TO MASTER_LOG_FILE='...', MASTER_LOG_POS=...; (不註解)。
  • --master-data=2:同上但註解化,僅供參考。
  • --flush-logs:切換 binlog,確保座標對應新檔案起點。

還原方式

  1. mysql 客戶端重導向 (推薦):
    /usr/local/mysql/bin/mysql -u user -p'pwd' db_name < db_name.sql
  2. SOURCE 指令 (在 mysql> 內):
    SOURCE /absolute/path/db_name.sql;
    需指定**絕對路徑**,且檔案需為 mysqld 執行身分可讀取。

MyISAM vs InnoDB 策略對比

維度MyISAMInnoDB
一致性保證--lock-all-tables (全域讀鎖)--single-transaction (MVCC 快照)
備份期間寫入**阻塞****不阻塞**
索引重建加速--disable-keys 有效無效 (聚集索引無法禁用)
線上備份可行性低 (需鎖表)高 (標準做法)

避坑檢核

  • [ ] **必加 --default-character-set** 對應資料庫實際字元集。
  • [ ] 大表**必加 --quick** 避免記憶體爆炸。
  • [ ] 含 BLOB **必加 --hex-blob**。
  • [ ] 完整備份**必加 --routines --triggers**。
  • [ ] InnoDB **必加 --single-transaction**,**勿加 --lock-tables** (互斥)。
  • [ ] 還原前確認目標資料庫字元集與備份檔一致。

掌握 mysqldump 參數組合邏輯,能根據引擎類型、業務容錯度、遷移目的,精準選擇最佳備份策略,確保資料零損失、恢復零驚喜。

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