物理备份(完全备份,增量备份,差异备份)

  • 完全备份:是指将整个数据库的数据和结构都备份下来,并生成一个全量备份文件。在后续的备份中,完全备份可以作为基准备份,用来进行增量备份或差异备份。

  • 增量备份:是指对于上一次备份以后发生的更改进行备份,这样只备份了这些更改,而不是所有的数据和结构。增量备份必须基于上一次完全备份或增量备份,不能直接基于上一次增量备份。多次增量备份可以形成备份链条,其中每个增量备份都依赖于前面的备份。如果备份链条中的任何一个备份丢失或损坏,就无法恢复最新的数据。

  • 差异备份:是一种特殊的增量备份方式,它是指对于上一次完全备份以后发生的更改进行备份。与增量备份不同,差异备份只需要基于上一次完全备份即可,无需依赖前面的备份。差异备份相较于增量备份,其恢复速度更快,但是需要占用更多的硬盘空间。

一.安装xtrabackup

官网:www.percona.com

二.完全备份

创建备份目录:mkdir  /xtrabackup/full  -p

备份:innobackupex   --user=root  --password=‘123’  /xtrabackup/full

完全备份恢复流程:

1.停止数据库 :systemctl stop mysqld

2.清理环境:rm -rf /var/lib/mysql/*  或 rm -rf  /var/log/mysqld.log  或  rm -rf /var/log/mysql-slow/slow.log

3.重演回滚,恢复数据:innobackupex  -apply-log  /xtrabackup/full/2023-10-07_11-47-49

恢复之前需要确认配置文件内有数据库目录指定 :/etc/my.cnf        datadir=/var/lib/mysql

                恢复数据 : innobackupex  --copy-back  /xtrabackup/full/2023-10-07_11-47-49

4.修改权限:chown -R mysql.mysql  /var/lib/mysql

5.启动数据库:systemctl  start mysqld

三.增量备份流程

原理:每次备份上一次备份到现在产生的新数据

1.完整备份:周一

[root@mysql-server ~]# rm -rf /xtrabackup/*
[root@mysql-server ~]# innobackupex --user=root --password='123' /xtrabackup
[root@mysql-server ~]# cd /xtrabackup/
[root@mysql-server xtrabackup]# ls
2023-08-20_14-51-35
[root@mysql-server xtrabackup]# cd 2019-08-20_14-51-35/
[root@mysql-server 2023-08-20_14-51-35]# ls
backup-my.cnf  ib_buffer_pool  mysql               sys   testdb                  xtrabackup_info
company        ibdata1         performance_schema  test  xtrabackup_checkpoints  xtrabackup_logfile

2.增量备份:周二  --  周三

在数据库中插入周二的数据:
mysql> insert into testdb.t1 values(2);    #模拟周二
[root@mysql-server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2023-08-20_14-51-35/
[root@mysql-server ~]# cd /xtrabackup/
[root@mysql-server xtrabackup]# ls
2023-08-20_14-51-35  2023-08-20_15-04-29    ---相当于周二的增量备份
在数据库中插入周三的数据:
mysql> insert into testdb.t1 values(3);   #模拟周三
[root@mysql-server ~]# innobackupex --user=root --password='123' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2023-08-20_15-04-29/      #基于前一天的备份为目录
[root@mysql-server ~]# cd /xtrabackup/
[root@mysql-server xtrabackup]# ls
2023-08-20_14-51-35  2023-08-20_15-04-29  2023-08-20_15-10-56   ---相当于周三的增量备份
查看一下备份目录:
[root@mysql-server ~]# ls /xtrabackup/
2023-08-20_14-51-35  2023-08-20_15-04-29  2023-08-20_15-10-56
    全备周一             增量周二               增量周三

增量备份恢复流程
1. 停止数据库
2. 清理环境
3. 依次重演回滚redo log--> 恢复数据
4. 修改权限
5. 启动数据库
6. binlog恢复

[root@mysql-server ~]# systemctl stop mysqld
[root@mysql-server ~]# rm -rf /var/lib/mysql/*
依次重演回滚redo log:
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2023-08-20_14-51-35
周二 ---  周三
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2023-08-20_14-51-35 --incremental-dir=/xtrabackup/2023-08-20_15-04-29
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/2023-08-20_14-51-35 --incremental-dir=/xtrabackup/2023-08-20_15-10-56/
恢复数据:
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/2023-08-20_14-51-35/
修改权限
[root@mysql-server ~]# chown -R mysql.mysql /var/lib/mysql
[root@mysql-server ~]# systemctl start mysqld
登陆上去看一下:  

 四.差异备份

创建差异备份目录

周一完整备份:innobackupex  --user=root  --password=‘123’  /home/wz

周二增量备份:innobackupex --user=root --password='123' --incremental /home/zl/ --incremental-basedir=/home/wz/2023-08-20_14-51-35/

周三增量备份:innobackupex --user=root --password='123' --incremental /home/zl/ --incremental-basedir=/home/zl/2023-08-20_15-04-29/ 

周四差异备份:innobackupex --user=root --password='123' --incremental /home/cy --incremental-basedir=/home/wz/2023-08-20_14-51-35/

差异备份恢复流程

1. 停止数据库
2. 清理环境
3. 重演回滚redo log(周一,某次差异)--> 恢复数据
4. 修改权限
5. 启动数据库
6. binlog恢复

停止数据库,清理环境

1.恢复全量redo log:innobackupex --apply-log --redo-only /home/wz/完全备份目录(周一)

2.恢复差异的redo log:innobackupex --apply-log --redo-only /home/wz/完全备份目录(周一)--incremental-dir=/home/cy/周四差异备份

3.恢复数据:innobackupex --copy-back /home/wz/完全备份目录(周一)

4.修改权限:chown -R mysql.mysql /var/lib/mysql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值