xtrbackup备份,及恢复数据

模拟定时任务周日备份数据,周一数据变化,周一crontab定时任务增量备份,周二数据变化,周二crontabl增量备份,然后有人删库,我们进行恢复数据

  1. 模拟crontab 里的定时任务周日全备

[root@db01 b]#innobackupex --user=root --password=oldboy123 --no-timestamp /b/full

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000028 | 55042 | | | |

+------------------+----------+--------------+------------------+-------------------+

  1. 模拟周一数据变化

mysql> create table city1 select * from city;

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000028 | 188930 | | | |

+------------------+----------+--------------+------------------+-------------------+

  1. 执行crontabl周一增量备份

[root@db01 b]#innobackupex --user=root --password=oldboy123 --no-timestamp --incremental --incremental-basedir=/b/full /b/inc1

[root@db01 b]#cat /b/full/xtrabackup_checkpoints /b/inc1/xtrabackup_checkpoints

  1. 再次数据变化

mysql> create table world.city2 select * from world.city;

  1. 模拟周二增量备份

[root@db01 backup]#innobackupex --user=root --password=oldboy123 --no-timestamp --incremental --incremental-basedir=/b/周一增量路径 /b/周二增量路径

[root@db01 backup]#innobackupex --user=root --password=oldboy123 --no-timestamp --incremental --incremental-basedir=/b/inc1 /b/inc2

  1. 全备,第一次增量,和第二次增量 3个点都接上才能恢复数据

  1. 删除mysqldata目录

[root@db01 ~]#rm -fr /application/mysql/data/*

[root@db01 ~]#pkill mysql

  1. 数据进行恢复

  2. 恢复数据注意事项:

1 增量备份是不能直接恢复使用,必须要把所有增量合并到同一个全备中,最后进行一次恢复,会读ch文件自动的接到一起, 才能恢复增量(不像别的产品,恢复增量要依次恢复增量),

  1. 在合并过程中,顺便进行备份的准备,(apply-log),在准备过程中,只有最后一次合并增量redo和undo都应用,中间合并过程只应用redo,只进行前滚,不做回滚,防止lsn号接不上
  2. 全备准备

--apply-log 回滚和前滚

-- redo-only 之前滚

(只对redo进行应用,就是前滚,因为是热备,有的数据没有提交,innobackup把redo一并备份了.所以要做redo前滚)

[root@db01 ~]#innobackupex --apply-log --redo-only /backup/full

  1. 把第一次增量合并到全备

合并inc1合并到full中,并且apply-log,只应用redo,不应用undo

--incremental-dir 指定要合并的增量备份路径

[root@db01 b]#innobackupex --user=root --password=oldboy123 --apply-log --redo-only --incremental-dir=/b/inc1 /b/full

    

  1. 第二次增量备份合并到全备

合并inc2合并到full中,redo和undo都应用

[root@db01 b]#innobackupex --user=root --password=oldboy123 --apply-log --incremental-dir=/b/inc2 /b/full

  1. 最后一次进行备份准备

整体full执行apply-log,redo和undo都应用

[root@db01 b]#innobackupex --apply-log /b/full

  1. 授权重启

[root@db01 /]#chown - R mysql.mysql /application/mysql/data/

[root@db01 /]#/etc/init.d/mysqld start

原文地址:https://www.cnblogs.com/john5yang/p/10516934.html