掌桥专利:专业的专利平台
掌桥专利
首页

数据恢复方法、装置和设备

文献发布时间:2023-06-19 19:27:02


数据恢复方法、装置和设备

技术领域

本申请涉及计算机技术领域,特别涉及一种数据恢复方法、装置和设备。

背景技术

针对安防场景下双机服务器一台数据服务器离线后重新上线后,主备服务器上的数据库内容不一致的现象,需要将主机数据库的内容同步到备机服务器上,等主备数据库完全一致后才能让备机上线,并能够在主机下线后能对外提供服务,保证数据一致性,这就要求主机尽可能快地向备机同步差异化数据。目前较为通用的技术方案为在备机上线后通过单线程解析日志,多线程恢复日志,再将日志数据插入到数据库中。

然而,如果备机在恢复时遇到断电等异常场景,会导致恢复执行到一半就被停止,再次重启服务器如果继续从头恢复不仅会消耗大量时间,而且会有可能导致主备数据库不一致的现象。

发明内容

本申请的目的是提供一种数据恢复方法、装置和设备,用以解决相关技术中备机在恢复时遇到断电等异常场景导致主备数据库不一致的问题。

第一方面,本申请提供一种数据恢复方法,应用于双机服务器中的主机,所述方法包括:

在对日志文件进行日志回放过程中,针对每个回放线程,根据偏移量记录缓存和偏移量记录文件,确定与所述回放线程对应的回放线程处理记录的历史偏移量;

根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点;

从所述读起点对所述日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列;

确定完成对日志文件的解析后,对日志缓存中的实时日志文件进行解析,并将解析后的实时日志文件插入到与所述回放线程对应的回放队列,其中,所述回放队列用于将所述回放队列中的文件发送至所述双机服务器的备机;

若确定所有回放队列均为空,则向所述备机发送重新上线运行指令。

在一种可能的实施方式中,将日志缓存中的实时日志文件分别插入到对应的回放队列之前,所述方法还包括:

设置所述回放队列的最大记录个数以及中等记录个数,所述中等记录个数为所述最大记录个数的预设百分比。

在一种可能的实施方式中,所述设置回放队列的最大记录个数以及中等记录个数,还包括:

若确定所述回放队列已经填满,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,更新所述回放队列的最大记录个数和中等记录个数,得到所述回放队列的新最大记录个数以及新中等记录个数;

若确定更新完成后的新最大记录个数小于队列中的当前记录个数,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,再次更新所述回放队列的新最大记录个数和新中等记录个数,直到回放队列均为空。

在一种可能的实施方式中,所述更新所述回放队列的最大记录个数和中等记录个数,或者,所述更新所述回放队列的新最大记录个数和新中等记录个数,包括:

确定所述回放队列的当前最大记录个数和当前队列记录个数,将所述当前最大记录个数与所述当前队列记录个数的差值的预设比例,与所述当前队列记录个数进行相加处理,得到所述回放队列的新最大记录个数。

在一种可能的实施方式中,所述根据偏移量记录缓存和偏移量记录文件,确定每一个回放线程处理记录的历史偏移量,包括:

对比所述偏移量记录缓存中的第一偏移量和偏移量记录文件中的第二偏移量,将对应同一个回放线程处理记录的偏移量中的较大值作为当前回放线程处理记录的历史偏移量,其中,所述偏移量记录缓存用于记录每一个回放线程处理记录对应的第一偏移量,所述偏移量记录文件用于周期记录每一个回放线程处理记录对应的第二偏移量。

在一种可能的实施方式中,所述根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点,包括:

根据所述偏移量记录文件的最高位,确定对应所述偏移量记录文件的所述回放线程是否完成前一次回放任务;

若确定任一回放线程未完成前一次回放任务,将所有未完成前一次回放任务的所述回放线程对应的回放线程处理记录的历史偏移量中的最小值,作为解析线程的读起点。

在一种可能的实施方式中,所述方法还包括:

若确定偏移量记录文件中记录的偏移量为0,并确定所述双机服务器中存在旧日志文件,直接在所述旧日志文件之后写入新日志文件,得到实时日志文件;

若确定偏移量记录文件中记录的偏移量不为0,并确定所述双机服务器中存在旧日志文件,在所述旧日志文件中偏移量位置处写入新日志文件,得到实时日志文件;

将所述实时日志文件保存在日志缓存中。

在一种可能的实施方式中,在从所述读起点对所述双机服务器的主机的日志文件进行解析之前,所述方法还包括:

判断所述日志文件是否连续;

若确定所述日志文件是连续的,从所述读起点对日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列。

第二方面,本申请提供一种数据恢复装置,应用于双机服务器中的主机,所述装置包括:

历史偏移量确定模块,被配置为在对日志文件进行日志回放过程中,针对每个回放线程,根据偏移量记录缓存和偏移量记录文件,确定与所述回放线程对应的回放线程处理记录的历史偏移量;

读起点确定模块,被配置为根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点;

解析模块,被配置为从所述读起点对所述日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列;

实时日志文件解析模块,被配置为确定完成对日志文件的解析后,对日志缓存中的实时日志文件进行解析,并将解析后的实时日志文件插入到与所述回放线程对应的回放队列,其中,所述回放队列用于将所述回放队列中的文件发送至所述双机服务器的备机;

上线运行指令发送模块,被配置为若确定所有回放队列均为空,则向所述备机发送重新上线运行指令。

在一种可能的实施方式中,执行将日志缓存中的实时日志文件分别插入到对应的回放队列之前,所述解析模块还被配置为:

设置所述回放队列的最大记录个数以及中等记录个数,所述中等记录个数为所述最大记录个数的预设百分比。

在一种可能的实施方式中,执行所述设置回放队列的最大记录个数以及中等记录个数,所述解析模块还被配置为:

若确定所述回放队列已经填满,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,更新所述回放队列的最大记录个数和中等记录个数,得到所述回放队列的新最大记录个数以及新中等记录个数;

若确定更新完成后的新最大记录个数小于队列中的当前记录个数,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,再次更新所述回放队列的新最大记录个数和新中等记录个数,直到回放队列均为空。

在一种可能的实施方式中,执行所述更新所述回放队列的最大记录个数和中等记录个数,或者,所述更新所述回放队列的新最大记录个数和新中等记录个数,所述解析模块被配置为:

确定所述回放队列的当前最大记录个数和当前队列记录个数,将所述当前最大记录个数与所述当前队列记录个数的差值的预设比例,与所述当前队列记录个数进行相加处理,得到所述回放队列的新最大记录个数。

在一种可能的实施方式中,执行所述根据偏移量记录缓存和偏移量记录文件,确定每一个回放线程处理记录的历史偏移量,所述历史偏移量确定模块被配置为:

对比所述偏移量记录缓存中的第一偏移量和偏移量记录文件中的第二偏移量,将对应同一个回放线程处理记录的偏移量中的较大值作为当前回放线程处理记录的历史偏移量,其中,所述偏移量记录缓存用于记录每一个回放线程处理记录对应的第一偏移量,所述偏移量记录文件用于周期记录每一个回放线程处理记录对应的第二偏移量。

在一种可能的实施方式中,执行所述根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点,所述读起点确定模块被配置为:

根据所述偏移量记录文件的最高位,确定对应所述偏移量记录文件的所述回放线程是否完成前一次回放任务;

若确定任一回放线程未完成前一次回放任务,将所有未完成前一次回放任务的所述回放线程对应的回放线程处理记录的历史偏移量中的最小值,作为解析线程的读起点。

在一种可能的实施方式中,所述装置还包括:

若确定偏移量记录文件中记录的偏移量为0,并确定所述双机服务器中存在旧日志文件,直接在所述旧日志文件之后写入新日志文件,得到实时日志文件;

若确定偏移量记录文件中记录的偏移量不为0,并确定所述双机服务器中存在旧日志文件,在所述旧日志文件中偏移量位置处写入新日志文件,得到实时日志文件;

将所述实时日志文件保存在日志缓存中。

在一种可能的实施方式中,在从所述读起点对所述双机服务器的主机的日志文件进行解析之前,所述解析模块还被配置为:

判断所述日志文件是否连续;

若确定所述日志文件是连续的,从所述读起点对日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列。

第三方面,本申请提供一种电子设备,包括:

存储器,用于存储处理器的可执行指令;

处理器,用于执行所述可执行指令,以实现如上述第一方面中任一项所述的数据恢复方法。

第四方面,本申请提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上述第一方面中任一项所述的数据恢复方法。

第五方面,本申请提供一种计算机程序产品,包括计算机程序:

