CN105022676B - 一种内存数据库重做日志文件的恢复方法和装置 - Google Patents

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

Info

Publication number
CN105022676B
CN105022676B CN201410163685.1A CN201410163685A CN105022676B CN 105022676 B CN105022676 B CN 105022676B CN 201410163685 A CN201410163685 A CN 201410163685A CN 105022676 B CN105022676 B CN 105022676B
Authority
CN
China
Prior art keywords
file
memory database
rollback
message
affairs
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201410163685.1A
Other languages
English (en)
Other versions
CN105022676A (zh
Inventor
许哲
郝春美
杨耀华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Datang Software Technologies Co Ltd
Original Assignee
Datang Software Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Datang Software Technologies Co Ltd filed Critical Datang Software Technologies Co Ltd
Priority to CN201410163685.1A priority Critical patent/CN105022676B/zh
Publication of CN105022676A publication Critical patent/CN105022676A/zh
Application granted granted Critical
Publication of CN105022676B publication Critical patent/CN105022676B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

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

Claims (6)

1.一种内存数据库重做日志文件的恢复方法,其特征在于,包括:
对重做日志文件按照生成时间的先后顺序进行排序;
按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
其中,在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;具体包括:判断所述循环数组的当前指针位置;若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小信息,根据所述数据包大小信息分割出当前事务,并返回所述判断所述循环数组的当前指针位置的步骤继续执行;
将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
2.根据权利要求1所述的方法,其特征在于,将所述分割成的多个单一事务打成回滚数据包的步骤包括:
将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
3.根据权利要求2所述的方法,其特征在于,所述内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。
4.一种内存数据库重做日志文件的恢复装置,其特征在于,包括:
排序模块,用于对重做日志文件按照生成时间的先后顺序进行排序;
读取模块,用于按排序读取重做日志文件中的数据,其中,所述数据中包含多个事务数据;
分割模块,用于使用循环数组存储读取的所述重做日志文件,并在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;
其中,在所述循环数组内对读取的所述重做日志文件中的数据包含的多个事务数据进行分割,分割成多个单一事务;具体包括:判断循环数组的当前指针位置;若所述循环数组的当前指针位于读取的所述重做日志文件的文件尾,则停止对读取的所述重做日志文件的分割,退出所述循环数组;若所述循环数组的当前指针不位于读取的所述重做日志文件的文件尾,则读取设定数据长度的重做日志文件的内容,从读取的内容中获取当前事务的数据包大小信息,根据所述数据包大小信息分割出当前事务,并返回所述判断所述循环数组的当前指针位置继续执行;
回滚模块,用于将所述分割成的多个单一事务打成回滚数据包,并将打成的所述多个单一事务的回滚数据包分别发送到内存数据库,通过所述内存数据库进行多个单一事务的回滚。
5.根据权利要求4所述的装置,其特征在于,所述回滚模块在将所述分割成的多个单一事务打成回滚数据包时,将分割成的各个单一事务对应的报文的报文类型、报文大小和报文内容进行组合,生成对应于各个单一事务的回滚数据包。
6.根据权利要求5所述的装置,其特征在于,所述回滚模块在通过所述内存数据库进行多个单一事务的回滚时,由内存数据库通过以下方式进行多个单一事务的回滚:
内存数据库对接收到的多个单一事务的回滚数据包进行解析,获取各个回滚数据包中的报文类型、报文大小和报文内容;
内存数据库根据所述报文类型查找与所述报文类型相同的单一事务;
将所述报文内容添加到所述内存数据库中具有相同报文类型的单一事务中,完成单一事务回滚。
CN201410163685.1A 2014-04-22 2014-04-22 一种内存数据库重做日志文件的恢复方法和装置 Expired - Fee Related CN105022676B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410163685.1A CN105022676B (zh) 2014-04-22 2014-04-22 一种内存数据库重做日志文件的恢复方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410163685.1A CN105022676B (zh) 2014-04-22 2014-04-22 一种内存数据库重做日志文件的恢复方法和装置

Publications (2)

Publication Number Publication Date
CN105022676A CN105022676A (zh) 2015-11-04
CN105022676B true CN105022676B (zh) 2018-08-17

Family

ID=54412665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410163685.1A Expired - Fee Related CN105022676B (zh) 2014-04-22 2014-04-22 一种内存数据库重做日志文件的恢复方法和装置

Country Status (1)

Country Link
CN (1) CN105022676B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017114263A1 (en) * 2015-12-28 2017-07-06 Huawei Technologies Co., Ltd. System, apparatus and method for avoiding data loss on recovery of bulk load
CN106815363A (zh) * 2017-01-24 2017-06-09 郑州云海信息技术有限公司 一种基于linux日志轮转管理方法与装置
CN107273449B (zh) * 2017-05-27 2020-07-28 北京思特奇信息技术股份有限公司 一种基于内存数据库的断点处理方法及系统
CN110196788B (zh) * 2018-03-30 2022-05-20 腾讯科技(深圳)有限公司 一种数据读取方法、装置、系统及存储介质
CN110555055A (zh) * 2019-07-19 2019-12-10 国网辽宁省电力有限公司大连供电公司 针对Oracle数据库重做日志文件的数据挖掘方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609337A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据库快速数据恢复方法
CN102629250A (zh) * 2012-02-28 2012-08-08 杭州丰城信息技术有限公司 一种内存数据库重做日志文件的恢复方法
CN102760161A (zh) * 2012-06-12 2012-10-31 天津神舟通用数据技术有限公司 一种基于事务聚集的日志组织结构及实现其相应的恢复协议的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100390853B1 (ko) * 2000-06-07 2003-07-10 차상균 주 메모리 트랜잭션 처리 시스템에서 병렬적 회복 연산을 위한 디퍼런셜 로깅 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609337A (zh) * 2012-01-19 2012-07-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据库快速数据恢复方法
CN102629250A (zh) * 2012-02-28 2012-08-08 杭州丰城信息技术有限公司 一种内存数据库重做日志文件的恢复方法
CN102760161A (zh) * 2012-06-12 2012-10-31 天津神舟通用数据技术有限公司 一种基于事务聚集的日志组织结构及实现其相应的恢复协议的方法

Also Published As

Publication number Publication date
CN105022676A (zh) 2015-11-04

Similar Documents

Publication Publication Date Title
EP3754514B1 (en) Distributed database cluster system, data synchronization method and storage medium
CN105022676B (zh) 一种内存数据库重做日志文件的恢复方法和装置
CN103729442B (zh) 记录事务日志的方法和数据库引擎
US20190075152A1 (en) Method and system for file transfer over a messaging infrastructure
CN110309218B (zh) 一种数据交换系统和数据写入方法
CN101937376B (zh) 一种数据管理方法及数据存储装置
US20150213100A1 (en) Data synchronization method and system
CN106933703B (zh) 一种数据库数据备份的方法、装置及电子设备
US20060020674A1 (en) Providing archiving of individual mail content while maintaining a single copy mail store
CN103164523A (zh) 数据一致性检查方法、装置及系统
US20130103982A1 (en) Log file compression
CN109445861A (zh) 系统启动方法、装置、计算机装置及存储介质
CN104077380A (zh) 一种重复数据删除方法、装置及系统
JP2019527883A (ja) データベースのデータ変更要求処理方法及び装置
CN103092718A (zh) 测试数据备份系统及方法
CN111666046B (zh) 一种数据存储方法、装置及设备
CN114138549A (zh) 基于kubernetes系统的数据备份和恢复方法
US8090695B2 (en) Dynamic restoration of message object search indexes
CN110989935A (zh) Flume系统的数据处理、传输方法及装置
CN111475334A (zh) TiDB数据库的维护方法、装置、计算机设备及存储介质
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN103729269A (zh) 一种基于云架构的网络考试数据双缓存方法
WO2022156369A1 (zh) 存储块管理信息同步记录方法、系统、终端及存储介质
CN108762988A (zh) 一种数据处理的方法以及相关设备
CN112199329B (zh) 基于堡垒机的双机运维数据归档清理方法与设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180817