XtraBackup工具详解 Part 8 使用innobackupex对增量备份进行恢复

时间:2022-07-23
本文章向大家介绍XtraBackup工具详解 Part 8 使用innobackupex对增量备份进行恢复,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

前情提要

XtraBackup工具详解 Part 1 xtrabackup介绍

XtraBackup工具详解 Part 2 xtrabackup安装

XtraBackup工具详解 Part 3 XtraBackup工作原理

XtraBackup工具详解 Part 4 XtraBackup权限及配置

XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备

XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复

XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份

实验环境

此次实验的环境如下

  • MySQL 5.7.25
  • Redhat 6.10
  • 操作系统账号:mysql
  • 数据库备份账号:backup

1. prepare阶段

上节我们介绍了如何使用innobackupex对数据库进行增量备份

结束后我们得到了一些非一致性的备份文件,即需要对未提交的事务回滚以及对提交的事务进行前滚

这个过程在xtrabackup中叫做准备阶段(prepare stage)

这个阶段完成后该备份文件就可被使用

2. prepare增量备份

通过上一节内容我们有如下备份内容

  • 第一次全备
  • 第一次增量备份
  • 第二次增量备份

我们同样使用--apply-log进行恢复动作,相当于Oracle的recover动作

我们需要依次进行prepare,即按照如下步骤进行

  • prepare第一次全备
  • prepare第一次增量备份
  • prepare第二次增量备份

还有需要注意的是和prepare全备不一样,除了最后一步,我们需要加上--redo-only

该参数使prepare只对commit过的语句进行提交,而不是回滚未提交的语句,这样做是为了能够继续prepare

如果没有加上--redo-only则prepare过的数据文件为一致状态,无法继续prepare

如果内存有空闲,可使用--use-memory加快速度

2.1 prepare全备

innobackupex --apply-log  --redo-only --use-memory=1G /oradata/data/mysql/xtra/full/2019-06-03_10-43-49

结束后会出现如下提示

150806 01:01:57 InnoDB: Shutdown completed; log sequence number 1609228 150806 01:01:57 innobackupex: completed OK!

这时数据文件处于非一致状态

2.2 prepare第一次增量备份

注意这里第一个参数是全备的路径,第二个是增量的路径

innobackupex --apply-log  --redo-only --use-memory=1G /oradata/data/mysql/xtra/full/2019-06-03_10-43-49  --incremental-dir=/oradata/data/mysql/xtra/incr/2019-06-03_10-44-29 

这时已经将第一次增量备份的内容附加到了全备的数据文件上了

这时数据文件处于非一致状态

2.3 prepare第二次增量备份

由于这是最后一次增量备份,所以这里不需要加--redo-only参数

忘记去掉也可继续到下一步

innobackupex --apply-log  --use-memory=1G /oradata/data/mysql/xtra/full/2019-06-03_10-43-49  --incremental-dir=/oradata/data/mysql/xtra/incr/2019-06-03_10-50-04

2.4 最后的prepare

这里我们对全备目录进行一次prepare,不需要加--redo-only参数

这步是可选的,如果忘记的话,MySQL会在启动是自动执行这步,即做灾难恢复

innobackupex --apply-log  --use-memory=1G /oradata/data/mysql/xtra/full/2019-06-03_10-43-49 

这时数据文件一致了,可以进行到下一步

需要注意恢复的顺序不可以乱,否则将导致备份无法使用,可以通过xtrabackup_checkpoints文件确认

3. copy 数据文件

这个阶段我们使用--copy-back将prepare过的数据文件拷贝至需要还原的服务器的datadir目录

我们需要注意如下几点

  • innobackupex 读取my.cnf文件获取数据文件(datadir)位置
  • datadir目录必须为空
  • 命令允许用户必须对datadir目录有读写权限
  • 使用datadi目录的数据库实例必须关闭
innobackupex --copy-back  /oradata/data/mysql/xtra/full/2019-06-03_10-43-49

注意这里使用的是全备的目录,因为我们已经将增量数据附加过去了

如果磁盘空间不大,我们可以使用--move-back参数在拷贝完成后删除备份文件(文件目录仍保留)

同样结束后会显示completed OK字样

最后datadir的文件如下图

4. 启动数据库

首先我们需要注意下文件的权限,如果不是使用mysql账号执行的备份和恢复,首先要更改权限

$ chown -R mysql:mysql /var/lib/mysql

最后我们启动数据库即可

service mysqld start 

到这里我们完成使用innobackupex进行增量备份和还原

5. 参考资料

本专题所有内容翻译子Percona XtraBackup的官方文档

可通过如下链接下载 http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/

觉得文章不错的欢迎关注,转发,收藏~