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

MySQL XtraBackup 熱備份恢復實戰分享

     編輯:MySQL 資料庫相關知識

XtraBackup 核心優勢

  • 唯一開源支援 InnoDB/XtraDB 熱備份(不鎖表、不阻塞寫入)
  • 備份過程不中斷執行中事務
  • 支援壓縮、流式傳輸、增量備份、自動校驗
  • 恢復速度極快(文件級複製 + Redo Log 回放)

核心工具

  • xtrabackup:底層二進制,僅備份 InnoDB/XtraDB 表
  • innobackupex:Perl 封裝腳本,支援全庫備份(含 MyISAM、表結構、觸發器、配置)

備份產出關鍵文件

文件含義
xtrabackup_checkpoints備份類型(全量/增量)、LSN 範圍、狀態
xtrabackup_binlog_info備份時刻主庫 Binlog 文件名 + Position
xtrabackup_binlog_pos_innodbInnoDB 表對應 Binlog 位置
backup-my.cnf備份命令使用的配置參數

安裝部署 (Percona 官方二進制包)

wget https://www.percona.com/downloads/XtraBackup/LATEST/binary/Linux/x86_64/percona-xtrabackup-2.0.3-470.tar.gz
tar zxvf percona-xtrabackup-2.0.3-470.tar.gz
cp percona-xtrabackup-2.0.3/bin/* /usr/bin/

常用備份命令

全庫備份

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf /opt/mysql_bak/

單庫備份

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf --database=test /opt/mysql_bak/

備份並壓縮打包 (流式)

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf \
  --database=test --stream=tar /opt/mysql_bak/ | gzip > /opt/mysql_bak/testdb.tar.gz

帶時間戳壓縮備份

innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf \
  --database=test --stream=tar /opt/mysql_bak/ | gzip > /opt/mysql_bak/$(date +%F)_testdb.tar.gz

恢復流程 (關鍵:Prepare 階段)

# 1. 解壓(若為流式備份)
tar -xzf /opt/mysql_bak/2024-01-15_testdb.tar.gz -C /tmp/restore/

# 2. Prepare: 回放 Redo Log 使數據一致性 (必須步驟)
innobackupex --apply-log /tmp/restore/

# 3. 停止 MySQL、清空 datadir、複製回去
systemctl stop mysql
rm -rf /var/lib/mysql/*
innobackupex --copy-back /tmp/restore/

# 4. 修正權限、啟動
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql

增量備份策略

# 基礎全量備份
innobackupex --user=root -p --defaults-file=/etc/my.cnf /backup/full/

# 增量備份 (基於上次 LSN)
innobackupex --user=root -p --defaults-file=/etc/my.cnf \
  --incremental /backup/inc1/ --incremental-basedir /backup/full/2024-01-15_10-00-00/

# 恢復時:全量 prepare --apply-log --redo-only → 增量 prepare --apply-log --redo-only → 最後一個增量 prepare --apply-log

生產環境建議

  • 每日全量 + 每小時增量
  • 備份存異地/對象存儲
  • 定期演練恢復(至少季度一次)
  • 監控備份耗時、LSN 增長、磁盤空間
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved