xtrabackup
- Percona
官网:www.percona.com
percona-server
InnoDB --> XtraDB
Xtrabackup
percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库进行热备的工具
手册:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html
特点:
备份还原过程快速、可靠
备份过程不会打断正在执行的事务
能够基于压缩等功能节约磁盘空间和流量
自动实现备份检验
开源,免费
*由于前几天发过有mysql的安装教程这里就不解释那么多了 *
安装xtrabackup
这里我们使用yum安装
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum -y install percona-xtrabackup-24.x86_64
安装成功后查看一下是否完成
rpm -ql percona-xtrabackup-24
备份方式有两种
1.增量备份:每次仅备份自上一次备份(注意是上一次,不是第一次)以来有变化的文件,所 以备份体积小,备份速度快,但是恢复的时候,需要按备份时间顺序,逐个备份版本进行恢复,恢复时间长。
2.差量备份: 占用空间比增量备份大,比完整备份小,恢复时仅需要恢复第一个完整版本和最后 一次的差异版本(包含所有的差异),恢复速度介于完整备份和增量备份之间。
增量备份
连接数据库进行完全备份
innobackupex --user=root --password='123456' /xtrabackup/full
备份完成后查看备份结果
时隔一天我再次备份,使用增量备份
innobackupex --user=root --password='Zwl159...' --incremental /xtrabackup/full/ --incremental-basedir=/xtrabackup/full/2021-10-09_02-10-47/
这里发现我备份的数据比起全备来说少很多,这是因为我备份的数据是根据上次备份时的节点 开始备份的
增量备份恢复流程
模拟恢复流程 我这里停止数据库服务后 删除我的库和日志文件
systemctl stop mysqld
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
首先进行数据回滚合并
innobackupex --apply-log --redo-only /xtrabackup/full/2021-10-09_02-10-47
innobackupex --apply-log --redo-only /xtrabackup/full/2021-10-09_02-10-47 --incremental-dir=/xtrabackup/full/2021-10-10_00-07-48
合并成功后 进行恢复
nnobackupex --copy-back /xtrabackup/full/2021-10-09_02-10-47
数据恢复成功后对数据库服务进行恢复
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
数据库起来后验证一下是否成功
这里为了验证了一下
我第一次全量备份插入了一个id为1的字段
第二次增量备份我插入了一个id为2的字段
现在全部恢复成功
差异备份
差异备份比较于增量备份比较好理解
每次差异备份都是和全量备份的数据进行比较 进行差异备份
首先进行全量备份
innobackupex --user=root --password='Zwl159...' /xtrabackup
全备后查看 文件是否成功备份
这里是我的全备数据,这时我要写入一些数据进行差异备份
我这里插入了几条字段
进行差异备份
innobackupex --user=root --password='Zwl159...' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2021-10-10_00-52-53
备份后查一下
这里显示的大小就是差异的数据大小
差异备份还原
模拟恢复流程 我这里停止数据库服务后 删除我的库和日志文件
systemctl stop mysqld
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
首先进行数据回滚合并
innobackupex --apply-log --redo-only /xtrabackup/2021-10-10_00-52-53
innobackupex --apply-log --redo-only /xtrabackup/2021-10-10_00-52-53 --incremental-dir=/xtrabackup/2021-10-11_00-01-39/
现在开始恢复数据
innobackupex --copy-back /xtrabackup/2021-10-10_00-52-53/
数据恢复成功后对数据库服务进行恢复
chown -R mysql.mysql /var/lib/mysql
systemctl start mysqld
![在这里插入图片描述](https://img-blog.csdnimg.cn/2b03fe1d253d4c888c50b54098054140.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAWldM54ix5oqA5pyv,size_20,color_FFFFFF,t_70,g_se,x_16)
这里查询 所有数据都已恢复