一种数据备份方法、装置及可读存储介质与流程

文档序号:20486825发布日期:2020-04-21 21:44阅读:271来源:国知局
一种数据备份方法、装置及可读存储介质与流程

本发明涉及分布式数据库领域,具体而言,本发明涉及一种数据备份方法、装置及可读存储介质。



背景技术:

随着物联网的发展,越来越多的分布式时序数据库开始应用于互联网产品及服务中,其中,分布式时序数据库是在分布式数据库基础上引入时间序列;分布式数据库是通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有数据库管理系统(databasemanagementsystem,dbms)的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。因此,在实现分布式时序数据库时必须实现数据备份功能,以保证分布式时序数据库的高可靠、高可用以及数据一致性。

现有的数据备份方式主要通过主备方式,即1个主机中包含所有的数据,其他的机器作为该主机的备用机器使用,譬如一主一备和一主多备;这种数据备份方式依赖主机,当主机宕机的情况下,会影响分布式时序数据库系统的使用。



技术实现要素:

为了寻找更为有效的分布式时序数据库的数据备份的实现方案,本发明提供了一种数据备份方法、装置及可读存储介质。

方案一:

提供一种数据备份方法,所述数据备份方法包括如下步骤:

步骤s101:将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中k为大于0的自然数;

步骤s102:在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点,从所述主机元数据管理节点的k个分区中选择一个分区作为主分区并进入所述主分区的任期;

步骤s103:根据接收的待备份数据将所述主机元数据管理节点的内存数据修改为待备份数据并将所述待备份数据并行发送到其他元数据管理节点中;

步骤s104:接收其他元数据管理节点传送的至少一条写入成功信息后,将所述待备份数据刷盘到主分区内,并向其他元数据管理节点传送携带有所述待备份数据已刷盘到所述主分区消息的心跳信息,以使其他每一个元数据管理节点将所述待备份数据刷盘到与所述主分区匹配的分区内并将所述心跳消息固定在本地;

步骤s105:检测所述主机元数据管理节点的所述主分区是否已经用尽,若是,则终止所述主分区的任期,并重复步骤s102~步骤s105。

优选地,在所述步骤s104之后还包括如下步骤:

接收其他元数据管理节点传送的至少一条将所述待备份数据刷盘到对应本地的刷盘信息,主机元数据管理节点返回写入成功。

优选地,所述将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区包括如下步骤:

基于主键将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中元数据管理节点中每行存储的待备份数据都包含一个唯一的主键。

优选地,所述在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点包括如下步骤:

基于raft协议在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点。

优选地,所述从所述主机元数据管理节点的k个分区中选择一个分区作为主分区包括如下步骤:

对k个分区进行编号;

根据所述编号从所述主机元数据管理节点的k个分区中选择一个分区作为主分区。

优选地,所述从所述主机元数据管理节点的k个分区中选择一个分区作为主分区包括如下步骤:

获取任期结束的主分区;

在减去所述任期结束的主分区的所述主机元数据管理节点的k个分区中,选择一个分区作为主分区。

优选地,所述将所述待备份数据刷盘到主分区内包括如下步骤:

采用键值模型将所述待备份数据刷盘到主分区内。

优选地,所述元数据管理节点的数目为五个,所述接收其他元数据管理节点传送的至少一条写入成功信息后,将所述待备份数据刷盘到主分区内,包括如下步骤:

接收其他元数据管理节点传送的至少两条写入成功信息后,将所述待备份数据刷盘到主分区内。

优选地,所述步骤s101之前,包括如下步骤:

构建分布式时序数据库系统,其中,所述分布式时序数据库系统包括用于组成元数据管理节点的2n+1个元数据管理服务器和用于组成数据服务节点且与外部进行数据交互的至少一个根服务器;n为自然数。

优选地,所述构建分布式时序数据库系统之后,包括如下步骤:

将接收的查询语句解析生成抽象语法树;

