六十八、【Linux数据库】percona软件介绍 、 innobackupex备份与恢复
XtraBackup架构全景图
Percona 软件与 XtraBackup 功能概述
Percona 软件介绍
Percona 是一家提供 MySQL 相关软件和服务的公司,其核心产品包括:
- Percona Server:增强版 MySQL 服务器,提供更好的性能和扩展性
- Percona XtraBackup:开源热备份工具,支持 InnoDB/XtraDB 存储引擎
- Percona Toolkit:高级命令行工具集,用于管理 MySQL
- Percona Monitoring and Management (PMM):监控和管理平台
XtraBackup 核心功能
- 热备份:在备份期间不影响数据库读写操作
- 增量备份:仅备份自上次备份以来更改的数据
- 流压缩:备份时直接压缩数据
- 并行备份:多线程加速备份过程
- 加密备份:保护备份数据安全
备份恢复流程
演示步骤
1. 安装 Percona XtraBackup
# 安装Percona仓库
[root@localhost ~]# yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm -y# 启用仓库
[root@localhost ~]# percona-release enable-only tools release# 安装XtraBackup
[root@localhost ~]# yum install percona-xtrabackup-80 -y
2. 全量备份
# 创建备份目录
[root@localhost ~]# mkdir -p /backup/full# 执行全量备份
[root@localhost ~]# xtrabackup --backup --target-dir=/backup/full --user=root --password=your_password# 查看备份文件
[root@localhost ~]# ls /backup/full
ibdata1 mysql performance_schema sys test xtrabackup_binlog_info xtrabackup_checkpoints
3. 增量备份
# 创建增量备份目录
[root@localhost ~]# mkdir /backup/inc1# 基于全量备份执行增量备份
[root@localhost ~]# xtrabackup --backup --target-dir=/backup/inc1 \--incremental-basedir=/backup/full \--user=root --password=your_password
4. 准备备份(恢复前)
# 应用全量备份日志
[root@localhost ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/full# 应用增量备份到全量
[root@localhost ~]# xtrabackup --prepare --apply-log-only --target-dir=/backup/full \--incremental-dir=/backup/inc1# 最终准备
[root@localhost ~]# xtrabackup --prepare --target-dir=/backup/full
5. 恢复数据
# 停止MySQL服务
[root@localhost ~]# systemctl stop mysqld# 清空数据目录(生产环境请先备份)
[root@localhost ~]# rm -rf /var/lib/mysql/*# 恢复备份
[root@localhost ~]# xtrabackup --copy-back --target-dir=/backup/full# 修改数据目录权限
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql# 启动MySQL服务
[root@localhost ~]# systemctl start mysqld
6. 验证恢复
# 登录MySQL检查数据
[root@localhost ~]# mysql -u root -p -e "SHOW DATABASES;"
Enter password:
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
命令总结表格
演示命令 | 功能描述 | 关键参数 |
---|---|---|
yum install percona-xtrabackup-80 | 安装XtraBackup | 软件包名称 |
xtrabackup --backup --target-dir=/path | 全量备份 | --target-dir 备份目录 |
xtrabackup --backup --target-dir=/inc --incremental-basedir=/full | 增量备份 | --incremental-basedir 基础目录 |
xtrabackup --prepare --apply-log-only --target-dir=/full | 准备全量备份 | --apply-log-only 仅应用日志 |
xtrabackup --prepare --target-dir=/full --incremental-dir=/inc | 合并增量备份 | --incremental-dir 增量目录 |
xtrabackup --prepare --target-dir=/full | 最终准备 | 无 |
xtrabackup --copy-back --target-dir=/full | 恢复备份 | --copy-back 恢复模式 |
chown -R mysql:mysql /var/lib/mysql | 修复权限 | 数据目录 |
systemctl stop mysqld | 停止服务 | 无 |
systemctl start mysqld | 启动服务 | 无 |
功能作用详解
1. XtraBackup 工作原理
备份过程
- 复制InnoDB数据文件(物理拷贝)
- 备份期间监控redo日志变化
- 锁定MyISAM表(非InnoDB)进行一致性备份
- 保存备份点日志位置
恢复过程
- 应用redo日志前滚事务
- 回滚未提交事务
- 恢复非InnoDB表
2. 增量备份原理
- LSN(Log Sequence Number):每个InnoDB页的日志序列号
- 增量备份只拷贝LSN大于基础备份LSN的页
3. 高级备份选项
压缩备份
xtrabackup --backup --compress --target-dir=/backup/compressed
加密备份
xtrabackup --backup --encrypt=AES256 --encrypt-key="your_encryption_key" --target-dir=/backup/encrypted
并行处理
xtrabackup --backup --parallel=4 --target-dir=/backup/parallel
流式备份
xtrabackup --backup --stream=xbstream | gzip > backup.xb.gz
4. 生产环境实践
备份策略
# 每周日全量备份
0 2 * * 0 /usr/bin/xtrabackup --backup --target-dir=/backup/full_$(date +\%F)# 每日增量备份
0 2 * * 1-6 /usr/bin/xtrabackup --backup --incremental-basedir=/backup/last_full --target-dir=/backup/inc_$(date +\%F)
备份验证
# 创建测试实例
xtrabackup --prepare --target-dir=/backup/full
mysqld --no-defaults --datadir=/backup/full --socket=/tmp/test.sock# 运行一致性检查
pt-table-checksum --socket=/tmp/test.sock