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

MySQL 資料庫備份捷徑:直接複製 data 目錄的可行性驗證與官方最佳實踐

     編輯:MySQL 資料庫相關知識

非官方捷徑:直接複製資料目錄

實驗環境:WinNT 4.0 + MySQL 3.22.34 + phpMyAdmin 2.1.0。
操作:將 Host A 的 C:\MySQL\data\TestA 整個目錄複製到 Host B 同位置,重整 phpMyAdmin 即可見資料庫出現並可正常查詢修改。

結論:MyISAM 表在同版本、同架構、同 OS、服務完全停止條件下,直接複製目錄可行。但不具備官方支援承諾,風險自負。

官方推薦:mysqldump 邏輯備份

# 基本語法
mysqldump [OPTIONS] database [tables]

# 生產環境黃金參數組合
mysqldump --opt --single-transaction --master-data=2 -u root -p db_name > backup.sql

核心參數速查表

參數說明
--opt綜合最佳化(quick, add-drop-table, add-locks, extended-insert, lock-tables)
--single-transactionInnoDB 熱備份關鍵,利用 MVCC 不鎖表
--master-data=2輸出 Binlog 座標註釋,利於建 Slave
--add-drop-table還原前先 DROP,避免「表已存在」錯誤
--quick逐行串流,防大表 OOM
--compress跨網路傳輸壓縮
-d / --no-data僅導結構
-t / --no-create-info僅導資料
-w / --where條件過濾導出

還原與遷移實戰

# 建立目標庫並還原
mysqladmin -u root -p create target_db
mysql -u root -p target_db < backup.sql

# 遠端遷移(管道直連,無落地檔)
mysqldump --opt db_name | mysql -h remote_host -u user -p db_name

直接複製檔案的硬性限制

  • 僅限 MyISAM 表(5.0+ 預設 InnoDB 需額外複製 ibdata*、ib_logfile*)。
  • 來源/目標必須相同 CPU 架構(ISAM 表)或均為 MySQL 3.23+ 且表為 MyISAM(跨架構)。
  • 目標 Server 啟動前完成複製,避免檔案鎖定衝突。

建議策略

日常備份:mysqldump --single-transaction + 壓縮 + 異地同步。
大規模遷移/災難恢復演練:配合 Percona XtraBackup(InnoDB 物理熱備)或檔案系統快照(LVM/ZFS/EBS)。

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