萬盛學電腦網

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

MySQL 資料庫備份基礎知識:檔案級複製 vs mysqldump 邏輯備份完整對比

捷徑:檔案級直接複製(僅限 MyISAM、停機維護窗)

MyISAM 表為獨立檔案(.frm、.MYD、.MYI),跨平台相容(機器無關格式)。

# 前提:MySQL 服務完全停止
net stop mysql
# 複製整個 datadir\db_name 目錄到備份位置
xcopy /E D:\MySQL\Data\mydb \\BackupServer\MySQL\mydb_$(date +%Y%m%d)
net start mysql

嚴重限制:

  • InnoDB 共享表空間(ibdata1)、Redo Log、Undo Log **無法單獨複製單庫**。
  • 運行中複製會導致資料不一致(頁面撕裂、LSN 不匹配)。
  • 跨版本/架構(32/64位、大小端)不可移植。

正規軍:mysqldump 邏輯備份(官方推薦、通用)

基本語法

mysqldump [OPTIONS] database [tables...] > dump.sql

核心參數

參數用途
--opt綜合開啟:--quick --add-drop-table --add-locks --extended-insert --lock-tables(預設開啟)
--single-transactionInnoDB 熱備必加:啟動一致性讀取快照,**不鎖表**
--master-data=2輸出檔頭記錄 Binlog 位置(註釋形式),用於主從同步起點
--routines --triggers --events包含存儲過程、觸發器、事件
--hex-blob二進位欄位以十六進位導出,避免編碼問題
--compress客戶端/伺服器傳輸壓縮

常用組合範例

# 生產環境 InnoDB 完整熱備(含主從同步座標)
mysqldump --single-transaction --master-data=2 --routines --triggers --events \
  -u backup_user -p --databases db1 db2 > full_backup_$(date +%F).sql

# 僅導出結構(不含資料)
mysqldump --no-data -u root -p db1 > schema_db1.sql

# 僅導出資料(不含建表語句)
mysqldump --no-create-info -u root -p db1 > data_db1.sql

還原操作

# 1. 建立空資料庫
mysqladmin -u root -p create target_db

# 2. 導入
mysql -u root -p target_db < full_backup.sql

# 或進入 mysql 客戶端
SOURCE /path/to/full_backup.sql;

備份策略建議

  • **每日全量 + 定期增量(Binlog)**mysqlbinlog。
  • **異地備份**:rsync/s3 同步備份檔至異地。
  • **定期演練還原**:驗證備份可用性、測試 RTO/RPO。
  • **監控告警**:備份腳本返回碼、檔案大小、耗時納入監控系統。
copyright © 萬盛學電腦網 all rights reserved