一种分布式存储数据的备份方法及其装置与流程

文档序号:22928554发布日期:2020-11-13 16:25阅读:153来源:国知局
一种分布式存储数据的备份方法及其装置与流程

本发明涉及分布式存储技术领域,特别涉及一种分布式存储数据的备份方法及其装置。



背景技术:

对象存储是一种基于对象的存储技术,其扁平的结构和分片式存储有利于现代应用数据的读写。在分布式对象存储中,文件会以对象的方式存放到桶(bucket)中,每个对象都有一个唯一标识。

因为使用场景的不同,块存储可以通过导出块文件的方式实现迁移备份,并实现差异导出合并等功能。尽管对象存储是一写多读的场景,但是对象存储的关键数据还是有备份的需求。

对象存储使用场景中,因为主存储需要保证其性能,所以需要定时清除过时的、历史的数据,而旧数据需要做长期的、持久的备份,所以需要另一套备份对象存储集群,实现对象存储的差异备份,并保证其一致性。



技术实现要素:

本发明要解决的技术问题在于,提供一种分布式存储数据的备份方法及其装置,实现对对象存储数据的差异性备份,并且第一对象存储集群和第二对象存储集群实际所需保存的数据保持一致性。

为解决上述技术问题,本发明提供如下技术方案:一种分布式存储数据的备份方法及,包括以下步骤:

步骤s1、第一对象存储集群创建若干个数据存储桶;

步骤s2、对每一个数据存储桶创建若干个实例,每个实例均分配一个id且各个id均不一致;

步骤s3、第一对象存储集群对外接收数据,将数据均分成若干块对象数据块并将对象数据块存储于数据存储桶的实例内,每个实例包括若干对象数据块;

步骤s4、对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第一实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第一md5校验结果,其中,每个实例均形成一个第一md5校验结果;

步骤s5、第二对象存储集群创建若干个数据备份桶,其中,数据备份桶与第一对象存储集群的数据存储桶数量一致,且数据备份桶与数据存储桶一一对应,数据备份桶内实例与数据存储桶内实例的id相同且一一对应;

步骤s6、对象存储备份单元将第一对象存储集群中数据存储桶内每个实例的全部对象数据块分别存进去对应的数据备份桶内,数据备份桶内的对象数据块与其对应的数据存储桶内的对象数据块保持一致;

步骤s7、重复步骤s2和步骤s3;

步骤s8、经过一定时间段后,对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第二实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第二md5校验结果,其中,每个实例均形成一个第二md5校验结果;

步骤s9、对第一实例列表和第二实例列表进行判断,判断第二实例列表中是否有与第一实例列表不同id的实例;

若有,将不同id的实例及实例内的对象数据块发送至第二对象存储集群的数据备份桶中进行备份,其中,实例所在第一对象存储集群的数据存储桶与数据备份桶相对应;

遍历第二实例列表中每一个与第一实例列表相同id的实例,判断相同id的实例中第二md5校验结果和第一md5校验结果是否存在不同md5值的对象数据块;若存在不同md5值的对象数据块,则将不同md5值的对象数据块发送至第二对象存储集群中对应数据备份桶内的实例中,若不存在不同md5值的对象数据块则不作处理。

进一步地,所述步骤s1前还包括步骤s0、设置一个对象存储备份单元,对象存储备份单元连接第一对象存储集群和第二对象存储集群。

进一步地,所述步骤s4中,对象存储备份单元以队列方式对每个实例的全部对象数据块进行md5校验;

所述s8中,对象存储备份单元以队列方式对每个实例的全部对象数据块进行md5校验。

进一步地,所述步骤s4中,对实例中各个对象数据块的md5值进行记录且形成一个第一md5校验结果,并将第一md5校验结果保存到对象存储备份单元的k-v数据库中;

所述s8中,对实例中各个对象数据块的md5值进行记录且形成一个第二md5校验结果,并将第二md5校验结果保存到对象存储备份单元的k-v数据库中。

