前言

快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的东西没用破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统的操作,想恢复快照,前提是存储快照的存储系统没用破坏,一旦破坏了是无法恢复的

ceph里面也有快照的功能,同样的,在这里的快照是用来保存存储系统上的状态的,数据的快照能成功恢复的前提是存储系统是好的,而一旦存储系统坏了,快照同时会失效的,本篇文章利用ceph的快照去实现一个增量的备份功能,网上也有很多这个脚本,这里主要是对里面细节做一个实践,具体集成到一套系统里面去,自己去做一个策略就行了,总之多备份一下,以备不时之需,并且也可以实现跨机房的增量备份,这个在某些云计算公司已经实现了,这样一旦发生故障的时候,能够把损失减到最小

快照的创建和数据的导出

上图是一个快照的创建和导出的过程,这里详细的描述下这些操作

创建快照

rbd snap create testimage@v1
rbd snap create testimage@v2

这两个命令是在时间点v1和时间点v2分别做了两个快照

rbd export-diff rbd/testimage@v1 testimage_v1

这个命令是导出了从开始创建image到快照v1那个时间点的差异数据导出来了testimage_v1,导出成本地文件testimage_v1

rbd export-diff rbd/testimage@v2 testimage_v2

这个命令是导出了从开始创建image到快照v2那个时间点的差异数据导出来了,导出成本地文件testimage_v2

rbd export-diff rbd/testimage@v2 --from-snap v1 testimage_v1_v2

这个命令是导出了从v1快照时间点到v2快照时间点的差异数据,导出成本地文件testimage_v1_v2

这个地方上面的导出的数据:

v1时间点数据 + v1_v2之间数据 = v2 时间点数据

rbd export-diff rbd/testimage testimage_now

这个就是导出了从image创建到当前的时间点的差异数据

快照的数据恢复

快照的恢复过程使用的是刚刚上面提到的备份到本地的那些文件

首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息

rbd create testbacknew --size 1

现在假如想恢复到v2那个快照的时间点,那么可以用两个方法

1、直接基于v2的时间点的快照做恢复

rbd import-diff testimage_v2 rbd/testbacknew

2、直接基于v1的时间点的数据,和后面的增量的v1_v2数据(要按顺序导入)

rbd import-diff testimage_v1 rbd/testbacknew
rbd import-diff testimage_v1_v2 rbd/testbacknew

到这里数据就已经恢复了

如何利用这个

实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了,例如:

今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输

相关文章

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-06-22
修改错别字 武汉-运维-磨渣 2016-06-22
修改错别字 武汉-运维-磨渣 2017-12-26

rbd的增量备份和恢复的更多相关文章

  1. ceph中rbd的增量备份和恢复

    ceph中rbd的增量备份和恢复 ceph的文档地址:Ceph Documentation ​ 在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做O ...

  2. xtrabackup之Innobackupex增量备份及恢复

    演示增量备份 #启动一个全备 innobackupex \ > --defaults-/my.cnf \ > --host=127.0.0.1 \ > --user=xtrabk \ ...

  3. mysql全备和增量备份以及恢复过程(percona工具)

    实验环境 系统环境,内核版本和xtrabackup工具版本 [root@linux-node1 mysql]# cat /etc/redhat-release CentOS Linux release ...

  4. innobackupex做MySQL增量备份及恢复【转】

    创建备份用户 mysql> grant process,reload,lock tables,replication client on *.* to 'backup'@'localhost' ...

  5. 【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  6. 16、xtrabackup 增量备份及恢复

    备份命令如下 备份命令如下 全量备份 #  innobackupex -p123123 /backup # ls /backup 2017-04-08_13-36-11 增量备份或差量备份 # inn ...

  7. oracle:rman恢复----通过增量备份来恢复

    试验计划:先rman进行一个0级备份,插入表相关数据,再进行level 1级增量备份,进行rman恢复 实验环境:归档模式下,oracle10.2.0.1 开始试验: 1. rman level 0级 ...

  8. 数据库增量备份,恢复innobackex

    Xtrabackup 一款强大的在线热备工具 备份过程中不锁表,适合生产坏境 Xtrabackup:C程序,支持innodb/xtradb Innobackupex:innodb/mysiam #rp ...

  9. MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复 实例

    innobackupex 的使用方法1.完全备份 参数一是完全备份地址 完全备份到/data/mysql/back_up/all_testdb_20140612 目录下innobackupex --u ...

随机推荐

  1. ip地址和网络端口总结

    ip地址 ip地址默认指ipv4地址,用4个字节表示,转换为点分10进制,可以表达范围0.0.0.0到255.255.255.255的地址,大约为42.95亿个地址.互联网编号分配机构(IANA,In ...

  2. 解决React前端在开发环境的跨域问题

    在前后端分离的分布式架构中,跨域是一道无法绕过去的门槛,众所周知,生产环境上解决跨域最便捷的方式是使用Nginx来处理,那么,在本地开发环境又该如何处理呢? React框架里处理跨域问题,可以使用ht ...

  3. 三色二叉树 ---伪树形dp

    题目描述 一棵二叉树可以按照如下规则表示成一个由0.1.2组成的字符序列,我们称之为"二叉树序列S": 0 该树没有子节点 1S1 该树有一个子节点,S1为其二叉树序列 1S1S2 ...

  4. spring注解@Transactional 和乐观锁,悲观锁并发生成有序编号问题

      需求:系统中有一个自增的合同编号,在满足并发情况下,生成的合同编号是自增的. 测试工具:Apache Jmeter 实现方法: 创建一个数据库表.编号最大值记录表 表结构类似 CREATE TAB ...

  5. PHP SPL标准库-迭代器

    通过某种统一的方式遍历链表或者数组中的元素的过程叫做迭代遍历,这种统一的遍历工具我们叫做迭代器. PHP中迭代器是通过Iterator 接口定义的. ArrayIterator迭代器 foreach ...

  6. C++ 设置软件激活不息屏

    SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);

  7. git学习(九) idea git stash操作

    在前面说过,git stash 命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容:git stash 作用的范围包括工作区和暂存区中的内容,没 ...

  8. 攻防世界-web2

    打开题目直接一梭子代码,给我们了个加密的密文,然我们解出flag 审计一波 先时将flag字符串逆序,然后每一个ascii码数值+1,然后base64加密,然后逆序,然后再rot13加密 得到加密的密 ...

  9. day03基本数据类型

    运算符补充 ​ 今天补充一些简单知识: #!/usr/bin/env python # -*- coding:utf-8 -*- value = "我是中国人" # 判断'中国'是 ...

  10. javascript中的描述对象(Descriptor)获取和定义随笔

    最近再看了阮一峰的老师的ES6入门,发现一个有趣的东西,借此纪录以及整理下. 对象的每个属性都有一个描述对象(Descriptor),用来控制该属性的行为.Object.getOwnPropertyD ...