ceph中rbd的增量备份和恢复
ceph中rbd的增量备份和恢复
ceph的rbd操作文档地址:Ceph Documentation
在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做OpenStack的后端简直是不要太爽,于是调研了使用ceph中的块设备rbd来对虚机进行增量备份和恢复。以下是虚机备份和恢复的实验步骤:
1. 前言:
快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的数据没有破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统的操作,想恢复快照,前提是存储快照的存储系统没用破坏,一旦破坏了是无法恢复的。
ceph也有快照功能,同样,在这里的快照是用来保存存储系统上的状态的,数据的快照能成功恢复的前提是存储系统是好的,而一旦存储系统坏了,快照同时会失效的,所以最好是能够将数据备份下来。本篇博客主要是调研使用ceph的rbd命令来对存储设备进行基于快照的增量备份。
2. ceph中rbd的常用命令:
2.1列出存储池
ceph osd pool ls

2.2 查看存储池的内容
rbd ls --pool pool_name
例子
rbd ls --pool volumes

2.3 打快照
rbd snap create {pool-name}/{image-name}@{snap-name}
例如
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1
2.4 罗列快照
rbd snap ls {pool-name}/{image-name}
例如:
rbd snap ls volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3

2.5 创建image
rbd create --size {pool-name}/{image-name}
3. Nova实例的备份与恢复
以ceph做后端,在创建实例时,需要选择一个系统盘,系统盘即是我们的目标数据盘。
备份实验步骤:
- 创建虚机。
- 在时间点v1对虚机打快照。
- 导出从开始创建image到快照v1那个时间点的差异数据,可以视为全量备份。
- 使用dd命令写入文件test.txt
- 在时间点v2对虚机打快照。
- 导出从开始创建image到快照v2那个时间点的差异数据,可以视为全量备份。
- 导出了从v1快照时间点到v2快照时间点的差异数据,可以视为增量备份。
上文实验过程的数据:
v1时间点数据 + v1_v2之间数据 = v2 时间点数据
虚机的备份
1. 实例第一次快照:
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1
2. 第一次全量备份:
rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1 testimage_v1
这个命令是导出了从开始创建image到快照v1那个时间点的差异数据导出来了testimage_v1,导出成本地文件testimage_v1
3. 写入文件
dd
写入文件,以此显示出v1和v2之间的数据变化,并没有其他作用。
4. 实例第二次快照
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2
5. 第二次全量备份:
rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2 testimage_v2
这个命令是导出了从开始创建image到快照v2那个时间点的差异数据导出来了testimage_v2,导出成本地文件testimage_v2
6. 增量备份
增量备份(第二次和第一次的差异文件):
rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2 --from-snap v1 testimage_v1_v2
这个命令是导出了从v1快照时间点到v2快照时间点的差异数据,导出成本地文件testimage_v1_v2
注意:
rbd export-diff rbd/testimage testimage_now
这个是导出了从image创建到当前的时间点的差异数据。
虚机恢复
虚机的恢复过程使用的是刚刚上面提到的备份到本地的那些文件。
1.创建块设备映像
2.将testimage_v1融入块设备,恢复v1时间的状态
3.将testimage_v2融入块设备,恢复v2时间状态
4.在2基础上将v1_v2融入块设备,恢复至v2时间状态
上述实验是全量恢复和增量恢复的两种状态。下文将详细总结项目中增量备份和恢复的使用过程。
1. 创建块设备映像image
首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息
rbd create --size 2048 backups/testbacknew
2. 基于v2的时间点的快照做恢复
2.1 基于V2恢复
直接基于v2的时间点的快照做恢复
rbd import-diff testimage_v2 rbd/testbacknew
2.2 基于v1+ v1_v2数据恢复
直接基于v1的时间点的数据,和后面的增量的v1_v2数据(要按顺序导入)
rbd import-diff testimage_v1 backups/testbacknew
rbd import-diff testimage_v1_v2 backups/testbacknew
实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了
4. 实际使用
在实际项目中使用就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据。
例如:
备份:
对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后设置每天定时做快照,导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了。
设置循环周期,比如三天为一个周期。每三天循环一次,自动删除三天前的备份。
恢复:
从第一个快照导入,然后按照顺序导入增量的快照即可。
ceph中rbd的增量备份和恢复的更多相关文章
- rbd的增量备份和恢复
前言 快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的东西没用破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统 ...
- xtrabackup之Innobackupex增量备份及恢复
演示增量备份 #启动一个全备 innobackupex \ > --defaults-/my.cnf \ > --host=127.0.0.1 \ > --user=xtrabk \ ...
- mysql全备和增量备份以及恢复过程(percona工具)
实验环境 系统环境,内核版本和xtrabackup工具版本 [root@linux-node1 mysql]# cat /etc/redhat-release CentOS Linux release ...
- 【mysql】使用xtrabackup在线增量备份及恢复数据库
一.Percona Xtrabackup 简介 1.Xtrabackup bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...
- 数据库增量备份,恢复innobackex
Xtrabackup 一款强大的在线热备工具 备份过程中不锁表,适合生产坏境 Xtrabackup:C程序,支持innodb/xtradb Innobackupex:innodb/mysiam #rp ...
- innobackupex做MySQL增量备份及恢复【转】
创建备份用户 mysql> grant process,reload,lock tables,replication client on *.* to 'backup'@'localhost' ...
- 16、xtrabackup 增量备份及恢复
备份命令如下 备份命令如下 全量备份 # innobackupex -p123123 /backup # ls /backup 2017-04-08_13-36-11 增量备份或差量备份 # inn ...
- oracle:rman恢复----通过增量备份来恢复
试验计划:先rman进行一个0级备份,插入表相关数据,再进行level 1级增量备份,进行rman恢复 实验环境:归档模式下,oracle10.2.0.1 开始试验: 1. rman level 0级 ...
- MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复 实例
innobackupex 的使用方法1.完全备份 参数一是完全备份地址 完全备份到/data/mysql/back_up/all_testdb_20140612 目录下innobackupex --u ...
随机推荐
- 不离开Emacs完成简单程序的编辑编译运行(windows或Linux)
(1)打开Emacs (2)建立一个新的程序文件. 执行 C-x C-f, 然后在屏幕的底部出现minibuffer,光标提示你输入文件名称, 文件名称要带上后缀名,如hello.cpp.回车,然后开 ...
- Spring Boot集成JSON Web Token(JWT)
一:认证 在了解JWT之前先来回顾一下传统session认证和基于token认证. 1.1 传统session认证 http协议是一种无状态协议,即浏览器发送请求到服务器,服务器是不知道这个请求是哪个 ...
- C# 8 - 其它新特性
其它关于C# 8和.NET Core 3.0新特性的文章: C# 8 - Nullable Reference Types 可空引用类型 C# 8 - 模式匹配 C# 8 - Range 和 Inde ...
- 数据存储之非关系型数据库存储----MongoDB存储
MongoDB存储----文档型数据库 利用pymongo连接MongoDB import pymongo client = pymongo.MongoClient(host='localhost', ...
- 【Linux】【自学笔记】Linux下面docker安装mysql
写在前面: 捣腾继续,之前把一个SpringBoot的程序安装在docker上面,参考链接:https://www.cnblogs.com/aki-stones/p/2019-11-01-note.h ...
- 【XSY2985】【BZOJ1367】【Baltic2004】sequence
考虑两种情况: 1.\(a_1\)<\(a_2\)<\(a_3\)<\(a_4\)...<\(a_n\) 直接令\(b_i\)=\(a_i\),最小. 2.\(a_1\)> ...
- 使用“反向传播”迭代法求解y=√10
X=√10,求X,也就是求Y=10 =X2 , X是多少. *重要的思想是,如何转化为可迭代求解的算法问题. *解数学问题,第一时间画图,求导,“直线化”. Y = X2 假如已知Y = 10 ,要求 ...
- 「考试」 Or
不得不说是一道多项式神题了. 虽然说颓代码颓的很厉害不过最终A掉了. 好好讲一讲这道题. 涉及的知识点是:高阶导数,NTT,指数型母函数,泰勒公式,以及意志力和数学推导能力. 那就开始了. 一个测试点 ...
- 开源 ERP 系统 GoodERP
如果你有一个苹果,我也有一个苹果,彼此交换后,你我还是一人一个苹果,但是如果你有一个想法,我有一个想法,彼此交换后,你我就都有两个想法,三个人呢?一百个人呢? 使用openobject框架 重写全部功 ...
- 模拟示例raid 5(5块磁盘 3块做raid 2块做备份 ) raid 10(5块磁盘) 修改版
RAID5:需要至少三块(含)硬盘,兼顾存储性能.数据安全和储存成本. RAID10:需要至少四块(含)硬盘,兼具速度和安全性,但成本很高. raid 10(5块磁盘) 1.添加硬盘设备(添加5块) ...