本发明另一目的是提供一种分布式存储数据的备份装置,包括对象存储备份单元、第一对象存储集群以及第二对象存储集群,所述对象存储备份单元连接第一对象存储集群和第二对象存储集群;

所述第一对象存储集群用于创建若干个数据存储桶;

所述数据存储桶用于创建若干个实例,并对每个实例均分配一个id且各个id均不一致;

所述第一对象存储集群还用于对外接收数据,将数据均分成若干块对象数据块并将对象数据块存储于所述数据存储桶的实例内,每个实例包括若干对象数据块;

所述对象存储备份单元用于读取每一个所述数据存储桶内的实例,并对实例的id作为标记进行记录形成第一实例列表;所述对象存储备份单元还用于将所述第一对象存储集群内每个实例的全部对象数据块导出至所述对象存储备份单元内;所述对象存储备份单元还用于对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第一md5校验结果,其中,每个实例均形成一个第一md5校验结果;

所述第二对象存储集群用于创建若干个数据备份桶,其中,所述数据备份桶与所述第一对象存储集群的数据存储桶数量一致,且数据备份桶与数据存储桶一一对应,数据备份桶内实例与数据存储桶内实例的id相同且一一对应;

所述对象存储备份单元还用于将所述第一对象存储集群中数据存储桶内每个实例的全部对象数据块分别存进去对应的数据备份桶内,数据备份桶内的对象数据块与其对应的数据存储桶内的对象数据块保持一致;

所述对象存储备份单元还用于:每经过一定时间段后,所述对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第二实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第二md5校验结果,其中,每个实例均形成一个第二md5校验结果;

所述对象存储备份单元还用于对第一实例列表和第二实例列表进行判断,判断第二实例列表中是否有与第一实例列表不同id的实例;若有,将不同id的实例及实例内的对象数据块发送至第二对象存储集群的数据备份桶中进行备份,其中,实例所在第一对象存储集群的数据存储桶与数据备份桶相对应;所述对象存储备份单元还用于遍历第二实例列表中每一个与第一实例列表相同id的实例,判断相同id的实例中第二md5校验结果和第一md5校验结果是否存在不同md5值的对象数据块;若存在不同md5值的对象数据块,则将不同md5值的对象数据块发送至第二对象存储集群中对应数据备份桶内的实例中,若不存在不同md5值的对象数据块则不作处理。

进一步地,所述对象存储备份单元包括k-v数据库,所述对象存储备份单元还用于将第一md5校验结果和第二md5校验结果存储于所述k-v数据库中。

采用上述技术方案后,本发明至少具有如下有益效果:本发明设置一个独立于第一对象存储集群和第二对象存储集群的对象存储备份单元,通过第一对象存储集群的不同时间点下对象数据块和实例的比较,得到哪些是重复存储的对象数据块或实例,对于重复存储的对象数据块或实例无需往第二对象存储集群发送并备份,提高了第二对象存储集群的存储空间和利用率,对于新增加的对象数据块或实例则需要往第二对象存储集群发送并备份,使得第一对象存储集群和第二对象存储集群在实际上必须备份的存储数据保存一致,在第一对象存储集群发生故障是即可通过第二对象存储集群回复必要数据,安全可靠。

附图说明

图1为本发明一种分布式存储数据的备份方法流程图。

图2为本发明一种分布式存储数据的备份装置框架图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。

实施例1

如图1所示,本实施例公开了一种分布式存储数据的备份方法,包括以下步骤:

步骤s0、设置一个对象存储备份单元,对象存储备份单元连接第一对象存储集群和第二对象存储集群;

其中,对象存储备份单元独立于第一对象存储集群和第二对象存储集群,对象存储备份单元以桶(数据存储桶或数据备份桶)为单位扫描桶内的实例或对象数据块;

步骤s1、第一对象存储集群创建若干个数据存储桶;

步骤s2、对每一个数据存储桶创建若干个实例,每个实例均分配一个id且各个id均不一致;

需要说明的是,实例相当于一个文件夹,例如在计算机的存储硬盘上,存储硬盘设置几个数据盘(如c盘、d盘、e盘、f盘等等,每一个数据盘相当于这里的每一个数据存储桶),数据盘分配几个文件夹(相当于这里的实例),文件夹下用来存储许多数据(相当于下面的对象数据块);

步骤s3、第一对象存储集群对外接收数据,将数据均分成若干块对象数据块并将对象数据块存储于数据存储桶的实例内,每个实例包括若干对象数据块;

显而易见,在分布式存储领域中,每一个分布式存储集群都会对外接收数据并将数据均分成若干份数据块(一般数据块为4mb的大小)保存在各个存储设备中,对外接收的数据来自于用户的客户端等等;

步骤s4、对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第一实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第一md5校验结果,其中,每个实例均形成一个第一md5校验结果;

优选的,对象存储备份单元以队列方式对每个实例的全部对象数据块进行md5校验;将第一md5校验结果保存到对象存储备份单元的k-v数据库中;

这里需要说明的是,k-v数据库就是现在非常热门的nosql,非关系型数据库,主要存储结构是key-value,其中value有的采用json串结构;

步骤s5、第二对象存储集群创建若干个数据备份桶,其中,数据备份桶与第一对象存储集群的数据存储桶数量一致,且数据备份桶与数据存储桶一一对应,数据备份桶内实例与数据存储桶内实例的id相同且一一对应;

步骤s6、对象存储备份单元将第一对象存储集群中数据存储桶内每个实例的全部对象数据块分别存进去对应的数据备份桶内,数据备份桶内的对象数据块与其对应的数据存储桶内的对象数据块保持一致;

步骤s7、重复步骤s2和步骤s3;

步骤s8、经过一定时间段后,对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第二实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第二md5校验结果,其中,每个实例均形成一个第二md5校验结果;

其中,一定时间段根据实际情况具体设定;例如,当大量数据存储时,可将一定时间段设为一个小时,当数据量非常缓慢地进行更新存储时,可将一定时间段设为24小时,等等,具体根据存储数据量的多少来设定一定时间段的具体时间值。

优选的,对象存储备份单元以队列方式对每个实例的全部对象数据块进行md5校验;将第二md5校验结果保存到对象存储备份单元的k-v数据库中;

步骤s9、对第一实例列表和第二实例列表进行判断,判断第二实例列表中是否有与第一实例列表不同id的实例;

若有,将不同id的实例及实例内的对象数据块发送至第二对象存储集群的数据备份桶中进行备份,其中,实例所在第一对象存储集群的数据存储桶与数据备份桶相对应;

遍历第二实例列表中每一个与第一实例列表相同id的实例,判断相同id的实例中第二md5校验结果和第一md5校验结果是否存在不同md5值的对象数据块;若存在不同md5值的对象数据块,则将不同md5值的对象数据块发送至第二对象存储集群中对应数据备份桶内的实例中,若不存在不同md5值的对象数据块则不作处理。

由此可见,步骤s9,通过前后数据的对比,即可得到哪些实例或者对象数据块是在第一对象存储集群重复进行接收存储的以及哪些是新增加的实例或者对象数据块,对于重复记录的实例或者对象数据块则无需发送给第二对象存储集群进行备份,增加了第二对象存储集群的存储空间,提高了利用率;而对于新增加的实例或者对象数据块,就需要发给第二对象存储集群进行备份,对第一对象存储集群和第二对象存储集群两者之间在必要的数据保存内容中的保存了一致性;