根据元数据管理服务器提供的元数据对所述抽象语法树进行语法检查并生成逻辑执行计划;

基于预设规则并结合元数据管理服务器提供的数据统计信息对所述逻辑执行计划进行优化得到物理执行计划;

遍历所述物理执行计划执行并返回获取的结果集。

优选地,所述预设规则包括如下规则的一种或者多种:

列裁剪;

最大最小消除;

投影消除;

索引下推。

优选地,所述遍历所述物理执行计划执行并返回获取的结果集包括如下步骤:

分割所述物理执行计划得到分割请求;

将所述分割请求下发本地根服务器或者其他根服务器进行数据查询;

合并获取的结果集并返回。

方案二:

提供一种数据备份装置,所述数据备份装置包括:

划分模块,用于将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中k为大于0的自然数;

选举选择模块,用于在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点,从所述主机元数据管理节点的k个分区中选择一个分区作为主分区并进入所述主分区的任期;

修改发送模块,用于根据接收的待备份数据将所述主机元数据管理节点的内存数据修改为待备份数据并将所述待备份数据并行发送到其他元数据管理节点中;

备份模块,接收其他元数据管理节点传送的至少一条写入成功信息后,将所述待备份数据刷盘到主分区内,并向其他元数据管理节点传送携带有所述待备份数据已刷盘到所述主分区消息的心跳信息,以使其他每一个元数据管理节点将所述待备份数据刷盘到与所述主分区匹配的分区内并将所述心跳消息固定在本地;

检测重置模块:检测所述主机元数据管理节点的所述主分区是否已经用尽,若是,则终止所述主分区的任期,并重复执行所述选举选择模块、修改发送模块、备份模块以及检测重置模块。

方案三:

提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现方案一中任一项所述数据备份方法的步骤。

与现有技术相比,本发明一种数据备份方法、装置及可读存储介质具有如下有益效果:

本发明实施例一种数据备份方法、装置及可读存储介质通过多个元数据管理节点互为主机及基于数据块划分主备的方法进行数据的备份,克服了现有技术中对主机的过分依赖,在一定程度上提高了分布式时序数据库系统的抗风险能力。

本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明一个实施例提供的一种数据备份方法的应用场景图;

图2为本发明一个实施例提供的一种数据备份方法的流程示意图;

图3为本发明一个实施例提供的一种数据备份方法中数据备份示意图;

图4为本发明另一个实施例的一种数据备份装置的模块结构示意图。

图中标识说明:

100、计算机;

200、根服务器;

301、第一元数据管理服务器;303、第二数据管理服务器;305、第二数据管理服务器;

4001、划分模块;

4003、选举选择模块;

4005、修改发送模块;

4007、备份模块;

4009、检测重置模块。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

请参阅图1,本发明实施例一种数据备份方法应用于分布式时序数据库系统中,其中,分布式时序数据库系统包括用于组成元数据管理节点的2n+1个元数据管理服务器和用于组成数据服务节点且与外部进行数据交互的至少一个根服务器;n为自然数。

在一些实施方式中,多个元数据管理服务器集群组成一个有主从关系的元数据管理节点,其中,元数据管理节点用来管理和统计根服务器运行中的一些信息以及存储用户指定的元数据且仅由主元数据管理节点对外提供服务,从元数据管理节点保证集群的可用性。多个根服务器集群组成数据服务节点,对外提供一直的数据处理应用程序接口(applicationprogramminginterface,简称api)负责处理客户端调用以及响应元数据管理服务器的管理。

示例地,图1示出了本发明实施例一种数据备份方法的一种应用场景图,其中,n的取值为1,如图1所示,分布式时序数据库系统包括与外部计算机100进行数据交换根服务器200、第一元数据管理服务器301、第二元数据管理服务器303、第三元数据管理服务器305,其中,第一元数据管理服务器301、第二元数据管理服务器303、第三元数据管理服务器305分别与根服务器200连接。

具体地,在构建分布式时序数据库系统之后,包括如下步骤:

将接收的查询语句解析生成抽象语法树;

根据元数据管理服务器提供的元数据对抽象语法树进行语法检查并生成逻辑执行计划;

基于预设规则并结合元数据管理服务器提供的数据统计信息对逻辑执行计划进行优化得到物理执行计划;

遍历物理执行计划执行并返回获取的结果集。

其中,预设规则包括如下规则的一种或者多种:

列裁剪;

最大最小消除;

投影消除;

索引下推。

列裁剪的思想是这样的,对于用不上的列,没有必要读取它们的数据,无谓的浪费接口资源。通过列裁剪这一步操作之后,查询计划里面各个算子,只会记录下它实际需要用到的那些列。最大最小消除实现的是一个纯粹的抽象语法树的修改,其做的事情就是由sql优化器“自动”地做这个变换。投影消除可以把不必要的projection算子消除掉。索引下推是某一个索引对一个特定的表从表中获取元组,注意我们这里特意强调了“一个”,这是因为这样的索引优化不是用于多表连接而是用于单表扫描,确切地说,是单表利用索引进行扫描以获取数据的一种方式。

在一些实施方式中,考虑到分布式时序数据库系统的延展性,因此,在分布式时序数据库系统中一般都会存在多个根服务器,在实际进行数据交换时可采用远程过程调用进行。因此,在遍历物理执行计划执行并返回获取的结果集包括如下步骤:

分割物理执行计划得到分割请求;

将分割请求下发本地根服务器或者其他根服务器进行数据查询;

合并获取的结果集并返回。

请参阅图2,图2示出了本发明实施例一种数据备份方法的流程示意图,从图2中可以看出,本发明实施例一种数据备份方法包括如下步骤:

步骤s101:将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中k为大于0的自然数。

具体地,将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区包括如下步骤:

基于主键将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中元数据管理节点中每行存储的待备份数据都包含一个唯一的主键。

键值模型,也称key-value模型,其是大量非关系型数据库系统采用的数据模型,每行记录由主键和值两个部分组,支持基于主键的如下操作:

put:保存一个key-value对;

get:读取一个key-value对;

delete:删除一个key-value对。

在本发明实施例中按照时序数据的特点,一般的时序数据会包含以下4种特性:

1个metric:用来描述所要存储的事物

多个tag:用来表示事物的某些特性

多个field:用来表示特殊的值

1个timestamp:表示当前时间

本发明实施例基于上述四个特性,使用特定的hash函数,函数原型为:byte[]hash(longtime,stringmetric,map<string,string>tags,map<string,string>field),并将记录转变为kv形式,然后将数据存储在rocksdb中。

在根服务器中,数据是以范围的形式进行划分,通过一个抽象的store来表示整个数据存储。在store中数据存储的最小单元称为region。每个region包含一个startkey和一个endkey,用来描述当前的region存储的数据范围,范围满足左闭右开的原则,即每个region管理的数据包括:[startkey,endkey)。这样每个根服务器中就会包含多个region,整个数据划分可以以下面的形式来表示

[startkey1,endkey1),[startkey2,endkey2),[startkey3,endkey3)…

其中:endkey1==startkey2,endkey2==startkey3。

这样,整个存储层就会抽象成单纯的kv存储的形势。对外提供一致性的put\get\delete等方法。

示例地,假设有5个元数据管理节点(s1,s2,s3,s4,s5),每个元数据管理节点的磁盘大小为100g,设置的数据块大小为2g,那每个元数据管理节点就可以划分为50个数据块大小。

步骤s102:在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点,从所述主机元数据管理节点的k个分区中选择一个分区作为主分区并进入所述主分区的任期。

具体地,在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点包括如下步骤:

基于raft协议在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点。

