一、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 的优缺点

优点

  1. 热备份:InnoDB 表备份无需锁表。

  2. 增量备份:大幅减少备份时间和存储占用。

  3. 流式压缩:支持 --stream 参数直接压缩传输。

  4. 快速恢复:通过 Redo Log 保证数据一致性。

缺点

  1. MyISAM 表限制:备份 MyISAM 表时需全局锁,可能影响主从同步。

  2. 版本兼容性:不同 MySQL 版本需匹配对应的 XtraBackup 版本。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