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

Percona XtraBackup 2.3 安裝部署全記錄:依賴解決與首次備份驗證

     編輯:MySQL 綜合教學

Percona XtraBackup 2.3 安裝部署全記錄:依賴解決與首次備份驗證

XtraBackup 是 InnoDB 熱備份神器,支援非阻塞備份、增量備份、流式傳輸、壓縮加密。本文記錄在 CentOS 6 / Percona Server 5.6 環境下,從依賴安裝到首次備份驗證的完整過程,重點解決 libev.so.4 依賴缺失問題。

工具組件介紹

工具功能
xtrabackupC 編譯核心二進制,僅備份 InnoDB/XtraDB
innobackupexPerl 腳本封裝,支援 MyISAM/InnoDB 混合備份(MyISAM 需全局鎖)
xbstream流式打包/解包工具,支援並行傳輸
xbcrypt備份文件加密/解密(AES)
xbcloud雲存儲上傳/下載(S3/Swift/Azure)

環境信息

  • OS:CentOS 6.4 (Final)
  • MySQL:Percona Server 5.6.25-73.1 (已運行,datadir=/var/lib/mysql)
  • 目標版本:Percona XtraBackup 2.3.2

依賴安裝與坑點

1. 基礎依賴

yum -y install perl perl-devel libaio libaio-devel \
  perl-DBI perl-DBD-MySQL perl-TermReadKey perl-Time-HiRes

2. 核心坑點:libev.so.4 缺失

直接 rpm -ivh percona-xtrabackup-2.3.2-1.el6.x86_64.rpm 報錯:

error: Failed dependencies:
    libev.so.4()(64bit) is needed by percona-xtrabackup-2.3.2-1.el6.x86_64
錯誤嘗試:源碼編譯 libev-4.15

編譯安裝到 /usr/local/lib,配置 LD_LIBRARY_PATH,但 rpm 依然檢測不到(rpm 查詢系統庫路徑 /usr/lib64//lib64)。

正確解法:安裝 EPEL 提供的 libev RPM
# 查找對應版本
rpmfind.net 或 yum search libev

# 安裝 64 位 RPM
rpm -ivh libev-4.04-2.el6.x86_64.rpm

# 驗證
rpm -ql libev
# /usr/lib64/libev.so.4
# /usr/lib64/libev.so.4.0.0

3. 成功安裝 XtraBackup

rpm -ivh percona-xtrabackup-2.3.2-1.el6.x86_64.rpm \
  percona-xtrabackup-test-2.3.2-1.el6.x86_64.rpm \
  percona-xtrabackup-debuginfo-2.3.2-1.el6.x86_64.rpm

配置文件準備

確保 /etc/my.cnf 指定正確 datadir:

[mysqld]
datadir=/var/lib/mysql
innodb_data_home_dir = /data/mysql/ibdata
innodb_log_group_home_dir = /data/mysql/iblogs
innodb_data_file_path = ibdata1:10M;ibdata2:10M:autoextend
innodb_log_files_in_group = 2
innodb_log_file_size = 1G

首次全量備份驗證

# 全量備份到指定目錄
innobackupex --user=root --password=123456 /data/backup/

# 輸出示例
# xtrabackup: Transaction log of lsn (23853959) to (23853959) was copied.
# 150918 16:35:12 completed OK!

備份目錄結構解析

/data/backup/2015-09-18_16-35-12/
├── xtrabackup_checkpoints   # 關鍵:LSN 範圍、備份類型
├── xtrabackup_info          # 工具版本、命令行、Server 版本
├── backup-my.cnf            # 備份時的 my.cnf 相關段
├── ibdata1, ib_logfile*     # InnoDB 系統表空間、Redo Log
├── mysql/                   # 系統庫 frm/ibd
├── app_db/                  # 業務庫
│   ├── table1.ibd
│   └── table1.frm
└── xtrabackup_logfile       # 備份過程中捕獲的 Redo Log 片段

關鍵檢查點文件

cat /data/backup/2015-09-18_16-35-12/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 23853959
last_lsn = 23853959
compact = 0

常用參數速查

參數說明
--apply-log準備階段(redo apply),使備份數據一致可用
--copy-back還原階段,將備份拷貝回 datadir(目標目錄必須為空)
--incremental增量備份模式
--incremental-basedir基準全量/增量備份目錄
--redo-only增量合並時僅 redo,不 rollback 未提交事務
--stream=tar流式輸出 tar 格式,配合管道壓縮/傳輸
--compress壓縮備份(需 qpress 支援)
--encrypt=AES256加密備份
--slave-info從庫備份時記錄主庫 Binlog 位點(生成 xtrabackup_slave_info)
--tmpdir指定臨時目錄(避免 xtrabackup_logfile 撐滿 /tmp)

下一步規劃

  • 增量備份策略:每日全量 + 每小時增量
  • 異地備份:--stream=tar | ssh remote "cat > /backup/inc_$(date +%F_%H).tar"
  • 自動化腳本:封裝備份、驗證、清理、告警
  • 定期演練恢復:--apply-log --redo-only 合並增量鏈 → --copy-back
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved