teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具,在twitter上搜索相关信息的时候看到,觉得不错就拿来试用一番
这是个什么软件
一个用来备份ceph的RBD的image的开源软件,提供了两种模式
增量:在给定备份时间窗口内基于rbd快照的增量备份
完全:完整映像导出时不包含快照
注意一致性:此工具可以生成rbd图像的快照,而不会感知到它们的文件系统的状态,注意下rbd快照的一致性限制(http://docs.ceph.com/docs/hammer/rbd/rbd-snapshot/)由于“完全”模式不使用快照,“完全”模式下的实时映像备份不一致(“增量”模式始终使用快照)
超过时间窗口以后,会进行一次全量备份,并且把之前的快照进行删除掉,重新备份一次全量,并且基于这个时间计算是否需要删除备份的文件
软件包含以下功能:
支持存储池和多image的只对
支持自定义备份目标路径
配置文件支持
支持备份窗口设置
支持压缩选项
支持增量和全量备份的配置
编译安装
[root@lab8106 ~]#git clone https://github.com/teralytics/ceph-backup.git [root@lab8106 ~]# cd ceph-backup [root@lab8106 ceph-backup]# python setup.py install
|
安装过程中会下载一些东西,注意要有网络,需要等待一会
准备配置文件
[root@lab8106 ceph-backup]# mkdir etc/cephbackup/ [root@lab8106 ceph-backup]# cp ceph-backup.cfg etc/cephbackup/cephbackup.conf |
我的配置文件如下,备份rbd存储的zp的镜像,支持多image,images后面用逗号隔开就可以
[root@lab8106 ~]# cat etc/cephbackup/cephbackup.conf [rbd] window size = 7 window unit = days destination directory = tmp/ images = zp compress = yes ceph config = etc/ceph/ceph.conf backup mode = full check mode = no |
开始备份
全量备份配置
上面的配置文件已经写好了,直接执行备份命令就可以了
[root@lab8106 ~]# cephbackup Starting backup for pool rbd Full ceph backup Images to backup: rbd/zp Backup folder: tmp/ Compression: True Check mode: False Taking full backup of images: zp rbd image 'zp': size 40960 MB in 10240 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.25496b8b4567 format: 2 features: layering flags: Exporting image zp to tmp/rbd/zp/zp_UTC20170119T092933.full Compress mode activated # rbd export rbd/zp tmp/rbd/zp/zp_UTC20170119T092933.full Exporting image: 100% complete...done. # tar Scvfz tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz tmp/rbd/zp/zp_UTC20170119T092933.full tar: Removing leading `/' from member names |
压缩的如果开了,正好文件也是稀疏文件的话,需要等很久,压缩的效果很好,dd生成的文件可以压缩到很小
检查备份生成的文件
[root@lab8106 ~]# ll tmp/rbd/zp/zp_UTC20170119T092933.full* -rw-r--r-- 1 root root 42949672960 Jan 19 17:29 tmp/rbd/zp/zp_UTC20170119T092933.full -rw-r--r-- 1 root root 0 Jan 19 17:29 tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz |
全量备份的还原
rbd import tmp/rbd/zp/zp_UTC20170119T092933.full zpbk |
检查数据,没有问题
增量备份配置
写下增量配置的文件,修改下备份模式的选项
[rbd] window size = 7 window unit = day destination directory = tmp/ images = zp compress = yes ceph config = etc/ceph/ceph.conf backup mode = incremental check mode = no |
执行多次进行增量备份以后是这样的
[root@lab8106 ~]#ll /tmp/rbd/zpbk/ total 146452 -rw-r--r-- 1 root root 42949672960 Jan 19 18:04 zpbk@UTC20170119T100339.full -rw-r--r-- 1 root root 66150 Jan 19 18:05 zpbk@UTC20170119T100546.diff_from_UTC20170119T100339 -rw-r--r-- 1 root root 68 Jan 19 18:05 zpbk@UTC20170119T100550.diff_from_UTC20170119T100546 -rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100606.diff_from_UTC20170119T100550 -rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100638.diff_from_UTC20170119T100606 |
增量备份的还原
分成多个步骤进行
1、进行全量的恢复 # rbd import config@UTC20161130T170848.full dest_image 2、重新创建基础快照 # rbd snap create dest_image@UTC20161130T170848 3、还原增量的快照(多次执行) # rbd import-diff config@UTC20161130T170929.diff_from_UTC20161130T170848 dest_image |
本测试用例还原步骤就是
rbd import zpbk@UTC20170119T100339.full zpnew rbd snap create zpnew@UTC20170119T100339 rbd import-diff zpbk@UTC20170119T100546.diff_from_UTC20170119T100339 zpnew rbd import-diff zpbk@UTC20170119T100550.diff_from_UTC20170119T100546 zpnew rbd import-diff zpbk@UTC20170119T100606.diff_from_UTC20170119T100550 zpnew rbd import-diff zpbk@UTC20170119T100638.diff_from_UTC20170119T100606 zpnew |
检查数据,没有问题
总结
这个软件基于python的实现,可以说作者的实现逻辑是很清晰的,并且提供了配置文件的方式,基本上是各个细节都考虑的比较到位,很容易上手,可以直接拿来使用,或者集成到自己的平台中去,是一个很好的软件