3、增量的备份恢复操作
然后进行一下增量备份恢复的测试工作:
首先在test数据库下创建一张测试表:
由于之前已经做过了全备了,所以这里就直接可以做增量备份。
使用如下命令进行增量备份:
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --incremental-basedir=/data/backup/0408/incr --incremental /data/backup/0408/incr
很不幸失败了:
原因嘛,也给出来了
error: failed to read metadata from /data/backup/0408/incr//xtrabackup_checkpoints
当然,这个错误很明显,就是要找到之前全备的一个基点,也就是增量备的起始点lsn,这样才能进行增量备份,但是这里我直接指定了增量备份的basedir目录/data/backup/0408/incr,所以导致报了错,然后修改回来就没有问题了。这里引用jeanron大师的总结,很精辟:
原因就在于里面的一个关键文件 _checkpoints
使用增备得有一个参考点,从哪里开始,即从哪个LSN开始,这个LSN在指定的参数–incremental-basedir=/data/backup/0408/incr下不存在,因为这个是一个新目录,所以需要指向全库备份的目录。
然后修复后备份就没问题了,英为有了这个参考点LSN,所以需要要说明的是这个备份其实有累计增量和差异增量了。
这个怎么理解呢,比如周日做一个全备,周一做一个增备,周二做一个周日全备到周二的一个增备,这就是一个累计增量备份,而周三的时候做一个周二至周三数据变化的备份,就是一个差异增量备份。
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --incremental-basedir=/data/backup/0408/ --incremental /data/backup/0408/incr
为了区别两次增量的不同,继续插入
再次进行基于上一次增量备份的增量备份:
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --incremental-basedir=/data/backup/0408/incr/2017-03-04_13-21-52 --incremental /data/backup/0408/incr
然后删除test数据库中的表t
然后我们对比一下全备,第一次增备,第二次增备的checkpoints文件内容:
lsn值逐渐递增。
增量还原分为两个步骤
a.prepare
innobackupex –apply-log /path/to/BACKUP-DIR
此时数据可以被程序访问使用;可使用—use-memory选项指定所用内存以加快进度,默认100M;
b.recover
innobackupex –copy-back /path/to/BACKUP-DIR
从my.cnf读取datadir/innodb_data_home_dir/innodb_data_file_path等变量
先复制MyISAM表,然后是innodb表,最后为logfile;
开始合并操做:
第一次是全备的redo apply
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --apply-log --redo-only /data/backup/0408/
第二次是第一次增备的redo apply
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --apply-log --redo-only /data/backup/0408/ --incremental-dir=/data/backup/0408/incr/
其实整个过程就是一个merge的过程,可以看到全备的checkpoint中的信息已经发生了变化。
然后进行第一次还原操作:
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --copy-back /data/backup/0408/
然后赋予相应的mysql权限
注意:此次没有关闭mysql服务
登陆:
终于恢复回来了,好不容易!!
TIPS:在进行恢复的过程当中还是需要关闭服务再恢复,再启动服务,不然的话,还是会出现上述的报错,还挺麻烦。
这个过程我们相当于完成了一个全备+一个增备的数据恢复过程。
而我们在一个增备之后又插入了一些数据,这个怎么继续恢复呢,还是prepare的过程。这个路径需要注意,还是merge到全备中。
tips:在prepare阶段,不能关闭MySQL的服务,在copy的阶段再进行关闭MySQL服务的操作
innobackupex --defaults-file=/etc/my.cnf -uroot -pmysql123 --apply-log --redo-only /data/backup/0408/ --incremental-dir=/data/backup/0408/incr/2017-03-04_13-35-29
查看xtrabackup_checkpoints
已经更新到了最新的lsn号
------
未完待续!!!