首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 資料庫備份兩大法:檔案複製速成法與 mysqldump 官方標準法

     編輯:MySQL 綜合教學

前言

MySQL 備份策略因業務可用性需求、資料量、引擎類型而異。本文對比「檔案層級複製法」(速成、離線)與「mysqldump 邏輯備份法」(標準、線上),助您依場景選型。

方法一:檔案複製速成法(離線、MyISAM 適用)

實驗驗證(Windows NT 4.0 / MySQL 3.22.34)

  1. HostA:建立資料庫 TestA。
  2. 複製 C:\MySQL\data\TestA 至 HostB 同路徑。
  3. HostB phpMyAdmin 重新整理,TestA 即現且可正常操作。

核心限制

  • 必須停止 MySQL 服務或 FLUSH TABLES WITH READ LOCK 確保檔案一致性。
  • 僅適用 MyISAM 引擎;InnoDB 共享表空間、Redo Log 分散儲存,單純複製 .ibd 不可用。
  • 要求同版本、同架構、同作業系統,否則檔案格式可能不相容。
  • 還原後需修正檔案擁有者為 mysql 使用者。

方法二:mysqldump 官方標準法(線上、通用)

基本語法

mysqldump [OPTIONS] database [tables...]

若不指定資料表,匯出整個資料庫。

常用關鍵選項

選項說明
--add-locks每張表匯出前加 LOCK TABLES,匯入時加速插入
--add-drop-table每個 CREATE TABLE 前加 DROP TABLE IF EXISTS
--allow-keywords允許關鍵字作欄位名(以資料表名稱前綴)
-c, --complete-insert完整 INSERT 語法(含欄位名),相容性佳
-C, --compress客戶端/伺服端支援壓縮時啟用傳輸壓縮
--delayed使用 INSERT DELAYED(MyISAM 專用)
-e, --extended-insert多值 INSERT(單語句插入多行),大幅縮減檔案體積與匯入時間
--quick逐行讀取/寫入,不將整個結果集載入記憶體(大表必加)
--opt綜合優化組合:--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset(預設開啟)
--single-transactionInnoDB 熱備份關鍵:單一交易快照,不鎖表,保證一致性
--master-data=2輸出 CHANGE MASTER TO 註解,記錄 Binlog 位置,支援主從同步
--routines --triggers --events包含預存程序、觸發器、事件排程器

生產環境推薦指令範本

# InnoDB 線上熱備份(含 Binlog 位置、存儲程序、觸發器)
mysqldump --single-transaction --master-data=2 --routines --triggers --events \
    --quick --extended-insert --set-charset \
    -u backup_user -p'StrongPassword' mydb > mydb_$(date +%F).sql

# 壓縮存檔
gzip mydb_$(date +%F).sql

備份策略選型決策樹

是否允許停機維護窗口?
├─ 是 → 引擎為 MyISAM? → 是 → 檔案複製法(最快)
│                         └─ 否 → mysqldump --opt
└─ 否 → 必須 mysqldump --single-transaction (InnoDB) 或 xtrabackup (物理熱備份)

結語

檔案複製法雖快但限制多、風險高;mysqldump 配合 --single-transaction、--opt、--master-data 是通用標準解。建議建立「每日全備 + 定期增量(Binlog) + 異地同步 + 季度恢複演練」的分級備份體系。

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