一、简介
一个用来备份ceph的RBD的image的开源软件,提供了两种模式
增量:在给定备份时间窗口内基于rbd快照的增量备份
完全:完整映像导出时不包含快照
超过时间窗口以后,会进行一次全量备份,并且把之前的快照进行删除掉,重新备份一次全量,并且基于这个时间计算是否需要删除备份的文件
软件包含以下功能:
 	- 支持存储池和多image的只对
 
 	- 支持自定义备份目标路径
 
 	- 配置文件支持
 
 	- 支持备份窗口设置
 
 	- 支持压缩选项
 
 	- 支持增量和全量备份的配置
 
二、编译安装
[root@node191 ~]# git clone https://github.com/teralytics/ceph-backup.git
[root@node191 ~]# cd ceph-backup/
[root@node191 ~]# python setup.py install
安装过程中会下载一些东西,注意要有网络,需要等待一会
三、开始备份
全量备份配置
| [root@node191 ~]# mkdir /etc/cephbackup/
[root@node191 ~]# cp /root/ceph-backup/ceph-backup.cfg /etc/cephbackup/cephbackup.conf | 
我的配置文件如下,备份rbd存储的zhang的镜像,支持多image,images后面用逗号隔开就可以
| [root@node191 ~]# cat /etc/cephbackup/cephbackup.conf
[rbd]
window size = 7
window unit = days
destination directory = /home/rbd-backup/
images = zhang
compress = yes
ceph config = /etc/ceph/ceph.conf
backup mode = full
check mode = no | 
 
上面的配置文件已经写好了,直接执行备份命令就可以了
| [root@node191 media]# cephbackup
Starting backup for pool rbd
Incremental ceph backup
Images to backup:
rbd/zhang
Backup folder: /home/rbd-backup/
Compression: True
Check mode: False
rbd image 'zhang':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.18b5196b8b4567
format: 2
features: layering
flags:
protected: False
rbd image 'zhang':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.18b5196b8b4567
format: 2
features: layering
flags:
protected: False
Exporting diff BACKUPUTC20171019T020204 -> zhang@BACKUPUTC20171019T020452 to /home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204
Compress mode activated
# rbd export-diff --from-snap BACKUPUTC20171019T020204 rbd/zhang@BACKUPUTC20171019T020452 /home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204
Exporting image: 100% complete...done.
# tar Scvfz /home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204.tar.gz /home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204
tar: Removing leading `/' from member names
/home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204
# rm /home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204# tar Scvfz /tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz /tmp/rbd/zp/zp_UTC20170119T092933.full
tar: Removing leading `/' from member names | 
压缩的如果开了,正好文件也是稀疏文件的话,需要等很久,压缩的效果很好,dd生成的文件可以压缩到很小
检查备份生成的文件
| [root@node191 zhang]# pwd
/home/rbd-backup/rbd/zhang
[root@node191 zhang]# ll
total 40
-rw-r--r-- 1 root root   173 Oct 19 10:02 zhang@BACKUPUTC20171019T020204.full.tar.gz
-rw-r--r-- 1 root root 28860 Oct 19 10:04 | 
全量备份的还原
| 解压之前的全量备份文件
[root@node191 zhang]# tar -zxvf zhang@BACKUPUTC20171019T020204.full.tar.gz
home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020204.full
[root@node191 zhang]#rbd import /home/rbd-backup/rbd/zhang/home/rbd-backup/rbd/zhang/zhang@BACKUPUTC20171019T020204.full  zhang_new | 
Zhang_new为新的rbd块名
检查数据,没有问题
增量备份配置
写下增量配置的文件,修改下备份模式的选项
| [root@node191 zhang]# cat /etc/cephbackup/cephbackup.conf
[rbd]
window size = 7
window unit = days
destination directory = /home/rbd-backup/
images = zhang
compress = yes
ceph config = /etc/ceph/ceph.conf
backup mode = incremental
check mode = no | 
执行多次cephbackup后,进行增量备份以后是这样的,出现的是压缩文件。解压后全部都在当前目录下的home里面。
| [root@node191 zhang]# ll
total 40
drwxr-xr-x 3 root root    31 Oct 19 10:33 home
-rw-r--r-- 1 root root   173 Oct 19 10:02 zhang@BACKUPUTC20171019T020204.full.tar.gz
-rw-r--r-- 1 root root 28860 Oct 19 10:04 zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204.tar.gz
-rw-r--r-- 1 root root  2082 Oct 19 10:08 zhang@BACKUPUTC20171019T020759.diff_from_BACKUPUTC20171019T020452.tar.gz | 
增量备份的还原
本测试用例还原步骤就是
| [root@node191 zhang]# pwd
/home/rbd-backup/rbd/zhang/home/rbd-backup/rbd/zhang
[root@node191 zhang]#
rbd import zhang@BACKUPUTC20171019T020204.full test
[root@node191 zhang]#
rbd snap create test@BACKUPUTC20171019T020204
[root@node191 zhang]#
rbd import-diff zhang@BACKUPUTC20171019T020452.diff_from_BACKUPUTC20171019T020204 test
[root@node191 zhang]#
rbd import-diff zhang@BACKUPUTC20171019T020759.diff_from_BACKUPUTC20171019T020452 test | 
Test为新块,将原有块zhang的数据拷贝到新的块test上,检查数据,没有问题
四、添加定时任务
[root@node191 cron]# pwd
/var/spool/cron
添加如下任务。每天23点执行一次备份
[root@node191 cron]# cat root
* 23 * * *  /usr/bin/python  /usr/bin/cephbackup
重启crond服务或者重载
[root@node191 cron]# systemctl restart crond  或者systemctl reload crond