MYSQL备份恢复知识:第十章:xTraBackup备份工具
Xtrabackup软件是Percona公司开源的MySQL备份工具,功能与使用方法与MEB基本相同。
1 备份
全量备份的执行语法如下:
Parallel:并发度
History:备份的LABEL。Xtrabackup命令,会自动创建一个名为PERCONA_SCHEMA的库,其中记录了备份的时间、LSN和LABEL等。LABEL,可用于标识备份,也可以作为增量备份的基础数据关键字。
执行过程,与MEB相似,但是有一些区别。MEB为两次执行LOCK INSTANCE,第一次获取数据文件结构,第二次重新备份发生过变化的数据文件。xTraBackup,只执行一次LOCK INSTANCE,待全部数据文件备份完成后,再UNLOCK。
如果执行增量备份,语法如下:
增量的计算,还有另外两种方法。一是根据label,找到上一次备份的基础数据,计算增量的内容。二是根据上一次备份的lsn,计算增量的备份内容。将上条命令中的incremental-basedir替换成以下两个参数中的一个:
--incremental-lsn=
--incremental-history-name=
例如:
$ xtrabackup --target-dir=/tmp/xtrafull-incr --backup --history=xtra0514-incr --incremental-history-name=xtra0514
$ xtrabackup --target-dir=/tmp/xtrafull-incr1 --backup --history=xtra0514-incr1 --incremental-lsn=698256623
2 恢复
2.1 全量恢复
恢复分为两步骤进行,语法如下:
1) 处理备份数据
备份数据包含了非一致性的数据文件、REDO和BIN日志。这个过程就是使用日志将数据文件达到一致性状态。
$ xtrabackup --prepare --target-dir=/tmp/xtrafull
Target-dir:备份数据保存的路径
Prepare:在备份数据中,进行日志的apply,并且对比Redo和Binlog。决定提交或回滚。(概念在前面章节中,两段式提交)
2) 拷贝数据
第一个步骤后,备份数据已经满足一致性要求。第二步,将数据拷贝到DATADIR路径下。
$ xtrabackup --defaults-file=/mysql/my.cnf --copy-back --target-dir=/tmp/xtrafull
Copy-back,将prepare状态的数据拷贝回DATADIR路径中。
2.2 增量恢复
恢复备份的恢复,语法如下:
1) 处理全量备份数据
在恢复增量数据前,需要先进行全量恢复。但是与全量恢复的步骤有区别,需要修改为:
$ xtrabackup --prepare --target-dir=/tmp/full --apply-log-only
这里,添加了apply-log-only的意思是在通过日志来处理数据文件的过程中,只进行提交,不进行回滚。原因是,有些交易在备份数据中满足回滚的要求,但是这笔交易在后续的增量中可能是提交的。如果这个时候进行了回滚,后续的增量将出现数据不一致的情况。因此,如果要计划进行增量的恢复,在前面的数据恢复就不能进行回滚。不论前面的恢复是全量恢复还是增量恢复,只有最后一个恢复动作才可以进行回滚。
2) 处理增量备份数据
$ xtrabackup --prepare --target-dir=/tmp/xtrafull --incremental-dir=/tmp/xtrafull/incr
如果后续还有增量要进行恢复,语法应该为
$ xtrabackup --prepare --target-dir=/tmp/xtrafull --incremental-dir=/tmp/xtrafull/incr --apply-log-only
3) 拷贝数据
$ xtrabackup --defaults-file=/mysql/my.cnf --copy-back --target-dir=/tmp/xtrafull
已经将全量和增量的数据处理完成,拷贝回DATADIR路径中
CSDN视频课程:
https://edu.csdn.net/lecturer/8135?spm=1002.2001.3001.4144