目录
1.关于Percona XtraBackup
2. Percona XtraBackup有哪些特点?
3.安装Percona XtraBackup
3.1.环境信息
3.2.安装步骤
4. xtrabackup内部流程图
5.Percona XtraBackup基础语法
5.1.全量备份
5.2.增量备份
5.2.1.基于全量备份的增量备份
5.2.2.基于前一个增量备份的增量备份
5.2.3.备份准备
5.3.数据恢复
6.总结
1.关于Percona XtraBackup
Percona XtraBackup是世界上唯一的开源、免费的MySQL热备份 为InnoDB和XtraDB执行非阻塞备份的软件 数据库。使用Percona XtraBackup,您可以获得以下好处:
快速可靠地完成备份
备份期间不中断的事务处理
节省磁盘空间和网络带宽
自动备份验证
更快的恢复时间导致更高的延迟
2. Percona XtraBackup有哪些特点?
以下是Percona XtraBackup功能的简短列表。
创建热InnoDB备份而无需暂停数据库
对MySQL进行增量备份
将压缩的MySQL备份流式传输到另一台服务器
在线在MySQL服务器之间移动表
轻松创建新的MySQL复制副本
备份MySQL而不增加服务器负载
备份锁是Percona Server 5.6+中可用的
FLUSH TABLES WITH READ LOCK
的轻量级替代方案。Percona XtraBackup使用它们自动复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。Percona XtraBackup根据每秒IO操作数执行限制。
Percona XtraBackup跳过辅助索引页,并在准备紧凑备份时重新创建它们。
Percona XtraBackup甚至可以从完整备份中导出单个表,无论InnoDB版本如何。
使用Percona XtraBackup导出的表可以导入Percona Server 5.1、5.5或5.6+或MySQL 5.6+。
3.安装Percona XtraBackup
3.1.环境信息
主机IP | 操作系统 | Mysql版本 | XtraBackup版本 |
---|---|---|---|
172.17.0.2 | CentOS Stream release 9 | 8.0.37 | 8.0.35 |
3.2.安装步骤
Percona XtraBackup的安装方法有三中YUM仓库安装,RPM包安装,源码编译安装,下面介绍到的是YUM仓库安装
-
以
root
用户身份或使用sudo运行以下命令来安装Percona yum仓库:sudo yum install \ https://repo.percona.com/yum/percona-release-latest.\ noarch.rpm
-
启用存储库:
sudo percona-release enable-only tools release
如果Percona XtraBackup预期与 上游MySQL服务器,只需要开启`tools仓库:
sudo percona-release enable-only tools
-
通过运行以下命令安装Percona XtraBackup:
sudo yum install percona-xtrabackup-80
警告:
在CentOS 6上安装Percona XtraBackup之前,请确保安装了
libev
软件包。对于此操作系统,可以从EPEL存储库中获得libev
包。 -
要对使用
LZ4
或ZSTD
压缩算法进行的备份进行重新编译,请安装相应的软件包:sudo yum install zstd
4. xtrabackup内部流程图
5.Percona XtraBackup基础语法
Percona XtraBackup 提供了一系列丰富的命令行选项来执行MySQL和Percona Server的热备份操作。以下是一些基本和常用的语法示例,涵盖了全量备份、增量备份、备份准备和恢复等操作:
5.1.全量备份
xtrabackup --backup --user=root --password=<your_password> \ 2 --host=<hostname_or_ip> --port=<port_number> \ 3 --target-dir=<backup_directory>
--backup
表示执行备份操作。--user
和--password
分别指定MySQL的用户名和密码。--host
和--port
指定MySQL服务器的地址和端口。--target-dir
指定备份文件存放的目录。
5.2.增量备份
5.2.1.基于全量备份的增量备份
xtrabackup --backup --incremental-basedir=<full_backup_directory> \ 2 --target-dir=<incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>
--incremental-basedir
指定增量备份基于的全量备份目录。
5.2.2.基于前一个增量备份的增量备份
xtrabackup --backup --incremental-basedir=<previous_incremental_backup_directory> \ 2 --target-dir=<new_incremental_backup_directory> \ 3 --user=root --password=<your_password> \ 4 --host=<hostname_or_ip> --port=<port_number>
5.2.3.备份准备
对于全量备份,执行以下命令准备数据以便恢复:
xtrabackup --prepare --apply-log-only --target-dir=<backup_directory>
对于增量备份链,需要先对全量备份进行准备,然后依次对每个增量备份执行准备操作,最终对整个链进行最终的准备:
xtrabackup --prepare --apply-log-only --target-dir=<prepared_full_backup_directory> \ 2 --incremental-dir=<incremental_backup_directory>
5.3.数据恢复
将准备好的备份数据恢复到MySQL数据目录:
# 先停止MySQL服务
sudo systemctl stop mysql
# 将备份数据复制到MySQL数据目录(示例使用全量备份)
rsync -avP <prepared_backup_directory>/ /var/lib/mysql/
# 调整文件权限和属主
chown -R mysql:mysql /var/lib/mysql/
# 启动MySQL服务
sudo systemctl start mysql
6.总结
本篇文章介绍了Percona XtraBackup工具的安装、使用以及原理,后面会发布Percona XtraBackup的实战篇