XtraBackup 数据库备份

一、备份

1、备份原因:服务器损坏、人为误删

2、备份目标:数据一致性、服务可用性

3、备份技术

物理备份(冷备份):

直接复制数据库文件,拷贝数据 优点:快;缺点:服务停止

逻辑备份(热备份):

备份的是建表、建库、插入等 SQL 语句(DDL、DML、DCL),效率较低

4、备份种类

完全备份、增量备份、差异备份

二、XtraBackup

Percona XtraBackup 是 Percona 开发的一个专业数据库备份工具,主要用于MySQL 和 MariaDB 数据库系统。它在数据库备份方面发挥了重要作用。

1、安装 XtraBackup

① 安装 percona 的 yum 仓库

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm

刷新 yum 仓库: yum repolist

查看 yum 仓库里的 xtrabackup 安装包

② 安装 percona-xtrabackup-24.x86_64

yum -y install percona-xtrabackup-24.x86_64

如果安装失败,显示:错误:软件包:percona-xtrabackup-24-2.4.28-1.el7.x86_64 (percona-release-x86_64) 需要:libev.so.4()(64bit)

则要先安装 libv.so()(64bit)

在 http://rpmfind.net/linux/RPM/index.html 里搜索 libev.so.4()(64bit)

找到 rpm -ivh libev-4.04-2.e16.x86_64.rpm

下载后安装

再次执行 yum -y install percona-xtrabackup-24.x86_64 即可成功安装

2、完全备份

语法:innobackupex --user=用户名 --password=密码 /xtrabackup/full

查看备份文件夹:

二进制文件位置:

3、完全恢复

(1) 模拟环境损坏(建议先把文件复制一份再模拟):

先停止数据库:systemctl stop mariadb

删除库文件:rm -rf /var/lib/mysql/*

删除日志文件:rm -rf /var/log/mariadb/mariadb.log

(2) 还原

应用备份的日志文件进行回滚

innobackupex --apply-log /xtrabackup/full/2023-08-17_20-19-58/

恢复文件

innobackupex --copy-back /xtrabackup/full/2023-08-17_20-19-58/

(3) 验证

ls /var/lib/mysql/

记得恢复后要修改属主和属组

4、增量备份

记录上次完整备份后发生变更的数据

(1) 创建一个测试库和测试表

(2) 进行一次完整备份(所有增量备份都要基于完整备份)

先清除之前实验的备份文件:rm  -rf  /xtrabackup/*

将时间调整到一个比较完整的时间,模拟周一且方便查看

进行完整备份:

innobackupex  --user=root  /xtrabackup(数据库有设置密码的需要再添一行 --password)

查看备份文件:

(3) 增量备份:周二

更新时间,模拟周二:

往测试表中添加信息:

进行增量备份

innobackupex  --user=root  --incremental /xtrabackup/  --incremental-basedir=/xtrabackup/2023-05-01_00-03-31

--incremental  /xtrabackup/ :进行增量备份

--incremental-basedir=/xtrabackup/2023-05-01_00-03-31:基于周一的备份

查看备份文件

(4) 增量备份:周三

更新日期,并在数据表中添加新内容

基于周二的备份进行增量备份

innobackupex  --user=root  --incremental /xtrabackup/  --incremental-basedir=/xtrabackup/2023-05-02_00-09-40

查看备份文件:

(5) 增量恢复

① 停止数据库并清理环境:

systemctl stop mariadb

rm -rf /var/lib/mysql/*

② 回滚合并:

回滚到周一的完整备份:

innobackupex  --apply-log  --redo-only  /xtrabackup/2023-05-01_00-03-31

--redo-only:进行增量备份时,只记录事务日志的变化,而不执行这些变化,保持备份的一致性。

周二的增量备份合并到周一:

innobackupex  --apply-log  --redo-only  /xtrabackup/2023-05-01_00-03-31 --incremental-dir=/xtrabackup/2023-05-02_00-09-40

周三的增量备份合并到周一:

innobackupex  --apply-log  --redo-only  /xtrabackup/2023-05-01_00-03-31 --incremental-dir=/xtrabackup/2023-05-03_00-03-38

③ 还原:

还原到周一的备份(此时周一的备份里已经有周二、周三的增量)

innobackupex --copy-back /xtrabackup/2023-05-01_00-03-31

修改属主和属组:

启动数据库,并查看数据:

5、差异备份

增量备份:体积小速度快,但操作频繁

差异备份:基于完整备份之后的所有改变,体积稍大

( 介于完整备份与增量备份之间的备份方法 )

(1) 完整备份周一

修改日期至周一、创建测试表、插入数据、进行完整备份

周一完整备份:innobackupex  --user=root /xtrabackup/

(2) 周二

时间调到周二,插入数据,不备份

(3) 周三

时间调到周三,插入数据,基于周一进行差异备份(差异的数据包含周二周三)

差异备份:innobackupex  --user=root  --incremental  /xtrabackup --incremental-basedir=/xtrabackup/2023-05-01_00-03-15

查看备份文件:

(4) 差异恢复:

① 停止数据库,清理环境

systemctl stop mariadb

rm -rf /var/lib/mysql/*

② 回滚合并

回滚周一:innobackupex --apply-log --redo-only /xtrabackup/2023-05-01_00-03-15

合并周三:innobackupex --apply-log --redo-only /xtrabackup/2023-05-01_00-03-15 --incremental-dir=/xtrabackup/2023-05-03_00-02-48

③ 还原

还原到周一:innobackupex --copy-back /xtrabackup/2023-05-01_00-03-15

修改权限并启动查看:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值