在了解raft协议之前,我们先了解一致性这个概念,它是指多个元数据管理节点在状态达成一致,但是在一个分布式时序数据库系统中,因为各种意外可能,有的元数据管理节点可能会崩溃或变得不可靠,它就不能和其他元数据管理节点达成一致状态。这样就需要一种一致性协议,一致性协议是为了确保容错性,也就是即使系统中有一两个元数据管理节点当机,也不会影响其处理过程。而raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的paxos协议,但是paxos协议难于理解,更难以实现。而raft协议是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。

在实际实施过程中,为了以容错方式达成一致,我们不可能要求所有元数据管理节点100%都达成一致状态,只要超过半数的大多数元数据管理节点达成一致就可以了,假设有n个元数据管理节点,n/2+1就超过半数,代表大多数了,其中n为大于1的自然数。

在raft协议的每个副本都会处于三种状态之一:leader、follower、candidate,其中,

leader:所有请求的处理者,leader副本接受客户端的更新请求,本地处理后再同步至多个其他副本;

follower:请求的被动更新者,从leader接受更新请求,然后写入本地日志文件

candidate:如果follower副本在一段时间内没有收到leader副本的心跳,则判断leader可能已经故障,此时启动选主过程,此时副本会变成candidate状态,直到选主结束。

值得注意的是,raft协议在集群初始状态下是没有leader的,集群中所有成员均是follower,在选举开始期间所有follower均可参与选举,这时所有follower的角色均转变为candidate,leader由集群中所有的candidate投票选出,最后获得投票最多的candidate获胜,其角色转变为leader并开始其任期,其余落败的candidate角色转变为follower开始服从leader领导。

这里有一种意外的情况会选不出leader就是所有candidate均投票给自己,这样无法决出票数多的一方,raft协议为了解决这个问题引入了北洋时期袁世凯获选大总统的谋略,即选不出leader不罢休,直到选出为止,一轮选不出leader,便令所有candidate随机sleap一段时间,然后马上开始新一轮的选举,这里的随机sleep就起了很关键的因素,第一个从sleap状态恢复过来的condidate会向所有condidate发出投票给我的申请,这时还没有苏醒的condidate就只能投票给已经苏醒的condidate,因此可以有效解决condiadte均投票给自己的故障,便可快速的决出leader。

选举出leader后leader会定期向所有follower发送心跳消息来维护其leader地位,如果follower一段时间后未收到leader的心跳消息则认为leader已经挂掉,便转变自身角色为condidate,同时发起新一轮的选举,产生新的leader。

在一些实施方式中,为了便于选择主分区可以采用编号的方式,也即从主机元数据管理节点的k个分区中选择一个分区作为主分区包括如下步骤:

对k个分区进行编号;

根据编号从主机元数据管理节点的k个分区中选择一个分区作为主分区。

考虑到数据量巨大以及本发明实施例一种数据备份方法重复性,当一个主分区被占用后,需要重新选举主机元数据管理节点以及对应的主分区,因此,从主机元数据管理节点的k个分区中选择一个分区作为主分区还包括如下步骤:

获取任期结束的主分区;

在减去任期结束的主分区的主机元数据管理节点的k个分区中,选择一个分区作为主分区。

请参阅图3,图3示出了一种基于数据块的主备划分,其中,实线表示该分区为主分区,虚线表示该分区为备分区。从图3中第一行我们可以看出,5个元数据管理节点(s1,s2,s3,s4,s5)中的元数据管理节点s1被分为region1—region5,元数据管理节点s2被分为region1—region5,元数据管理节点s3被分为region1—region5,元数据管理节点s4被分为region1—region5,元数据管理节点s4被分为region1—region5,其中,region1表征5个元数据管理节点(s1,s2,s3,s4,s5)相匹配的分区。现在我们以图3中的第一行为例进行说明解释,也即假设在5个元数据管理节点(s1,s2,s3,s4,s5)中的元数据管理节点s1被选举为主机元数据管理节点,主机元数据管理节点s1上的第一分区,也即region1,被选择为主分区,则相应的余下的元数据管理节点s2之region1、元数据管理节点s3之region1、元数据管理节点s4之region1以及元数据管理节点s5之region1为对应的备机元数据管理节点以及备分区。

