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

XtraBackup 實戰指南:InnoDB 熱備份與增量備份全流程

     編輯:MySQL 資料庫相關知識

XtraBackup 核心優勢

  • 非阻塞熱備份:InnoDB 表備份過程不鎖表、不影響讀寫
  • 增量備份:基於 LSN (Log Sequence Number) 僅備份變更頁,極大節省空間與時間
  • 流式傳輸:支持 --stream=tar 直接輸出到遠端,解決本地磁盤不足
  • 壓縮加密:--compress、--encrypt 保障傳輸存儲安全

工具組件說明

工具功能適用場景
xtrabackup核心二進制,僅備份 InnoDB/XtraDB純 InnoDB 環境、腳本集成
innobackupexPerl 封裝腳本,同時支持 InnoDB + MyISAM混合引擎環境、生產首選

源碼編譯安裝(以 2.4/8.0 版本為例)

# 依賴
yum install -y libaio libaio-devel automake autoconf bison ncurses-devel zlib-devel cmake gcc gcc-c++

# 下載編譯(官網下載對應版本源碼包)
tar xf percona-xtrabackup-8.0.30.tar.gz
cd percona-xtrabackup-8.0.30
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/xtrabackup
make -j$(nproc) && make install

# 關鍵軟鏈(滿足 innobackupex 調用)
ln -s /usr/local/xtrabackup/bin/xtrabackup /usr/bin/xtrabackup
cp innobackupex /usr/bin/innobackupex

核心參數速查

參數說明階段
--backup執行備份備份
--prepare備份數據一致性恢復(redo log apply)恢復前
--target-dir備份存放目錄備份/恢復
--incremental-basedir增量基準全量備份目錄增量備份
--incremental-dir增量備份目錄(prepare 時指定)增量恢復
--apply-loginnobackupex 等價 --prepare恢復前
--copy-back將備份文件拷回 datadir恢復
--stream=tar流式輸出 tar 格式備份
--throttle=IOPS限制 IO 併發,減輕業務影響備份
--slave-info記錄主庫 Binlog 位置,便於重建從庫備份

實戰操作流程

全量備份 + 恢復

# 1. 全量備份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=xxx \
  --no-timestamp --target-dir=/backup/full_$(date +%F) /backup/

# 2. 恢復準備(必須步驟,應用 redo log 使數據一致)
innobackupex --apply-log --defaults-file=/etc/my.cnf /backup/full_2024-01-15/

# 3. 停庫、清空 datadir、拷回、改權、啟庫
systemctl stop mysqld
rm -rf /var/lib/mysql/*
innobackupex --copy-back --defaults-file=/etc/my.cnf /backup/full_2024-01-15/
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

增量備份策略

# 基於上次全量備份做增量
innobackupex --incremental --incremental-basedir=/backup/full_2024-01-15 \
  --target-dir=/backup/incr_2024-01-15_02 /backup/

# 增量恢復:先 prepare 基準,再 apply 增量
innobackupex --apply-log --redo-only /backup/full_2024-01-15/
innobackupex --apply-log --redo-only /backup/full_2024-01-15/ --incremental-dir=/backup/incr_2024-01-15_02/
# 多級增量依次 apply,最後再執行一次無 --redo-only 的 prepare

遠程流式備份(跨機房異地容災)

# 本地壓縮流式傳輸到遠端
innobackupex --stream=tar --compress --target-dir=/tmp \
  /backup/ | ssh user@dr-host "cat > /dr_backup/xtrabackup_$(date +%F).tar.gz"

# 遠端解壓恢復
ssh user@dr-host "cd /dr_backup && tar xzfi xtrabackup_2024-01-15.tar.gz"
# 後續 prepare、copy-back 流程同本地

生產環境最佳實踐

  1. 備份窗口:業務低峰期(如 02:00-04:00)
  2. 保留策略:全量保留 7 天、增量保留 2 天、異地同步保留 30 天
  3. 校驗機制:每週隨機抽取 1 組備份在測試環境 prepare + copy-back 驗證可用性
  4. 監控告警:備份耗時、文件大小、LSN 增長異常、磁盤剩餘空間

XtraBackup 是 InnoDB 熱備份的事實標準,配合合理的全量/增量/異地策略,構建 RPO=0、RTO 可控的數據保護體系。

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