一种数据备份恢复的方法、系统和服务节点 |
|||||||
申请号 | CN201110069873.4 | 申请日 | 2011-03-22 | 公开(公告)号 | CN102693168B | 公开(公告)日 | 2014-12-31 |
申请人 | 中兴通讯股份有限公司; | 发明人 | 胡欢欢; 李豪伟; 郭斌; | ||||
摘要 | 本 发明 公开了一种数据备份恢复的方法、系统和服务 节点 ,在接收到发起备份数据的 请求 后,服务节点生成备份计划表,将备份计划表上传到集群公共存储 块 ,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。通过上述方法和系统,能够在集群的复杂网络环境下,考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,保证了数据的一致性、完整性,数据均衡分布。 | ||||||
权利要求 | 1.一种数据备份恢复的方法,其特征在于,所述方法包括: |
||||||
说明书全文 | 一种数据备份恢复的方法、系统和服务节点技术领域背景技术[0002] 云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行 计 算(Parallel Computing)、效 用 计算 (Utility Computing)网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。分布式缓存是云计算范畴中的一个领域,其作用是提供海量数据的分布式存储服务以及高速读写访问的能力。 [0003] 在分布式缓存系统中,通常是由若干服务器节点和客户端互相连接构成,服务器节点也可简称为服务节点。其中,服务器节点负责数据的存储,客户端可以对服务器做数据的写入、读取、更新、删除等操作。一般来说写入的数据不可能只保存在单个服务器节点上,而是在多台节点上保存同一个数据的副本文件,互为备份。所述副本文件包含一条或多条数据记录,所述数据记录由键(Key)和值(Value)构成,Key相当于数据的索引,Value是Key所代表的数据内容。逻辑上Key和Value是一对一的关系。为了保障分布式缓存系统中数据的一致性,每条数据记录在实际存储时,还要加上一些属性信息。例如,版本号、时间戳等,所述属性信息存储在副本文件的数据记录中。在分布式缓存系统的集群(以下简称集群)中多台服务节点保存有同一份数据文件的多个数据副本文件,而如何在集群中的多个服务节点上,进行数据的备份和恢复是比较难以解决的问题,其核心在于如何能够在集群的复杂网络环境下,综合考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,并且保证了数据的一致性、完整性、数据的均衡分布。 发明内容[0004] 有鉴于此,本发明的主要目的在于提供一种数据备份恢复的方法、系统和服务节点,能够实现在无中心化的分布式缓存系统中数据的备份和恢复。 [0005] 为达到上述目的,本发明的技术方案是这样实现的: [0006] 本发明提供了一种数据备份恢复的方法,所述方法包括: [0008] 客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。 [0009] 其中,所述根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,还包括:如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0012] 其中,所述将需要备份的副本文件发送到目的节点,具体为:将需要备份的副本文件传输到集群外一个或者多个目的节点上。 [0013] 其中,所述合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。 [0014] 本发明还提供了一种数据备份恢复的系统,所述系统包括:服务节点、客户端和目的节点,其中, [0015] 所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端; [0016] 所述客户端,用于将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,收到完成通知后,发送下一条数据记录的写数据请求,直至副本文件全部恢复。 [0017] 其中,所述服务节点,还用于根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0018] 其中,所述目的节点进行合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。 [0019] 本发明还提供了一种数据备份恢复系统的服务节点,所述服务节点,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送到目的节点进行合并操作,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后通知客户端。 [0020] 其中,所述服务节点,还用于根据数据分布表将写数据请求发送到其他服务节点上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0021] 本发明所提供的数据备份恢复的方法、系统和服务节点,接收到发起备份数据的请求后,服务节点生成备份计划表,将备份计划表上传到集群公共存储块,服务节点根据备份计划表将需要备份的副本文件发送到目的节点,由目的节点进行合并操作;客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点,服务节点根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点上进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。能够在集群的复杂网络环境下,综合考虑各个服务节点的性能差异,完成冗余数据的备份和恢复,并且保证了数据的一致性、完整性、数据的均衡分布,综合来看上述方法是一种有效的、高度可靠的、保障分布式存储系统中数据一致性的数据备份恢复方案,创新地解决了分布式存储系统中数据备份恢复的技术问题。附图说明 [0022] 图1为本发明一种数据备份恢复的方法流程示意图; [0023] 图2为本发明一种数据备份的实施例的流程示意图; [0024] 图3为本发明一种数据合并的实施例的流程示意图; [0025] 图4为本发明一种数据恢复的实施例的流程示意图; [0026] 图5为本发明一种数据备份恢复的系统结构示意图。 具体实施方式[0027] 通常分布式缓存系统的集群中的数据备份分为两个步骤:第一步,导出;具体为把集群中一个数据文件的多个数据副本文件都导出到一个目的节点上。第二步,合并。具体为导出完成后,按照一定的数据合并算法把这些副本文件合并成一个数据文件,即把合并输出的数据文件保存下来,供以后数据恢复时使用。 [0028] 进一步的,集群中的数据恢复具体为:导入。即通过客户端向集群中服务节点发送写数据请求,把数据文件中的数据记录依次逐个写入到分布式缓存系统中。 [0029] 下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。 [0030] 图1为本发明一种数据备份恢复的方法流程示意图,如图1所示,所述方法包括: [0031] 步骤101,接收到发起备份数据的请求后,服务节点生成备份计划表; [0032] 具体的,客户端根据需要发起备份数据的请求到任意一台服务节点,接收到备份数据请求的服务节点根据当前集群中数据的分布表,生成一张备份计划表。这个服务节点可以被称为备份计划生成节点。 [0033] 步骤102,将备份计划表上传到集群公共存储块; [0034] 具体的,所述集群公共存储块位于服务节点中,其中的数据能够被集群中任意服务节点实时访问或修改。 [0035] 进一步的,步骤102之后,所述方法还包括:目的节点监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态。 [0036] 步骤103,服务节点根据备份计划表将需要备份的副本文件发送到目的节点; [0037] 进一步的,在所述发送需要备份的副本文件之前,还包括:各服务节点把需要备份的本地数据热备份到指定路径下。 [0038] 具体的,集群中的所有服务节点都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点把需要备份的本地数据热备份到指定路径下,然后发送到目的节点。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。进一步的,服务节点将需要备份的副本文件发送到目的节点后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。 [0039] 所述将需要备份的副本文件发送到目的节点,具体为:将需要备份的副本文件传输到集群外一个或者多个目的节点上。这样能够保障目的节点上有足够的存储空间容纳备份数据。如果目的节点存储空间已满或者断链,可以指定别的目的节点继续进行备份。 [0040] 步骤104,所述目的节点进行合并操作; [0041] 具体的,所述合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。这样能够保障数据的一致性。所述合并成一个最新副本的操作,具体包括: [0042] 步骤104a,打开第一份数据副本文件,从中获取一个数据记录,即一个Key和对应的一个Value; [0043] 步骤104b,打开其余的数据副本文件,从中获取步骤104a中Key对应的其他Value; [0044] 步骤104c,根据数据的版本号和时间戳最新的原则,比较同一个Key的所有副本Value,获取一个最新的Value副本; [0045] 步骤104d,将合并出来的Value写入到第一个数据副本文件中,并删除其余数据副本文件中的这条数据记录; [0046] 步骤104e,遍历第一份数据副本文件中的数据记录,按照步骤104a至步骤104d的操作,把其余数据副本文件中剩余的数据记录合并后写入到第一个数据副本文件中。 [0047] 进一步的,所述目的节点进行合并操作之后,还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为“合并完成”;客户端轮询备份计划表中的“合并完成”状态,如果查询到“合并完成”则备份流程结束。 [0048] 步骤105,客户端将合并后副本文件中的数据记录,通过写数据请求发送给服务节点; [0049] 具体的,客户端打开合并后的副本文件,遍历其中的数据记录,取出一条数据记录,把该条记录附加到客户端要发送的写数据请求中,发送写数据请求给集群中的任意一个服务节点。 [0050] 步骤106,服务节点根据负载均衡原则,生成数据分布表; [0051] 具体的,所述根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点的数据负载均衡。 [0052] 步骤107,服务节点根据数据分布表将所述写数据请求发送到其他服务节点进行写入操作,完成后客户端发送下一条数据记录的写数据请求,直至副本文件全部恢复。 [0053] 进一步的,步骤107中所述服务节点将所述数据记录根据数据分布表,发送到对应的服务节点进行写入操作之后,还包括:如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0054] 图2为本发明一种数据备份的实施例的流程示意图,如图2所示,所述流程包括: [0055] 步骤201,客户端发送数据备份请求给集群中的服务节点1,服务节点1根据当前集群中的数据分布表,生成一张备份计划表; [0056] 步骤202,服务节点1将本地的备份计划表上传到集群的公共存储块中; [0057] 步骤203,目的节点监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态; [0058] 步骤204,集群中的所有服务节点,轮询公共存储块中备份计划表的任务状态,如果使能,热备份本地数据到指定的数据目录中; [0059] 步骤205,集群中的所有服务节点将数据目录中的备份数据发送到目的节点,并且将备份计划表置位为“已发送”状态; [0060] 步骤206,目的节点轮询备份计划表的“副本是否齐备”状态,如果齐备,合并数据; [0061] 步骤207,目的节点合并完数据后,将备份计划表置位为“合并完成”状态; [0062] 步骤208,客户端轮询备份计划表中的“合并完成”状态,如果完成则备份流程结束。 [0063] 图3为本发明一种数据合并的实施例的流程示意图,如图3所示,所述流程包括: [0064] 步骤301,打开集群中所有数据副本文件; [0065] 步骤302,遍历第一个数据副本文件,读取一个数据记录,数据记录由Key、Value、版本号、时间戳等组成; [0066] 步骤303,依次读取其余数据副本文件中的对应于同一个Key的数据记录; [0067] 步骤304,根据版本号、时间戳最新原则,从同一份数据记录的多个副本中选取最新的一个副本作为合并完成的数据记录; [0068] 步骤305,将合并完成的数据记录写入到第一个数据副本文件中; [0069] 步骤306,删除其余数据副本文件中对应该Key的数据记录; [0070] 步骤307,遍历完第一个数据副本文件中的所有数据记录后,遍历第二个数据副本文件按照步骤302至步骤306的操作将合并后的数据记录写入到第一个数据副本文件中,直到遍历完所有的数据副本文件。 [0071] 图4为本发明一种数据恢复的实施例的流程示意图,如图4所示,所述流程包括: [0072] 步骤401,客户端打开备份的数据文件,取出一个数据记录,附加到客户端的写数据请求中,并把写数据请求发送到集群中的服务节点1上; [0073] 步骤402,集群中的服务节点接收到写数据请求后,根据负载均衡原则,生成一张数据分布表; [0074] 步骤403,数据分布表生成的服务节点根据当前的数据分布表把写数据请求发送到其它的服务节点上; [0075] 步骤404,接收到写数据请求的服务节点,本地存储请求中携带的数据记录,并返回相应的状态给数据分布表生成的服务节点; [0076] 步骤405,数据分布表生成的服务节点,即服务节点1返回状态码给客户端,如果写成功,客户端取出下一个数据记录,如果写入失败,客户端将该条数据记录存储在恢复失败链表中,每次发送写数据请求时,优先从恢复失败链表中去数据记录。 [0077] 进一步的,每次客户端发送写数据请求前,都从恢复失败链表中或者备份数据文件中,取出下一条数据记录,重复步骤401至步骤405。直到备份数据文件中的所有数据记录全部恢复成功。 [0078] 图5为本发明一种数据备份恢复的系统结构示意图,如图5所示,所述系统包括:服务节点51、客户端52和目的节点53,其中, [0079] 所述服务节点51,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送给目的节点53,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作,完成后通知客户端52; [0080] 具体的,客户端52根据需要发起备份数据的请求到任意一台服务节点51,接收到备份数据请求的服务节点51根据当前集群中数据的分布表,生成一张备份计划表。所述集群公共存储块位于服务节点51中,其中的数据能够被集群中任意服务节点51实时访问或修改。集群中的所有服务节点51都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点51把需要备份的本地数据热备份到指定路径下,然后发送到目的节点53。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点51还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。所述服务节点51根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点51的数据负载均衡。进一步的,服务节点51将需要备份的副本文件发送到目的节点53后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。 [0081] 进一步的,所述服务节点51,还用于,在所述发送需要备份的副本文件之前,把需要备份的本地数据热备份到指定路径下。 [0082] 进一步的,所述服务节点51,还用于根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端52重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0083] 所述客户端52,用于将合并后副本文件中的数据记录,通过写数据请求发送给服务节点51,收到完成通知后,发送下一条数据记录的写数据请求,直至副本文件全部恢复; [0084] 具体的,客户端52打开合并后的副本文件,遍历其中的数据记录,取出一条数据记录,把该条记录附加到客户端要发送的写数据请求中,发送写数据请求给集群中的任意一个服务节点51。所述根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点的数据负载均衡。 [0085] 所述目的节点53,用于进行合并操作。 [0086] 具体的,所述目的节点,具体为:集群外的一个或者多个目的节点。所述目的节点进行合并操作具体为:目的节点根据备份计划表,监测到所有服务节点上的数据都已经齐备后,把一个数据的多个副本文件根据数据的版本号、时间戳属性合并成一个最新副本。 [0087] 进一步的,所述目的节点53进行合并操作之后,还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为“合并完成”;客户端52轮询备份计划表中的“合并完成”状态,如果查询到“合并完成”则备份流程结束。 [0088] 进一步的,所述目的节点53,还用于监测到集群公共存储块中的备份计划表,置备份计划表为“使能”状态。 [0089] 本发明还公开了一种数据备份恢复的系统中的服务节点51,如图5所示: [0090] 所述服务节点51,用于接收到发起备份数据的请求后,生成备份计划表,将备份计划表上传到集群公共存储块,根据备份计划表将需要备份的副本文件发送给目的节点53,接收到写数据请求后,根据负载均衡原则生成数据分布表后,根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作,完成后通知客户端52。 [0091] 具体的,客户端52根据需要发起备份数据的请求到任意一台服务节点51,接收到备份数据请求的服务节点51根据当前集群中数据的分布表,生成一张备份计划表。所述集群公共存储块位于服务节点51中,其中的数据能够被集群中任意服务节点51实时访问或修改。集群中的所有服务节点51都能够监测到所述公共存储块中备份计划表的任务使能状态,如果使能,各服务节点51把需要备份的本地数据热备份到指定路径下,然后发送到目的节点53。其中,所述数据的热备份,是指即使数据正在被更改的时候,服务节点51还可以把某一时刻的数据完整地备份下来,不会毁坏数据。热备份的优点在于保障了客户端在更新集群中数据的同时,依然可以把集群中的数据备份下来。所述服务节点51根据负载均衡原则生成数据分布表,是为了能够在复杂的集群网络环境下,保障数据可以均衡地恢复到服务节点,保障每个服务节点51的数据负载均衡。进一步的,服务节点51将需要备份的副本文件发送到目的节点53后还包括:向集群公共存储块发送消息,将备份计划表的任务使能状态修改为已发送。 [0092] 进一步的,所述服务节点51,还用于,在所述发送需要备份的副本文件之前,把需要备份的本地数据热备份到指定路径下。 [0093] 进一步的,所述服务节点51,还用于根据数据分布表将写数据请求发送到其他服务节点51上进行写入操作后,如果写入失败,客户端将该条数据记录存储到数据记录恢复失败链表中,每当客户端52重新发送写数据请求时,优先发送恢复失败链表中的数据记录。 [0094] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。 |