所述计算机程序被处理器执行时实现如上述第一方面中任一项所述的数据恢复方法。

本申请的实施例提供的技术方案至少带来以下有益效果:

本申请实施例中,通过回放偏移记录文件及回放偏移记录缓存,对中断的恢复过程进行记录,能够在回放中断时记录回放历史偏移量,使得备机继续回放时可以从历史偏移量处开始回放日志文件,避免了重复回放部分日志文件,提高了效率并节省了时间,还在备机正在恢复日志文件时,将主机的实时日志文件写入到日志缓存中,待备机恢复完日志文件后解析日志缓存中的实时日志文件,对其进行恢复,保证了双机服务器中主备数据库中的数据一致。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的数据恢复方法的整体流程示意图;

图2为本申请实施例提供的偏移量记录缓存的示意图;

图3为本申请实施例提供的偏移量记录文件的示意图;

图4为本申请实施例提供的步骤102的流程示意图;

图5为本申请实施例提供的实时日志文件的获取过程的流程示意图;

图6为本申请实施例提供的电子设备的结构示意图;

图7为本申请实施例提供的数据恢复装置的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。其中,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

并且,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。

以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。

1.数据库一致性:

数据库一致性(Database Consistency)是指事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。保证数据库一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。

2.多线程恢复:

使用多线程对日志记录进行回放,增加并发度,加快恢复速度。

相关技术中,在安防场景下,需要将主机数据库的内容同步到备机服务器上,等主备数据库完全一致后才能让备机上线,并能够在主机下线后能对外提供服务,保证数据一致性,这就要求主机尽可能快地向备机同步差异化数据。目前较为通用的技术方案为在备机上线后通过单线程解析日志,多线程恢复日志,再将日志数据插入到数据库中。

然而,如果备机在恢复时遇到断电等异常场景,会导致恢复执行到一半就被停止,再次重启服务器如果继续从头恢复不仅会消耗大量时间,而且会有可能导致主备数据库不一致的现象。

有鉴于此,本申请提供了一种数据恢复方法、装置和设备,用以解决相关技术中备机在恢复时遇到断电等异常场景导致主备数据库不一致。

本申请的发明构思可概括为:在对双机服务器的主机的日志文件进行日志回放过程中,针对每个回放线程,根据偏移量记录缓存和偏移量记录文件,确定与回放线程对应的回放线程处理记录的历史偏移量,然后根据各个回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点,再从该读起点对双机服务器的主机的日志文件进行解析,将解析后的日志文件插入到与回放线程对应的回放队列,确定完成对日志文件的解析后,对日志缓存中的实时日志文件进行解析,并将解析后的实时日志文件插入到与回放线程对应的回放队列,若确定所有回放队列均为空,则向备机发送重新上线运行指令。本申请实施例通过回放偏移记录文件及回放偏移记录缓存,对中断的恢复过程进行记录,能够在回放中断时记录回放历史偏移量,使得备机继续回放时可以从历史偏移量处开始回放日志文件,避免了重复回放部分日志文件,提高了效率并节省了时间,还在备机正在恢复日志文件时,将主机的实时日志文件写入到日志缓存中,待备机恢复完日志文件后解析日志缓存中的实时日志文件,对其进行恢复,保证了双机服务器中主备数据库中的数据一致。

在介绍完本申请实施例的主要发明思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。

为了便于理解本申请实施例提供的数据恢复方法,下面结合附图对此进行进一步说明。

在一种可能的实施方式中,本申请提供一种数据恢复方法,应用于双机服务器中的主机,其整体流程图如图1所示,包括以下内容:

在步骤101中,在对日志文件进行日志回放过程中,针对每个回放线程,根据偏移量记录缓存和偏移量记录文件,确定与回放线程对应的回放线程处理记录的历史偏移量。

在步骤102中,根据各个回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点。

在步骤103中,从读起点对日志文件进行解析,将解析后的日志文件插入到与回放线程对应的回放队列。

在步骤104中,确定完成对日志文件的解析后,对日志缓存中的实时日志文件进行解析,并将解析后的实时日志文件插入到与回放线程对应的回放队列,其中,回放队列用于将回放队列中的文件发送至双机服务器的备机。

