zoukankan      html  css  js  c++  java
  • rbd的增量备份和恢复

    前言

    快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的东西没用破坏,举个简单的例子,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
  • 相关阅读:
    MVC 学习(二)之Linq to Sql 简单Demo
    MVC 学习(一)Linq to Entities 简单Demo
    MVC学习(三)Code-First Demo
    pickle 模块
    json 模块
    sys 模块
    os 模块
    random(随机)模块
    time 模块
    python之函数基础
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575355.html
Copyright © 2011-2022 走看看