步骤s103:根据接收的待备份数据将所述主机元数据管理节点的内存数据修改为待备份数据并将所述待备份数据并行发送到其他元数据管理节点中;

步骤s104:接收其他元数据管理节点传送的至少一条写入成功信息后,将所述待备份数据刷盘到主分区内,并向其他元数据管理节点传送携带有所述待备份数据已刷盘到所述主分区消息的心跳信息,以使其他每一个元数据管理节点将所述待备份数据刷盘到与所述主分区匹配的分区内并将所述心跳消息固定在本地。

在一些实施方式中,将待备份数据刷盘到主分区内包括如下步骤:

采用键值模型将待备份数据刷盘到主分区内。

在一些实施方式中,元数据管理节点的数目为五个,接收其他元数据管理节点传送的至少一条写入成功信息后,将待备份数据刷盘到主分区内,包括如下步骤:

接收其他元数据管理节点传送的至少两条写入成功信息后,将待备份数据刷盘到主分区内。

在一些实施方式中,在步骤s104之后,还包括如下步骤:

接收其他元数据管理节点传送的至少一条将待备份数据刷盘到对应本地的刷盘信息,主机元数据管理节点返回写入成功。

示例地,基于假设的5个元数据管理节点(s1,s2,s3,s4,s5)中的元数据管理节点s1被选举为主机元数据管理节点,主机元数据管理节点s1上的第一分区,也即region1,被选择为主分区,则步骤s103和步骤s104的具体执行过程如下:

a)主机元数据管理节点s1接收到待备份数据data1并将内存中的数据修改为待备份数据data1;

b)主机元数据管理节点s1并将该待备份数据data1并行的发送到其他四个元数据管理节点;

c)当主机元数据管理节点s1收到其他四个元数据管理节点中的两个以上写入成功之后,就将本机的待备份数据data1进行刷盘以保证持久化;

d)在主机元数据管理节点s1发送到其他四个元数据管理节点的心跳信息中,主机元数据管理节点s1将待备份数据data1已刷盘消息发送到其他四个元数据管理节点中;

e)在主机元数据管理节点s1收到至少一个其它元数据管理节点刷盘成功之后,主机元数据管理节点s1将返回客户端写入成功;

f)其他四个元数据管理节点收到主机元数据管理节点s1针对region1的刷盘消息之后,将该刷盘消息持久化到自己的本地;

g)单次的数据复制完成。

步骤s105:检测所述主机元数据管理节点的所述主分区是否已经用尽,若是,则终止所述主分区的任期,并重复步骤s102~步骤s105。

示例地,如果主机元数据管理节点s1中的主分区region1已经用完,此时主机元数据管理节点s1的任期1结束,开始进行第二轮的选举,假设选出元数据管理节点s2作为任期2的主机元数据管理节点,来处理客户端的请求,处理流程参考步骤s102—步骤s105。

与现有技术相比,本发明实施例一种数据备份方法具有如下有益效果:

本发明实施例一种数据备份方法通过多个元数据管理节点互为主机及基于数据块划分主备的方法进行数据的备份,克服了现有技术中对主机的过分依赖,在一定程度上提高了分布式时序数据库系统的抗风险能力。

请参阅图4,基于同本发明实施例一种数据备份方法相同的发明构思,本发明另一实施例提供一种数据备份装置,该数据备份装置包括划分模块4001、选举选择模块4003、修改发送模块4005、备份模块4007以及检测重置模块4009,其中:

划分模块4001,用于将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中k为大于0的自然数;

选举选择模块4003,用于在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点,从主机元数据管理节点的k个分区中选择一个分区作为主分区并进入主分区的任期;

