一、XtraBackup 简介
1. 什么是 XtraBackup?
XtraBackup 是 Percona 公司推出的免费开源工具,专为 InnoDB/XtraDB 引擎设计,支持 在线物理热备,具备以下核心特性:
-
非阻塞备份:备份过程中数据库仍可读写。
-
增量备份:仅备份自上次备份以来的变化数据,节省存储空间。
-
快速恢复:通过事务日志(Redo Log)保证数据一致性。
2. 适用场景
-
数据量超过 50GB,需高效备份与恢复。
-
业务要求 24/7 高可用,无法接受停机备份。
-
需要灵活的备份策略(如每周全备 + 每日增量备份)。
二、安装 XtraBackup
1. 环境要求
-
MySQL 版本:
-
XtraBackup 2.4 → 支持 MySQL 5.6/5.7
-
XtraBackup 8.0 → 支持 MySQL 8.0
-
XtraBackup 8.1 → 支持 MySQL 8.1
-
2. 安装步骤(以 CentOS 为例)
# 添加 Percona YUM 仓库 sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 启用 XtraBackup 8.0 仓库 sudo percona-release setup ps80 # 安装依赖与 XtraBackup sudo yum install epel-release sudo yum update sudo yum install percona-xtrabackup-80
三、全量备份与恢复
1. 全量备份流程
步骤 1:创建备份用户
CREATE USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Root123.'; GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT, BACKUP_ADMIN, SELECT ON *.* TO 'admin'@'localhost'; FLUSH PRIVILEGES;
步骤 2:执行全量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/full_xtrabackup
步骤 3:预备备份(应用 Redo Log)
xtrabackup --prepare --target-dir=/full_xtrabackup
2. 数据恢复
# 停止 MySQL 并清空数据目录 systemctl stop mysqld rm -rf /var/lib/mysql/* # 恢复数据 xtrabackup --copy-back --target-dir=/full_xtrabackup # 修复权限并重启 chown -R mysql:mysql /var/lib/mysql systemctl start mysqld
四、增量备份与恢复
1. 增量备份原理
-
基于 LSN(Log Sequence Number):仅备份自上次备份后变化的页面。
-
依赖全量备份:增量备份必须基于一个完整的全量备份。
2. 操作示例
步骤 1:全量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/backup/full
步骤 2:第一次增量备份
xtrabackup --user=admin --password=Root123. --backup --target-dir=/backup/inc1 --incremental-basedir=/backup/full
步骤 3:合并增量到全量备份
# 预备全量备份 xtrabackup --prepare --apply-log-only --target-dir=/backup/full # 合并第一次增量 xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1 # 最终准备(应用所有日志) xtrabackup --prepare --target-dir=/backup/full
步骤 4:恢复数据
xtrabackup --copy-back --target-dir=/backup/full
五、XtraBackup 的优缺点
优点
-
热备份:InnoDB 表备份无需锁表。
-
增量备份:大幅减少备份时间和存储占用。
-
流式压缩:支持
--stream
参数直接压缩传输。 -
快速恢复:通过 Redo Log 保证数据一致性。
缺点
-
MyISAM 表限制:备份 MyISAM 表时需全局锁,可能影响主从同步。
-
版本兼容性:不同 MySQL 版本需匹配对应的 XtraBackup 版本。