需要说明的是,双机服务器中主机与备机是可以相互转换的。例如,备机在恢复时遇到断电等异常场景下,则主机执行上述步骤101~步骤104,在该双机服务器中完成上线后,原先的主机遇到断电等异常场景下,则此时由原先的备机执行上述步骤101~步骤104,以完成数据的同步,在这种情况下,主机与备机完成了互换。

在步骤105中,若确定所有回放队列均为空,则向备机发送重新上线运行指令。

在一种可能的实施方式中,步骤101中,根据偏移量记录缓存和偏移量记录文件,确定每一个回放线程处理记录的历史偏移量,可实施为:

对比偏移量记录缓存中的第一偏移量和偏移量记录文件中的第二偏移量,将对应同一个回放线程处理记录的偏移量中的较小值作为当前回放线程处理记录的历史偏移量,其中,偏移量记录缓存用于记录每一个回放线程处理记录对应的第一偏移量,偏移量记录文件用于周期记录每一个回放线程处理记录对应的第二偏移量。

在一种可能的实施方式中,为了记录回放线程的状态,需要记录每一回放线程处理记录所处的偏移量,以便于回放中断后,重新回放时能够继续从上次未完成的记录处开始处理,避免日志多次回放导致的主备数据库不一致。本申请实施例中,偏移量文件包含两种格式的文件,分别为偏移量记录文件和偏移量记录缓存,具体内容如下:

(1)偏移量记录缓存用于实时记录每一个回放线程处理记录的偏移值,即第一偏移量,该文件由于写入频繁,因此,本申请只将该偏移量记录缓存写入内存文件。

偏移量记录缓存的格式如图2所示,包括以下内容:uint64的偏移量以及uint32的校验值,其中,每一行大小为页大小,总共64行,能够记录64个线程的偏移量地址。

(2)偏移量记录文件为冗余文件,包含两个文件:recovery_file.idx1和recovery_file.idx2文件,用于周期记录每一个回放线程处理记录的偏移量(周期可配置),即第二偏移量。这两个文件同步写入,使得文件的内容完全一致,可以保证写文件异常时总有一个文件是完整的,只有在两个文件都失败的情况下才判定为失败,即使只有一个文件写入成功都认定为成功。

偏移量记录文件的格式如图3所示,包括以下内容:

UID:uint64类型,从1开始累加,每次写文件都会加1,在上述recovery_file.idx1和recovery_file.idx2文件中,在校验正确的情况下,以UID大的文件为准,否则以校验正确的文件为准。

Size:总的偏移量个数,目前默认64个,即64个线程的偏移量。

Offset1,offset2……offset64:每个回放线程的偏移量,最高位表示该偏移量处的记录是否已被回放,剩下63位偏移量。

edianType:大小端类型,0表示小端,1表示大端。

ChkSum:以上所有内容的校验和。

例如,对于一个回放线程对应的回放线程处理记录的第一偏移量为15,第二偏移量为20,本申请实施例将对应同一个回放线程处理记录的偏移量中的较大值作为当前回放线程处理记录的历史偏移量,即将第二偏移量作为历史偏移量,避免了回放线程对部分日志文件的遗漏导致主备服务器的数据不一致。

在一种可能的实施方式中,确定历史偏移量之后,在步骤102中,根据各个回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点,其流程示意图如图4所示,包括以下内容:

在步骤401中,根据偏移量记录文件的最高位,确定对应偏移量记录文件的回放线程是否完成前一次回放任务。

在步骤402中,若确定任一回放线程未完成前一次回放任务,将所有未完成前一次回放任务的回放线程对应的回放线程处理记录的历史偏移量中的最小值,作为解析线程的读起点。

例如,需要恢复的文件为200个,本申请实施例将该需要恢复的文件分给10个回放线程进行回放,则每一个回放线程需要恢复的文件为20个,编号为1~200,在第一个回放线程完成前一次回放任务时,表明第一个回放线程需要恢复的文件已经完成了备份,因此本申请实施例不再对该部分文件进行回放。若第一个回放线程以及第二个回放线程未完成前一次回放任务,对应的历史偏移量为12和25,历史偏移量即为回放中断时文件的编号,该历史偏移量表明文件13~20未完成回放任务,为了避免数据恢复过程中部分文件的遗漏,本申请实施例将12作为解析线程的读起点,保证了双机服务器中主备数据库中的数据一致。

在一种可能的实施方式中,为了让备机尽快上线,本申请在备机对实时日志文件进行恢复阶段还对回放队列的长度进行了动态调整,防止实时日志文件量过大导致备机无法上线的情况出现,即将日志缓存中的实时日志文件分别插入到对应的回放队列之前,本申请实施例将设置回放队列的最大记录个数以及中等记录个数,其中,中等记录个数为最大记录个数的预设百分比。具体可实施为:

若确定回放队列已经填满,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,更新回放队列的最大记录个数和中等记录个数,得到回放队列的新最大记录个数以及新中等记录个数;

若确定更新完成后的新最大记录个数小于队列中的当前记录个数,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,再次更新回放队列的新最大记录个数和新中等记录个数,直到回放队列均为空。

例如,设置队列最大记录个数,以及中等记录个数,中等记录个数=最大记录个数*2/3。比如队列最大记录个数为200,则中等记录个数为133。

当发现回放队列中的日志文件均已被处理完,将解析后得到的日志缓存中的实施日志文件插入到队列中,如果确定回放队列已经填满,插入不成功,间隔预设时间周期,如10毫秒,插入成功后开始调整队列得最大记录个数和中等记录个数,具体调整方法如下:

确定回放队列的当前最大记录个数和当前队列记录个数,将当前最大记录个数与当前队列记录个数的差值的预设比例,与当前队列记录个数进行相加处理,得到回放队列的新最大记录个数。可实施为如下公式:

新最大记录个数=(原最大记录个数–当前队列记录个数)/2+当前队列记录个数。

新中等记录个数=新最大记录个数*2/3。

在插入成功时,即说明回放队列并未填满,此时对应的原最大记录个数为200,当前队列记录个数为195,根据上述公式,得到新最大记录个数为198以及新中等记录个数为132。

若确定更新完成后的新最大记录个数小于队列中的当前记录个数,如当前队列记录个数为195,新最大记录个数为198,新中等记录个数为132,但是回放队列还未完成对日志文件的处理的情况下,却收到来自解析线程的文件,使得当前队列记录个数为200,导致更新完成后的新最大记录个数小于队列中的当前记录个数,本申请实施例将间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,再次根据上述公式更新回放队列的新最大记录个数和新中等记录个数,直到回放队列均为空。依此类推,回放队列的最大记录个数不断减小,使得回放队列处理日志文件的速度变快,减少了备机上线的时间,从而加快备机上线。

在一种可能的实施方式中,实时日志文件的获取过程如图5所示,包括以下内容:

在步骤501中,若确定偏移量记录文件中记录的偏移量为0,并确定双机服务器中存在旧日志文件,直接在旧日志文件之后写入新日志文件,得到实时日志文件。

在步骤502中,若确定偏移量记录文件中记录的偏移量不为0,并确定双机服务器中存在旧日志文件,在旧日志文件中偏移量位置处写入新日志文件,得到实时日志文件。

在步骤503中,将实时日志文件保存在日志缓存中。

上述步骤将实时日志文件按照顺序进行写入,保证了实时日志文件的连续性,避免了实时日志文件的错乱。

在一种可能的实施方式中,在从读起点对所述双机服务器的主机的日志文件进行解析之前,本申请实施例将判断日志文件是否连续,若确定日志文件是连续的,从读起点对日志文件进行解析,将解析后的日志文件插入到与回放线程对应的回放队列。通过上述验证文件连续性的步骤,保证了日志文件的完整性,并将不完整的日志文件排除在外,减少对服务器空间的占用,以及减少了时间的浪费。

综上所述,本申请实施例通过回放偏移记录文件及回放偏移记录缓存,对中断的恢复过程进行记录,能够在回放中断时记录回放历史偏移量,使得备机继续回放时可以从历史偏移量处开始回放日志文件,避免了重复回放部分日志文件,提高了效率并节省了时间,还在备机正在恢复日志文件时,将主机的实时日志文件写入到日志缓存中,待备机恢复完日志文件后解析日志缓存中的实时日志文件,对其进行恢复,保证了双机服务器中主备数据库中的数据一致,通过动态调整回放队列的长度,动态缩小回放队列长度,使得备机能够快速消费日志文件,加快备机上线速度。

基于相同的发明构思,本申请实施例还提供一种数据恢复装置,如图6所示,应用于双机服务器中的主机,所述装置600包括:

历史偏移量确定模块601,被配置为在对日志文件进行日志回放过程中,针对每个回放线程,根据偏移量记录缓存和偏移量记录文件,确定与所述回放线程对应的回放线程处理记录的历史偏移量;

读起点确定模块602,被配置为根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点;

解析模块603,被配置为从所述读起点对所述日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列;

实时日志文件解析模块604,被配置为确定完成对日志文件的解析后,对日志缓存中的实时日志文件进行解析,并将解析后的实时日志文件插入到与所述回放线程对应的回放队列,其中,所述回放队列用于将所述回放队列中的文件发送至所述双机服务器的备机;

上线运行指令发送模块605,被配置为若确定所有回放队列均为空,则向所述备机发送重新上线运行指令。

在一种可能的实施方式中,执行将日志缓存中的实时日志文件分别插入到对应的回放队列之前,所述解析模块还被配置为:

设置所述回放队列的最大记录个数以及中等记录个数,所述中等记录个数为所述最大记录个数的预设百分比。

在一种可能的实施方式中,执行所述设置回放队列的最大记录个数以及中等记录个数,所述解析模块还被配置为:

若确定所述回放队列已经填满,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,更新所述回放队列的最大记录个数和中等记录个数,得到所述回放队列的新最大记录个数以及新中等记录个数;

若确定更新完成后的新最大记录个数小于队列中的当前记录个数,间隔预设时间周期,确定将日志缓存中的实时日志文件插入到对应的回放队列成功后,再次更新所述回放队列的新最大记录个数和新中等记录个数,直到回放队列均为空。

在一种可能的实施方式中,执行所述更新所述回放队列的最大记录个数和中等记录个数,或者,所述更新所述回放队列的新最大记录个数和新中等记录个数,所述解析模块被配置为:

确定所述回放队列的当前最大记录个数和当前队列记录个数,将所述当前最大记录个数与所述当前队列记录个数的差值的预设比例,与所述当前队列记录个数进行相加处理,得到所述回放队列的新最大记录个数。

在一种可能的实施方式中,执行所述根据偏移量记录缓存和偏移量记录文件,确定每一个回放线程处理记录的历史偏移量,所述历史偏移量确定模块被配置为:

对比所述偏移量记录缓存中的第一偏移量和偏移量记录文件中的第二偏移量,将对应同一个回放线程处理记录的偏移量中的较大值作为当前回放线程处理记录的历史偏移量,其中,所述偏移量记录缓存用于记录每一个回放线程处理记录对应的第一偏移量,所述偏移量记录文件用于周期记录每一个回放线程处理记录对应的第二偏移量。

在一种可能的实施方式中,执行所述根据各个所述回放线程对应的回放线程处理记录的历史偏移量,确定解析线程的读起点,所述读起点确定模块被配置为:

根据所述偏移量记录文件的最高位,确定对应所述偏移量记录文件的所述回放线程是否完成前一次回放任务;

若确定任一回放线程未完成前一次回放任务,将所有未完成前一次回放任务的所述回放线程对应的回放线程处理记录的历史偏移量中的最小值,作为解析线程的读起点。

在一种可能的实施方式中,所述装置还包括:

若确定偏移量记录文件中记录的偏移量为0,并确定所述双机服务器中存在旧日志文件,直接在所述旧日志文件之后写入新日志文件,得到实时日志文件;

若确定偏移量记录文件中记录的偏移量不为0,并确定所述双机服务器中存在旧日志文件,在所述旧日志文件中偏移量位置处写入新日志文件,得到实时日志文件;

将所述实时日志文件保存在日志缓存中。

在一种可能的实施方式中,在从所述读起点对所述双机服务器的主机的日志文件进行解析之前,所述解析模块还被配置为:

判断所述日志文件是否连续;

若确定所述日志文件是连续的,从所述读起点对日志文件进行解析,将解析后的日志文件插入到与所述回放线程对应的回放队列。

下面参照图7来描述根据本申请的这种实施方式的电子设备130。图7显示的电子设备130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图7所示,电子设备130以通用电子设备的形式表现。电子设备130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。

总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。

存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。

存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

电子设备130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备130交互的设备通信,和/或与使得该电子设备130能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,电子设备130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于电子设备130的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

在示例性实施例中,本申请还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器132,上述指令可由电子设备130的处理器131执行以完成上述数据恢复方法。可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

在示例性实施例中,还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器131执行时实现如本申请提供的数据恢复方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120115915801