补充mysql增量备份和恢复

这节还是补充一下增量恢复吧,数据库太大的时候,增量的好处就体现出来了。
增量备份命令格式如下:

innobackupex –defaults-file=/data/mysql/3306/my.cnf –user=admin –password=admin –incremental-basedir=/data/mysql/3306/backup/2015-05-05_05-00-04 –incremental /data/mysql/3306/backup/

其中–incremental-basedir指向全备目录,–incremental指向增量备份的目录。
上面语句执行成功之后,会在–incremental执行的目录下创建一个时间戳子目录

在备份目录下,有一个文件xtrabackup_checkpoints记录着备份信息,

全备的信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
[plain]
backup_type = full-backuped
from_lsn = 0
to_lsn = 31829454128
last_lsn = 31829454499
compact = 0
基于该全备的增量备份的信息如下:
[plain]
backup_type = incremental
from_lsn = 31829454128
to_lsn = 31829566882
last_lsn = 31829566882
compact = 0

从上面可以看出,增量备份的from_lsn正好等于全备的to_lsn。
由此推理,在某次备份的基础上,我们也可以再进行第二次或者第n次增量备份。

增量备份的恢复比全备要复杂很多,第一步是在所有备份目录下重做已提交的日志,如:

1
2
3
4
[plain]
innobackupex –apply-log –redo-only BASE-DIR
innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1
innobackupex –apply-log BASE-DIR –incremental-dir=INCREMENTAL-DIR-2

其中BASE-DIR是指全备目录,INCREMENTAL-DIR-1是指第一次的增量备份,INCREMENTAL-DIR-2是指第二次的增量备份,以此类推。
这里要注意的是:最后一步的增量备份并没有–redo-only选项!还有,可以使用–use_memory提高性能。
以上语句执行成功之后,最终数据在BASE-DIR(即全备目录)下,这部分操作其意义在于将增量物理文件增量至全备份物理文件中,接下去进行全备份恢复即可达到目的。
第一步完成之后,我们开始第二步,
回滚未完成的日志:

1
2
[plain]
innobackupex –apply-log BASE-DIR

上面执行完之后,BASE-DIR里的备份文件已完全准备就绪,最后一步是拷贝:

1
2
[plain]
innobackupex –copy-back BASE-DIR

增量叠加到全备份后的第二步操作跟全备份的恢复操作步骤就一样了。