此时将重复步骤步骤s7-s9,由于数据书不断更新和添加新数据的,因此此时的第二实例列表应该变成第一实例列表,第二md5校验结果变成第一md5校验结果,在经过下一个一定时间段后,就会产生第三实例列表和第三md5校验结果,那么第三实例列表和第三md5校验结果就会变成第二实例列表和第二md5校验结果。依次类推,每一次数据的更新,每一次数据的校验对比,其实是前后两次数据的对比,从而寻找出在数据桶内是否增加新的数据块以及是否存在重复的数据块,对第一对象存储集群新增加的对象数据块就会发送到第二对象存储集群进行对象数据块备份,对第一对象存储集群内重复的对象数据块则无需处理,从而达到了差异化备份,并保持第一对象存储集群和第而对象存储集群数据的一致性。

在后面,如果第一对象存储集群突然发生故障,即可将第二对象存储集群保存的数据恢复至第一对象存储集群中,保证了数据的完好。当然,如果是第一对象存储集群是某个数据点的数据发送估计,根据对应的实例id标记或对象数据块的md5值即可轻松将第二对象存储集群中对应的实例或对象数据块恢复至第一对象存储集群中。

实施例2

本实施例是在实施例1方法的基础上公开一种分布式存储数据的备份装置,如图2所示,包括对象存储备份单元、第一对象存储集群以及第二对象存储集群,所述对象存储备份单元连接第一对象存储集群和第二对象存储集群;

所述第一对象存储集群用于创建若干个数据存储桶;

所述数据存储桶用于创建若干个实例,并对每个实例均分配一个id且各个id均不一致;

所述第一对象存储集群还用于对外接收数据,将数据均分成若干块对象数据块并将对象数据块存储于所述数据存储桶的实例内,每个实例包括若干对象数据块;

所述对象存储备份单元用于读取每一个所述数据存储桶内的实例,并对实例的id作为标记进行记录形成第一实例列表;所述对象存储备份单元还用于将所述第一对象存储集群内每个实例的全部对象数据块导出至所述对象存储备份单元内;所述对象存储备份单元还用于对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第一md5校验结果,其中,每个实例均形成一个第一md5校验结果;

所述第二对象存储集群用于创建若干个数据备份桶,其中,所述数据备份桶与所述第一对象存储集群的数据存储桶数量一致,且数据备份桶与数据存储桶一一对应,数据备份桶内实例与数据存储桶内实例的id相同且一一对应;

所述对象存储备份单元还用于将所述第一对象存储集群中数据存储桶内每个实例的全部对象数据块分别存进去对应的数据备份桶内,数据备份桶内的对象数据块与其对应的数据存储桶内的对象数据块保持一致;

所述对象存储备份单元还用于:每经过一定时间段后,所述对象存储备份单元读取每一个数据存储桶内的实例,并对实例的id作为标记进行记录形成第二实例列表;对象存储备份单元将第一对象存储集群内每个实例的全部对象数据块导出至对象存储备份单元,对象存储备份单元对每个实例的全部对象数据块进行md5校验,对实例中各个对象数据块的md5值进行记录且形成一个第二md5校验结果,其中,每个实例均形成一个第二md5校验结果;

所述对象存储备份单元还用于对第一实例列表和第二实例列表进行判断,判断第二实例列表中是否有与第一实例列表不同id的实例;若有,将不同id的实例及实例内的对象数据块发送至第二对象存储集群的数据备份桶中进行备份,其中,实例所在第一对象存储集群的数据存储桶与数据备份桶相对应;所述对象存储备份单元还用于遍历第二实例列表中每一个与第一实例列表相同id的实例,判断相同id的实例中第二md5校验结果和第一md5校验结果是否存在不同md5值的对象数据块;若存在不同md5值的对象数据块,则将不同md5值的对象数据块发送至第二对象存储集群中对应数据备份桶内的实例中,若不存在不同md5值的对象数据块则不作处理。

优选的,所述对象存储备份单元包括k-v数据库,所述对象存储备份单元还用于将第一md5校验结果和第二md5校验结果存储于所述k-v数据库中。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1