修改发送模块4005,用于根据接收的待备份数据将主机元数据管理节点的内存数据修改为待备份数据并将待备份数据并行发送到其他元数据管理节点中;

备份模块4007,接收其他元数据管理节点传送的至少一条写入成功信息后,将待备份数据刷盘到主分区内,并向其他元数据管理节点传送携带有待备份数据已刷盘到主分区消息的心跳信息,以使其他每一个元数据管理节点将待备份数据刷盘到与主分区匹配的分区内并将心跳消息固定在本地;

检测重置模块4009:检测主机元数据管理节点的主分区是否已经用尽,若是,则终止主分区的任期,并重复执行选举选择模块4003、修改发送模块4005、备份模块4007以及检测重置模块4009。

在一些实施方式中,该数据备份装置还包括:

返回模块,用于接收其他元数据管理节点传送的至少一条将待备份数据刷盘到对应本地的刷盘信息,主机元数据管理节点返回写入成功。

优选地,划分模块4001包括:

划分子单元:用于基于主键将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中元数据管理节点中每行存储的待备份数据都包含一个唯一的主键。

优选地,选举选择模块4003包括:

选举单元,用于基于raft协议在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点。

在一些实施方式中,选举选择模块4003包括:

编号单元,用于对k个分区进行编号;

第一选择单元,用于根据编号从主机元数据管理节点的k个分区中选择一个分区作为主分区。

在一些实施方式中,选举选择模块4003包括:

获取单元,用于获取任期结束的主分区;

第二选择单元,用于在减去任期结束的主分区的主机元数据管理节点的k个分区中,选择一个分区作为主分区。

优选地,备份模块4007包括:

主机刷盘单元,用于用键值模型将待备份数据刷盘到主分区内。

在一些实施方式中,元数据管理节点的数目为五个,备份模块4007包括:

备份单元,用于接收其他元数据管理节点传送的至少两条写入成功信息后,将待备份数据刷盘到主分区内。

在一些实施方式中,该数据备份装置还包括:

构建模块,用于在用于将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区之前,构建分布式时序数据库系统,其中,分布式时序数据库系统包括用于组成元数据管理节点的2n+1个元数据管理服务器和用于组成数据服务节点且与外部进行数据交互的至少一个根服务器;n为自然数。

在一些实施方式中,该数据备份装置还包括:

解析单元,用于在构建分布式时序数据库系统之后,将接收的查询语句解析生成抽象语法树;

第一生成单元,用于根据元数据管理服务器提供的元数据对抽象语法树进行语法检查并生成逻辑执行计划;

第二生成单元,用于基于预设规则并结合元数据管理服务器提供的数据统计信息对逻辑执行计划进行优化得到物理执行计划;

执行返回单元,用于遍历物理执行计划执行并返回获取的结果集。

优选地,预设规则包括如下规则的一种或者多种:

列裁剪;

最大最小消除;

投影消除;

索引下推。

在一些实施方式中,执行返回单元包括:

分割单元,用于分割物理执行计划得到分割请求;

查询单元,用于将分割请求下发本地根服务器或者其他根服务器进行数据查询;

合并返回单元,用于合并获取的结果集并返回。

与现有技术相比,本发明另一实施例一种数据备份装置具有如下有益效果:

本发明另一实施例一种数据备份方法通过划分模块4001、选举选择模块4003、修改发送模块4005、备份模块4007以及检测重置模块4009的设置,克服了现有技术中对主机的过分依赖,在一定程度上提高了分布式时序数据库系统的抗风险能力。

基于同本发明实施例一种数据备份方法相同的发明构思,本发明又一实施例提供一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

步骤s101:将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中k为大于0的自然数;

步骤s102:在所述至少两个元数据管理节点中进行选举得到一个主机元数据管理节点,从所述主机元数据管理节点的k个分区中选择一个分区作为主分区并进入所述主分区的任期;

步骤s103:根据接收的待备份数据将所述主机元数据管理节点的内存数据修改为待备份数据并将所述待备份数据并行发送到其他元数据管理节点中;

步骤s104:接收其他元数据管理节点传送的至少一条写入成功信息后,将所述待备份数据刷盘到主分区内,并向其他元数据管理节点传送携带有所述待备份数据已刷盘到所述主分区消息的心跳信息,以使其他每一个元数据管理节点将所述待备份数据刷盘到与所述主分区匹配的分区内并将所述心跳消息固定在本地;

步骤s105:检测所述主机元数据管理节点的所述主分区是否已经用尽,若是,则终止所述主分区的任期,并重复步骤s102~步骤s105。

在一些实施方式中,步骤s104之后还包括如下步骤:

接收其他元数据管理节点传送的至少一条将待备份数据刷盘到对应本地的刷盘信息,主机元数据管理节点返回写入成功。

在一些实施方式中,将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区包括如下步骤:

基于主键将至少两个元数据管理节点中每一个元数据管理节点的磁盘按照预先设置的数据块大小划分成k个分区,其中元数据管理节点中每行存储的待备份数据都包含一个唯一的主键。

在一些实施方式中,在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点包括如下步骤:

基于raft协议在至少两个元数据管理节点中进行选举得到一个主机元数据管理节点。

在一些实施方式中,从主机元数据管理节点的k个分区中选择一个分区作为主分区包括如下步骤:

对k个分区进行编号;

根据编号从主机元数据管理节点的k个分区中选择一个分区作为主分区。

在一些实施方式中,从主机元数据管理节点的k个分区中选择一个分区作为主分区包括如下步骤:

获取任期结束的主分区;

在减去任期结束的主分区的主机元数据管理节点的k个分区中,选择一个分区作为主分区。

在一些实施方式中,将待备份数据刷盘到主分区内包括如下步骤:

采用键值模型将待备份数据刷盘到主分区内。

在一些实施方式中,元数据管理节点的数目为五个,接收其他元数据管理节点传送的至少一条写入成功信息后,将待备份数据刷盘到主分区内,包括如下步骤:

接收其他元数据管理节点传送的至少两条写入成功信息后,将待备份数据刷盘到主分区内。

在一些实施方式中,步骤s101之前,包括如下步骤:

构建分布式时序数据库系统,其中,分布式时序数据库系统包括用于组成元数据管理节点的2n+1个元数据管理服务器和用于组成数据服务节点且与外部进行数据交互的至少一个根服务器;n为自然数。

在一些实施方式中,构建分布式时序数据库系统之后,包括如下步骤:

将接收的查询语句解析生成抽象语法树;

根据元数据管理服务器提供的元数据对抽象语法树进行语法检查并生成逻辑执行计划;

基于预设规则并结合元数据管理服务器提供的数据统计信息对逻辑执行计划进行优化得到物理执行计划;

遍历物理执行计划执行并返回获取的结果集。

在一些实施方式中,预设规则包括如下规则的一种或者多种:

列裁剪;

最大最小消除;

投影消除;

索引下推。

在一些实施方式中,遍历物理执行计划执行并返回获取的结果集包括如下步骤:

分割物理执行计划得到分割请求;

将分割请求下发本地根服务器或者其他根服务器进行数据查询;

合并获取的结果集并返回。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

需要说明的是,本发明又一实施例提供的可读存储介质,可以执行上述方法实施例,具体可以参照上述针对方法实施例的解释说明,在此不再赘述。

与现有技术相比,本发明又一实施例一种可读存储介质具有如下有益效果:

本发明又一实施例一种可读存储介质通过多个元数据管理节点互为主机及基于数据块划分主备的方法进行数据的备份,克服了现有技术中对主机的过分依赖,在一定程度上提高了分布式时序数据库系统的抗风险能力。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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