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/
觉得文章不错的欢迎关注,转发,收藏~
- HTTPS静态服务搭建过程详解
- 基于Webkit的浏览器关键渲染路径介绍
- CodePlex 全面支持Subversion/TortoiseSVN
- 计算机程序的思维逻辑 (11) - 初识函数
- Android WebView 调试方法
- Python开发微信公众号后台(系列一)
- Consul最常用的命令和接口api
- webpack的Hot Module Replacement运行机制
- 如何使用Node.js编写命令工具——以vue-cli为例
- SpringBoot编写自定义的starter
- webpack3新特性简介
- Python机器学习算法入门之梯度下降法实现线性回归
- IronPython 2.0 beta 5
- node.js如何制作命令行工具(一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- java计算某日期之后的日期
- 文件上传之Html5 + jQuery上传、asp.net web api接收
- Struts2自定义结果视图(servlet验证码)
- jQuery Ajax传递数组到asp.net web api参数为空
- asp.net web api集成微信服务(使用Senparc微信SDK)
- asp.net web api添加统一异常处理
- .NET HttpClient扩展
- md5和base64加密解密
- asp.net web api添加自定义认证
- 代理模式实例
- FastDFS.Client操作文件服务器
- Oracle触发器实现监控某表的CRUD操作
- asp.net web api返回图片至前端
- sql模糊匹配中%、_的处理
- Dapper关联查询