一种数据恢复的方法、装置和系统的制作方法

文档序号:6356927阅读:115来源:国知局
专利名称:一种数据恢复的方法、装置和系统的制作方法
技术领域
本发明涉及数据库领域,更具体的说,是涉及一种异构数据库的容灾系统中基于操作日志重做的数据恢复的方法、装置和系统。
背景技术
如图1所示,在现有技术中基于异构数据库的容灾系统的结构,由分布在网络中的若干个数据处理中心(容灾节点),容灾管理系统中间件和应用客户端组成。容灾系统是指为计算机信息系统提供的一个能应付各种灾难的环境。在计算机系统遭受不可抗拒的自然灾难,以及计算机犯罪、病毒和人为操作错误等人为灾难时,容灾系统将保证用户数据的安全性(数据容灾)和不间断的提供应用服务(应用容灾)。异构数据库系统则是相关的多个数据库系统的集合。基于异构数据库的容灾系统以中间件的形式为应用系统提供服务,中间件系统屏蔽数据处理中心(图中未标示)的存在为用户提供一个统一的访问接口,而基于异构数据库的容灾系统将现有数据中心组织为一个整体,因此各个容灾节点之间对等,并互为灾备的关系。在基于异构数据库的容灾系统中,当图1中的某些容灾节点发生故障或遭受灾难时,依据容灾要求,正常的容灾节点仍然继续处理应用系统的数据更新请求。但是,当发生灾难的容灾节点硬件更换或者故障排除之后,其数据与其他正常的容灾节点会处于不一致的状态,因此,需要对发生故障或灾难的容灾节点进行数据一致性恢复。现有数据容灾通常采用数据复制的方法,在异地建立一个备份数据系统,该备份数据系统在本地的数据系统崩溃时迅速接替本地数据系统提供数据服务。目前主流的方法包括基于存储层的数据复制、基于逻辑卷的数据复制和基于重做日志(redo log)的数据复制。其中,基于存储层的数据复制通过基于SAN(Storage Area Network,存储局域网)进行数据复制,该复制过程针对每个1/0(输入输出设备)进行,它将主系统中对磁盘的I/O操作通过网络传输到目标端存储系统中再执行一遍。但是,基于该方法进行复制的缺点为只支持主、备两端为同一品牌和具有同样配置的存储设备,不能整合不同品牌的存储设备;不支持不同数据库产品之间的数据复制;需要昂贵的高端磁盘阵列和光纤连接设备,实施费用也较高。基于逻辑卷的数据复制通过基于TCP/IP的网络环境进行数据复制,由操作系统进程捕捉逻辑卷的变化进行数据复制。它将主系统中对磁盘逻辑卷的修改操作复制到目标端系统重新执行一遍。但是,基于该方法进行复制的缺点为需要在存储设备与数据库之间建立一个虚拟存储层(逻辑卷管理层),会对主机性能有一定影响;要求两端的数据库系统必须同构,这使得在整合不同数据库产品的场合受到限制;需要传输的数据量比较大,占用的网络资源也比较多。数据库系统的基于redo log的数据复制使用数据库以外的独立进程,捕捉重做日志文件(redo log file)的信息,将其翻译成SQL语句,再通过网络传输到目标端数据库,在目标端数据库执行同样的SQL。如果其进程赶不上数据库日志切换,也可以捕捉归档日志中的内容。但是,该方法仍然存在缺点其一,数据库的所有更改都记录在redo log 中,其中记录了对数据库中的每一个变化,它的实施与具体数据库密切相关的,要将数据库的redo log file中的信息转换为SQL语句,需要对每种不同的数据库redo log进行具体分析,因此不利于异构容灾的实现;其二,在数据库的吞吐量太大时,数据会有较大延迟。基于上述现有技术中的三种数据复制方法的分析,可知现有的数据复制技术都不能完全满足异构数据库容灾系统需求。因此,需要一种可以克服现有技术中的数据复制方法的缺点,即满足异构数据库容灾系统需求的数据一致性恢复方法。

发明内容
有鉴于此,本发明提供了一种数据恢复的方法、装置和系统,以克服现有技术中各种数据复制方法不能满足异构数据库容灾系统需求的问题。为实现上述目的,本发明提供如下技术方案一种数据恢复方法,包括获取所有用户操作请求,将所述用户操作请求以操作日志形式存储于恢复日志;提取所述恢复日志中的读取操作记录并进行分析,得到对目标容灾节点数据库进行更新的操作语句;接收并合并属于同一事务的所述操作语句,以所述事务为单位进行集合,获取可提交的事务包,并发送;顺序接收所述事务包,并装载所述事务包至所述目标容灾节点数据库中,完成数据恢复。优选的,所述提取所述恢复日志中的读取操作记录并进行分析的过程包括逐条提取存储于所述恢复日志中的操作日志记录;依次对所述操作日志记录中表示操作记录项的结构化查询语言SQL的语句内容的sqlsrc字段进行分析;当所述sqlsrc字段的开头与关键字select匹配时,丢弃所述sqlsrc字段对应的操作日志记录的语句;当所述sqlsrc字段的开头与关键字select不匹配时,确定所述sqlsrc字段对应的操作日志记录的语句为对目标容灾节点数据库进行更新的操作语句。优选的,所述得到对目标容灾节点数据库进行更新的操作语句中包括提交当前事务Commit的事务、未Commit的事务和中止当前事务Rollkick的事务。优选的,所述合并属于同一事务的所述操作语句,以所述事务为单位进行集合,获取可提交的事务包的过程包括根据所述恢复日志中所属的事务序列号进行事务合并,生成对应的事务包;依据所述恢复日志中的操作日志序列号对每个所述事务包中的操作日志记录进行升序排序;当所述事务包为Commit的事务,获取所述事务包;当所述事务包为RolIhck的事务,丢弃所述事务包。
优选的,所述获取可提交的事务包之后,并发送之前还包括存储所述事务包于发送端的缓存中。优选的,所述顺序接收所述事务包,之后,装载之前还包括将所述顺序接收的事务包存储于接收端的事务队列中。一种数据恢复装置,包括容灾管理系统中间件,所述容灾管理系统中间件包括事务捕获模块,用于获取所有用户操作请求,将所述用户操作请求以操作日志形式存储于恢复日志;恢复日志数据库,用于存储所述恢复日志;日志分析模块,用于提取所述恢复日志中的读取操作记录并进行分析,获取对目标容灾节点数据库进行更新的操作语句;事务综合模块,用于接收并合并所述日志分析模块中属于同一事务的操作语句, 以所述事务为单位进行集合,获取可提交的所述事务包;日志发送模块,用于发送事务综合模块中获取的可提交的所述事务包;日志接收模块,用于顺序接收所述事务包;日志装载模块,用于装载所述日志接收模块接收到的事务包至所述目标容灾节点数据库中,完成数据恢复。一种数据恢复系统,包括包含一个或多个用户的用户端,用于发送用户操作请求;数据恢复装置,用于接收所述用户操作请求,将所述用户操作请求以操作日志形式进行存储,并对所述操作日志进行处理,将获取到的符合目标容灾节点数据库数据恢复的事务包装载至容灾节点数据库;容灾节点数据库,用于依据装载的所述事务包中的操作日志进行数据恢复。经由上述的技术方案可知,与现有技术相比,本发明公开了一种数据恢复的方法、 装置和系统,通过接收用户操作请求,并以操作日志的形式存储于恢复日志数据库中,在目标容灾节点数据库恢复数据时,从恢复日志数据库中提取操作日志,经网络传输到需要恢复的容灾节点数据库中,并在这些容灾节点数据库中进行事务重做装载。通过上述过程不仅解决了数据在异构数据库容灾节点之间的恢复问题,而且通过日志分析减少了网络中的操作日志传输量,减轻日志传输对网络造成的负担,同时,通过事务综合使传输过程中以事务为单位进行传输,保证数据的一致性和完整性;以及,在目标容灾节点数据库端进行事务包装载时能够避免执行无效的查询操作,使事务包装载效率更高,进一步提高了目标容灾节点数据库的数据恢复速度。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为现有技术中基于异构数据库的容灾系统的结构示意图2为本发明实施例公开的一种数据恢复的方法流程图;图3为本发明实施例公开的捕获或获取所有用户操作请求的原理图;图4为本发明实施例公开的日志分析的原理图;图5为本发明实施例公开的日志分析的流程图;图6为本发明实施例公开的实现事务综合获取事务包的原理图;图7为本发明实施例公开的实现事务综合获取事务包的流程图;图8为本发明实施例公开的一种数据恢复装置的结构示意图;图9为本发明实施例公开的一种数据恢复系统的结构示意图。
具体实施例方式为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下事务指访问并可能更新数据库中各种数据项的一个程序执行单元,通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起;SQL structured Query Language,结构化查i|ji吾言;Commit 提交当前事务;Rollback 中止当前事务;Cache 缓存;Export Process 传输进程;Import Process 导入进程;Queue 队列。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。由于,现有技术中的各类数据复制的方法都存在不能满足异构数据库的容灾系统的需求,即不能满足确保异构的数据库容灾节点之间的数据恢复的一致性,也不能满足提高容灾节点数据恢复效率的需求,因此,本发明提供了一种数据恢复的方法、装置和系统, 基本原理是在容灾管理系统中设置恢复日志(Recovery Log)数据库,通过该恢复日志数据库接收应用系统发送至容灾管理系统的所有事务请求,即用户操作请求,并以操作日志的形式存储到文件系统或数据库系统中。当对一个容灾节点数据库进行恢复时,从恢复日志数据库中提取操作日志,经网络传输到需要恢复的容灾节点数据库中,并在这些容灾节点数据库中进行事务重做装载,从而实现各个容灾节点数据库的数据一致性恢复。具体过程通过以下实施例进行说明。请参阅附图2,为本发明实施例公开的一种数据恢复的方法流程图,主要包括以下步骤步骤S101,获取所有用户操作请求,将所述用户操作请求以操作日志形式存储于恢复日志中。在本发明上述公开的实施例中,在用户和容灾节点数据库之间设置有中间层,该中间层也可称为容灾管理系统中间件。如图3所示为捕获或获取所有用户操作请求的原理图(图中包括用户1、用户2、用户η、容灾管理系统中间件A、恢复日志数据库B和容灾节点数据库C),所有用户操作请求由该容灾管理系统中间件A接收,并由该容灾管理系统中间件A将用户操作请求转发给所有容灾节点数据库C,使用户操作请求不再直接提交给容灾节点数据库C,同时,在该容灾管理系统中间件A将用户操作请求进行复制,并以操作日志形式存储于恢复日志数据库B中。需要说明的是,以操作日志形式将用户操作请求存储于恢复日志数据库B中,具体为将该用户操作请求以操作日志记录形式保存于文件系统或者数据库系统中,但是,由于业务应用系统会产生大量日志记录,利用文件系统管理日志记录可能导致效率不高,因此可选择使用专门的数据库系统保存上述的操作日志。其中,恢复日志数据库B中的恢复日志的数据结构的格式如表1所示。表1:
权利要求
1.一种数据恢复方法,其特征在于,包括获取所有用户操作请求,将所述用户操作请求以操作日志形式存储于恢复日志;提取所述恢复日志中的读取操作记录并进行分析,得到对目标容灾节点数据库进行更新的操作语句;接收并合并属于同一事务的所述操作语句,以所述事务为单位进行集合,获取可提交的事务包,并发送;顺序接收所述事务包,并装载所述事务包至所述目标容灾节点数据库中,完成数据恢复。
2.根据权利要求1所述的方法,其特征在于,所述提取所述恢复日志中的读取操作记录并进行分析的过程包括逐条提取存储于所述恢复日志中的操作日志记录;依次对所述操作日志记录中表示操作记录项的结构化查询语言SQL的语句内容的 sqlsrc字段进行分析;当所述sqlsrc字段的开头与关键字select匹配时,丢弃所述sqlsrc字段对应的操作日志记录的语句;当所述sqlsrc字段的开头与关键字select不匹配时,确定所述sqlsrc字段对应的操作日志记录的语句为对目标容灾节点数据库进行更新的操作语句。
3.根据权利要求1所述的方法,其特征在于,所述得到对目标容灾节点数据库进行更新的操作语句中包括提交当前事务Commit的事务、未Commit的事务和中止当前事务 Rollback的事务。
4.根据权利要求1所述的方法,其特征在于,所述合并属于同一事务的所述操作语句, 以所述事务为单位进行集合,获取可提交的事务包的过程包括根据所述恢复日志中所属的事务序列号进行事务合并,生成对应的事务包;依据所述恢复日志中的操作日志序列号对每个所述事务包中的操作日志记录进行升序排序;当所述事务包为Commit的事务,获取所述事务包;当所述事务包为Rollback的事务,丢弃所述事务包。
5.根据权利要求1所述的方法,其特征在于,所述获取可提交的事务包之后,并发送之前还包括存储所述事务包于发送端的缓存中。
6.根据权利要求1所述的方法,其特征在于,所述顺序接收所述事务包,之后,装载之前还包括将所述顺序接收的事务包存储于接收端的事务队列中。
7.一种数据恢复装置,其特征在于,包括容灾管理系统中间件,所述容灾管理系统中间件包括事务捕获模块,用于获取所有用户操作请求,将所述用户操作请求以操作日志形式存储于恢复日志;恢复日志数据库,用于存储所述恢复日志;日志分析模块,用于提取所述恢复日志中的读取操作记录并进行分析,获取对目标容灾节点数据库进行更新的操作语句;事务综合模块,用于接收并合并所述日志分析模块中属于同一事务的操作语句,以所述事务为单位进行集合,获取可提交的所述事务包;日志发送模块,用于发送事务综合模块中获取的可提交的所述事务包; 日志接收模块,用于顺序接收所述事务包;日志装载模块,用于装载所述日志接收模块接收到的事务包至所述目标容灾节点数据库中,完成数据恢复。
8. 一种数据恢复系统,其特征在于,包括包含一个或多个用户的用户端,用于发送用户操作请求;数据恢复装置,用于接收所述用户操作请求,将所述用户操作请求以操作日志形式进行存储,并对所述操作日志进行处理,将获取到的符合目标容灾节点数据库数据恢复的事务包装载至容灾节点数据库;容灾节点数据库,用于依据装载的所述事务包中的操作日志进行数据恢复。
全文摘要
本发明公开了一种数据恢复的方法、装置和系统,其方法为获取所有用户操作请求,将用户操作请求以操作日志形式存储于恢复日志;提取恢复日志中的读取操作记录并进行分析,得到对目标容灾节点数据库进行更新的操作语句;接收并合并属于同一事务的操作语句,以事务为单位进行集合,获取可提交的事务包并发送;顺序接收事务包,并装载事务包至目标容灾节点数据库中完成数据恢复。通过上述本发明的方法不仅解决了数据在异构数据库容灾节点之间的数据恢复的一致性和完整性问题,而且还减轻了日志传输对网络造成的负担,以及避免执行无效的查询操作,使事务包装载效率更高,进一步提高了目标容灾节点数据库的数据恢复速度。
文档编号G06F17/30GK102156720SQ201110075349
公开日2011年8月17日 申请日期2011年3月28日 优先权日2011年3月28日
发明者吴泉源, 周斌, 杨树强, 滕猛, 王凯, 王怀民, 罗荣凌, 舒琦, 贾焰, 赵辉, 金松昌, 陈志坤, 韩伟红 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1