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

MySQL Enterprise Backup (MEB) 物理備份恢復全流程實戰

     編輯:MySQL 綜合教學

MySQL Enterprise Backup (MEB) 物理備份恢復全流程實戰

MySQL Enterprise Backup (MEB) 是 Oracle 官方商業版提供的物理熱備工具,類似 Percona XtraBackup,支持 InnoDB 熱備份、增量備份、壓縮、加密等企業級特性。本文記錄 MEB 3.9 標準「備份 → 應用日誌 → 恢復」三階段完整操作流程與關鍵文件解析。

一、環境信息

  • MySQL 版本:5.6.23 Enterprise Edition
  • 數據目錄:/usr/local/mysql-advanced-5.6.23/data
  • 備份目錄:/backup
  • Socket:/usr/local/mysql-advanced-5.6.23/data/mysql.sock

二、階段一:備份

./mysqlbackup --backup_dir=/backup --socket=/usr/local/mysql-advanced-5.6.23/data/mysql.sock backup

備份完成後生成文件結構:

/backup/
├── backup-my.cnf          # 備份時實例的關鍵 InnoDB 參數
├── server-all.cnf         # 實例所有全局參數
├── server-my.cnf          # 實例非默認參數
├── datadir/               # 數據文件副本
└── meta/                  # 元數據目錄
    ├── backup_content.xml     # 文件元數據、表定義、插件信息
    ├── backup_create.xml      # 備份操作上下文
    ├── backup_gtid_executed.sql  # GTID 信息(啟用 GTID 時)
    ├── backup_variables.txt   # 關鍵變量:LSN、binlog 位置、apply_log_done 等
    └── MEB_YYYY-MM-DD.HH-MM-SS_backup.log  # 備份詳細日誌

關鍵文件解析

  • backup-my.cnf:記錄 innodb_data_file_path、innodb_log_file_size、innodb_page_size 等還原必需的 InnoDB 佈局參數。
  • backup_variables.txt:start_lsn/end_lsn 定義備份涵蓋的重做日誌範圍;apply_log_done=0 表示尚未應用日誌;gtid_executed 記錄備份完成時的 GTID 集合。
  • server-all.cnf / server-my.cnf:恢復時可任選其一作為 --defaults-file,若需異地恢復至不同路徑,需手動修改其中的 datadir、innodb_log_group_home_dir 等路徑參數。

三、階段二:應用日誌

./mysqlbackup --backup-dir=/backup apply-log

核心作用:將備份過程中產生的 ibbackup_logfile(redo log 增量)重放至 datadir,使數據文件達到「一致性點」,生成 ib_logfile0/1,標記 apply_log_done=1。輸出關鍵信息:

InnoDB: Doing recovery: scanned up to log sequence number 98227650
...
Apply-log operation completed successfully.
mysqlbackup completed OK!

驗證:應用前 datadir 無 ib_logfile*,應用後生成,說明 redo log 已就緒,可直接啟動實例或拷貝恢復。

四、階段三:恢復

./mysqlbackup --defaults-file=/backup/server-my.cnf --backup-dir=/backup copy-back

關鍵注意點:

  1. 必須使用備份目錄下的配置文件:自建 my.cnf 缺少 innodb_log_files_in_group 等參數會報錯 Server innodb_log_files_in_group is missing or invalid。
  2. 目標實例必須離線:雖然在線執行不報錯但不會覆蓋文件,官方明確要求 assumes the server is offline。
  3. 恢復後啟動禁用 server-all.cnf:實測用 server-all.cnf 啟動會報 Table './mysql/user' is marked as crashed,建議用原實例 my.cnf 或 server-my.cnf。
  4. 權限修正:恢復後執行 chown -R mysql.mysql /target/datadir。

五、恢復後驗證與啟動

# 修正權限
chown -R mysql.mysql /usr/local/mysql-advanced-5.6.23/data

# 啟動(使用原實例配置)
/usr/local/mysql-advanced-5.6.23/bin/mysqld --defaults-file=/usr/local/mysql-advanced-5.6.23/my.cnf --user=mysql &

# 驗證
mysql -uroot -p -S /tmp/mysql.sock -e "SHOW DATABASES;"

六、進階特性預覽

  • 壓縮備份:--compress --compress-level=6,節省 60%+ 存儲,CPU 開銷可接受。
  • 增量備份:--incremental --lsn=,基於 LSN 推進,配合 --incremental-with-redo-log-only 進一步減小體積。
  • 單表恢復:--include-tables=db.tbl 配合 --use-tts(傳輸表空間)實現表級還原。
  • 雲端直備:支持 --cloud-storage=S3 直接寫入對象存儲。

七、總結

MEB 作為官方商業工具,流程規範、文件自描述完整、支持 GTID、壓縮、加密、TTS 等企業級能力。核心三步驟 backup → apply-log → copy-back 清晰可靠。生產環境建議:

  1. 建立標準化備份腳本,固化參數、日誌、告警。
  2. 定期演練恢復,驗證 RTO/RPO。
  3. 備份文件異地多副本存儲。
  4. 監控 backup_variables.txt 中的 apply_log_done、LSN 連續性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved