太阳城集团

  • / 15
  • 下载费用:30 金币  

一种内存数据库重做日志文件的恢复方法和装置.pdf

摘要
申请专利号:

CN201410163685.1

申请日:

2014.04.22

公开号:

太阳城集团CN105022676A

公开日:

2015.11.04

当前法律状态:

授权

有效性:

有权

法律详情: 授权|||实质审查的生效IPC(主分类):G06F 11/14申请日:20140422|||公开
IPC分类号: G06F11/14; G06F17/30 主分类号: G06F11/14
申请人: 大唐软件技术股份有限公司
发明人: 许哲; 郝春美; 杨耀华
地址: 100012北京市朝阳区北苑路乙108号北美国际商务中心大唐软件
优先权:
专利代理机构: 北京润泽恒知识产权代理有限公司11319 代理人: 兰淑铎
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201410163685.1

授权太阳城集团号:

||||||

法律状态太阳城集团日:

2018.08.17|||2015.12.02|||2015.11.04

法律状态类型:

太阳城集团授权|||实质审查的生效|||公开

摘要

本申请提供了一种内存数据库重做日志文件的恢复方法和装置,包括:对重做日志文件按照生成太阳城集团的先后顺序进行排序;按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。因此,本申请解决了内存数据库的数据丢失和无法及时恢复的问题。

权利要求书

权利要求书
1.  一种内存数据库重做日志文件的恢复方法,其特征在于,包括:
对重做日志文件按照生成太阳城集团的先后顺序进行排序;
按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。

2.  根据权利要求1所述的方法,其特征在于,所述对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:
使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。

3.  根据权利要求2所述的方法,其特征在于,在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置的步骤继续执行。

4.  根据权利要求1至3任一项所述的方法,其特征在于,将所述分割成的多个单一事务打成回滚数据包的步骤包括:
将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容 进行组合,生成对应于各个单一事务的回滚数据包。

5.  根据权利要求4所述的方法,其特征在于,所述内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。

6.  一种内存数据库重做日志文件的恢复装置,其特征在于,包括:
排序模块,用于对重做日志文件按照生成太阳城集团的先后顺序进行排序;
读取模块,用于按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
分割模块,用于对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
回滚模块,用于将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。

7.  根据权利要求6所述的装置,其特征在于,所述分割模块使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。

8.  根据权利要求7所述的装置,其特征在于,所述分割模块在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务时:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务 的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置继续执行。

9.  根据权利要求6至8任一项所述的装置,其特征在于,所述回滚模块在将所述分割成的多个单一事务打成回滚数据包时,将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。

10.  根据权利要求9所述的装置,其特征在于,所述回滚模块在通过所述内存数据库进行多个单一事务的回滚时,由内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。

说明书

说明书一种内存数据库重做日志文件的恢复方法和装置
技术领域
本申请涉及内存数据库系统领域,特别是涉及一种内存数据库重做日志文件的恢复方法和装置。
背景技术
随着电信业、金融业不断的发展,业务扩展越来越广,各种新业务层出不穷,数据量也越来越大,对数据访问的响应速度要求也越来越高。大量的用户资料数据、用户消费数据都需要存放在内存数据库中,但是由于内存的非持久性,一旦内存数据库进程或者所在主机发生宕机,内存中的数据将全部丢失。
目前,一般的内存数据库采用定时备份内存数据的方式,这样,当系统宕机,内存数据库异常,可以从最近一次的备份数据进行恢复,但是,从最近一次备份到系统发生宕机的这段太阳城集团,内存数据库发生的修改操作都会丢失,仅靠内存数据库自身的机制是无法恢复的。
因此,如何防止内存数据库的丢失和及时恢复到异常之前的状态,成为了内存数据库亟待解决的问题。
发明内容
本申请提供一种内存数据库在线重做日志文件的恢复方法和系统,以解决内存数据库的数据丢失和无法及时恢复的问题。
为了解决上述问题,本申请公开了一种内存数据库重做日志文件的恢复方法,包括:对重做日志文件按照生成太阳城集团的先后顺序进行排序;
按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成 多个单一事务;
将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
优选地,所述对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:
使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
优选地,在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置的步骤继续执行。
优选地,将所述分割成的多个单一事务打成回滚数据包的步骤包括:
将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
优选地,所述内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。
为了解决上述问题,本申请还公开了一种内存数据库重做日志文件的恢 复装置,包括:排序模块,用于对重做日志文件按照生成太阳城集团的先后顺序进行排序;
读取模块,用于按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
分割模块,用于对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
回滚模块,用于将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
优选地,所述分割模块使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
优选地,所述分割模块在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务时:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置继续执行。
优选地,所述回滚模块在将所述分割成的多个单一事务打成回滚数据包时,将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
优选地,所述回滚模块在通过所述内存数据库进行多个单一事务的回滚时,由内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。
与现有技术相比,本申请包括以下优点:
首先,本申请的重做日志文件对系统的每个操作都进行记录,每个重做日志文件中记录有多个事务,一个重做日志文件中的各个事务可能是完整的,也可能是不完整的,记录每个事务的事务编号、业务类型编号等太阳城集团,再将需要恢复的日志放到相应目录下,启动重做日志程序对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务,将分割成的多个单一事务通过内存数据库进行处理,从而避免了内存数据库发生宕机或者业务数据错误造成内存数据库的数据丢失。
其次,本申请将分割成的多个单一事务打成回滚数据包,并将打成的多个单一事务的回滚数据包分别发送到内存数据库,通过内存数据库进行多个单一事务的回滚,避免了仅靠内存数据库自身的机制无法及时恢复,减少了回滚数据包的大小,从而提高了传输数据的速度,由此,解决了内存数据库无法及时恢复的问题。
附图说明
图1是本申请实施例一中的一种内存数据库重做日志文件的恢复方法的流程图;
图2是本申请实施例二中的一种内存数据库重做日志文件的恢复方法的流程图;
图3是本申请实施例三中的一种内存数据库进行事务处理时的操作流程图;
图4是本申请实施例四中的一种内存数据库重做日志文件的恢复装置的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参照图1,示出了本申请实施例一中的一种内存数据库重做日志文件的恢复方法,包括:
步骤101:对重做日志文件按照生成太阳城集团的先后顺序进行排序。
重做日志文件对系统的每个操作都进行记录,每个重做日志文件中记录有多个事务,一个重做日志文件中的各个事务可能是完整的,也可能是不完整的。对重做日志文件按照生成太阳城集团先后顺序进行排序时,可以对重做日志文件按照生成太阳城集团从前往后进行排序,产生太阳城集团早的重做日志文件排在前,产生太阳城集团晚的重做日志文件排在后。
步骤102:按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据。
读取重做日志文件,获取重做日志文件中的数据量大小。如果读取的重做日志文件中的数据量小于等于零,则返回错误太阳城集团,结束恢复;如果读取的重做日志文件中的数据量大于零,则读取重做日志文件中的数据,继续执行下一步骤的操作。
步骤103:对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
分割成的多个单一事务包括报文类型、数据包大小和数据包太阳城集团。
对读取的重做日志文件中的数据分割成的多个单一事务可以按照表一的格式进行存储。
表一

其中,报文类型,数据包大小都为长整型,定长。
步骤104:将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
分割成的多个单一事务打成的回滚数据包可以通过socket连接发送到内存数据库,内存数据库根据接收到的回滚数据包进行解析,完成多个单一事务的回滚。但不限于此,其它任意适当的发送回滚数据包到内存数据库的方式也同样适用。
通过本实施例,首先,重做日志文件对系统的每个操作都进行记录,每个重做日志文件中记录有多个事务,一个重做日志文件中的各个事务可能是完整的,也可能是不完整的,记录每个事务的事务编号、业务类型编号等太阳城集团,再将需要恢复的日志放到相应目录下,启动重做日志程序对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务,将分割成的多个单一事务通过内存数据库进行处理,从而避免了内存数据库发生宕机或者业务数据错误造成内存数据库的数据丢失。
其次,本申请将分割成的多个单一事务打成回滚数据包,并将打成的多个单一事务的回滚数据包分别发送到内存数据库,通过内存数据库进行多个单一事务的回滚,避免了仅靠内存数据库自身的机制无法及时恢复,减少了回滚数据包的大小,从而提高了传输数据的速度,由此,解决了内存数据库无法及时恢复的问题。
参照图2,示出了本申请实施例二中的一种内存数据库重做日志文件的恢复方法的流程图。
在本实施例二中的一种内存数据库重做日志文件的恢复方法可以应用于Linux Redhat6.0操作系统,也可以应用于HP-UX、AIX和Solaris等系统。
本实施例中,以处理写操作事务的重做日志恢复为例。在处理写操作的事务时,内存数据库会生成重做日志,将整个事务的数据都将写入到重做日志文件中。重做日志文件的每个事务都包含事务编号、业务类型、表编号、内存项、数据内容大小、数据内容。
重做日志的文件命名方式是redo.log_开始太阳城集团_当前太阳城集团_备份日期_增量字段。重做日志列表如表二所示。
表二:
重做日志列表redo.log_174657_174657_20130812_00000012redo.log_142143_154636_20130812_00000004redo.log_141647_142143_20130812_00000003
本实施例中的一种内存数据库重做日志文件的恢复方法包括:
步骤201:当内存数据库由异常恢复到内存数据库正常运行时,重做日志恢复开始。
步骤202:将需要重做的日志文件保存在重做日志文件目录中,对重做日志文件目录进行扫描,得到当前的重做日志文件列表。
步骤203:启动重做日志程序,程序将加载需要重做的日志文件,并按照重做日志文件生成太阳城集团的先后顺序进行排序。
步骤204:重做日志程序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据。
步骤205:判断是否有需要重做的重做日志文件,如果有,则执行步骤206,;如果否,则执行步骤208。
步骤206:对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
进一步地,在循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务的步骤包括:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则 停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置的步骤继续执行下一个单一事务。
其中,设定数据长度可以由本领域技术人员根据实际情况适当设置,通常设定为能够获取数据包包头太阳城集团的长度即可,如设定为数据包包头中报文类型和数据包大小太阳城集团的字节长度,或者设定为数据包包头中的数据包大小太阳城集团的字节长度,如8个字节。
例如:程序将重做日志文件中的内容保存到字符串数组LogStr,该字符串数组为当前文件大小Size+1。
循环遍历字符串数组LogStr,当文件内容指针大于等于Size时,退出循环。
当文件内容指针小于Size时,则根据定长M(即设定数据长度),取出第一个事务的报文类型和数据包大小太阳城集团,设定数据包大小太阳城集团指示当前数据包大小(即当前数据包的长度)记为N。
根据数据包大小N,可以读取数据包,进而获取数据包里的实际数据内容。
将第一个事务的报文类型、报文大小(即数据包大小太阳城集团)和报文内容(即数据包内容)重新组合成第一个事务的回滚数据包发送给内存数据库处理。
移动文件内容指针,移动指针大小为报文类型+数据包大小太阳城集团+数据包内容的长度M+N,继续处理下一个事务。
步骤207:将事务发送到内存数据库。
具体地,将分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包通过socket分别发送到内存数据库,内存数据库根据接收到的回滚数据包,完成内存数据库中的单一事务的回滚。优选地,将分割成的多个单一事务打成回滚数据包的步骤包括:
将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
进一步地,内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的的单一事务中,完成单一事务回滚。
实际上内存数据库中存在多个报文类型相同的单一事务,虽然报文类型相同,但是每个报文类型中的报文内容却完全不同。当内存数据库根据报文类型查找到与所述报文类型相同的单一事务之后,将报文内容添加到内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。
步骤208:重做日志结束恢复。
步骤209:循环进行,处理完所有重做日志,完成数据回滚操作。
需要说明的是,本申请中的报文类型指具体事务更新时的所要更新的事项的名称,统一称为报文类型。
以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本申请的保护范围。
综上所述,本申请实施例一种内存数据库重做日志文件的恢复方法主要包括以下优点:
首先,本实施例的重做日志文件对系统的每个操作都进行记录,每个重做日志文件中记录有多个事务,一个重做日志文件中的各个事务可能是完整的,也可能是不完整的,记录每个事务的事务编号、业务类型编号等太阳城集团,再将需要恢复的日志放到相应目录下,启动重做日志程序对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务,将分割成的多个单一事务通过内存数据库进行处理,从而避免了内存数据库发生宕 机或者业务数据错误造成内存数据库的数据丢失。
其次,本申请将分割成的多个单一事务打成回滚数据包,并将打成的多个单一事务的回滚数据包分别发送到内存数据库,通过内存数据库进行多个单一事务的回滚,避免了仅靠内存数据库自身的机制无法及时恢复,减少了回滚数据包的大小,从而提高了传输数据的速度,由此,解决了内存数据库无法及时恢复的问题。
参照图3,示出了本申请实施例三中的一种内存数据库进行事务处理时的操作流程图。
在本实施例三中的一种内存数据库进行事务处理时的操作流程图,具体可以包括:
步骤301:事务开始。
步骤302:重做日志处理。
本实施例中,以处理写操作事务的重做日志恢复为例。具体地,重做日志处理是在事务处理对记录进行写操作的时候触发的,每次日志生成都是在处理事务之前。本申请使用两个重做日志进程进行重做日志的操作,当图3中所示的3021即重做日志进程1中的日志达到上限后自动切换到图3中所示的3022即重做日志进程2中做新的日志输出,然后将重做日志进程1生成的日志存储,同理,当重做日志进程2中的日志达到上限后自动切换到重做日志进程1做新的日志输出,然后将重做日志进程2生成的日志存储。
生成的日志可以采用文件存储方式或内存存储方式3023。其中,文件存储方式是将生成的日志直接输出到日志文件中,但每个日志文件都有大小的限制,当达到日志文件设定的上限后,将后续的操作输出到新的日志文件中。内存存储方式是将日志先存储到共享内存中,到达设定上限后,将共享内存中的日志输出到日志文件中,清空共享内存中的内容。
步骤303:进行事务处理。
步骤304:事务结束。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述 的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例。
基于上述方法实施例的说明,本申请还提供了相应的一种内存数据库重做日志文件的恢复装置的实施例,来实现上述方法实施例所述的内容。
参见图4,示出了本申请实施例四中的一种内存数据库重做日志文件的恢复装置的结构框图,具体可以包括:
排序模块401,用于对重做日志文件按照生成太阳城集团的先后顺序进行排序;
读取模块402,用于按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
分割模块403,用于对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
回滚模块404,用于将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
优选地,所述分割模块使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务。
优选地,所述分割模块在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务时:
判断所述循环数组的当前指针位置;
若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;
若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小太阳城集团,根据所述数据包大小太阳城集团分割出当前事务,并返回所述判断所述循环数组的当前指针位置继续执行。
优选地,所述回滚模块在将所述分割成的多个单一事务打成回滚数据包 时,将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
优选地,所述回滚模块在通过所述内存数据库进行多个单一事务的回滚时,由内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同的单一事务中,完成单一事务回滚。
综上所述,本申请实施例一种内存数据库重做日志文件的恢复装置主要包括以下优点:
首先,本实施例的重做日志文件对系统的每个操作都进行记录,每个重做日志文件中记录有多个事务,一个重做日志文件中的各个事务可能是完整的,也可能是不完整的,记录每个事务的事务编号、业务类型编号等太阳城集团,再将需要恢复的日志放到相应目录下,启动重做日志程序对读取的重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务,将分割成的多个单一事务通过内存数据库进行处理,从而避免了内存数据库发生宕机或者业务数据错误造成内存数据库的数据丢失。
其次,本申请将分割成的多个单一事务打成回滚数据包,并将打成的多个单一事务的回滚数据包分别发送到内存数据库,通过内存数据库进行多个单一事务的回滚,避免了仅靠内存数据库自身的机制无法及时恢复,减少了回滚数据包的大小,从而提高了传输数据的速度,由此,解决了内存数据库无法及时恢复的问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种内存数据库重做日志文件的恢复方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进 行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

关 键 词:
一种 内存 数据库 重做 日志 文件 恢复 方法 装置
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:一种内存数据库重做日志文件的恢复方法和装置.pdf
链接地址:http://zh228.com/p-6401697.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');