一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据恢复方法和装置、电子设备和存储介质与流程

2021-12-07 21:09:00 来源:中国专利 TAG:


1.本技术涉及数据库技术领域,尤其涉及一种数据恢复方法和装置、电子设备和存储介质。


背景技术:

2.mysql数据库在使用过程中,会频繁的对其中的数据进行修改,因此,难以避免的,修改后的mysql数据库中会出现存在错误数据的情况。
3.在相关技术中,在mysql数据库中存在错误数据,并且需要对错误数据进行恢复的情况下,若mysql数据库中没有数据备份和binlog文件(用于记录mysql数据库中的数据更新或者潜在更新的文件)的时候,无法对mysql数据库进行数据恢复。
4.因此,相关技术中存在当目标数据库在执行异常操作后没有备份,或者目标数据库在执行异常操作后备份文件不可用时,无法对数据库中错误数据进行数据恢复的问题。


技术实现要素:

5.本技术提供了一种数据恢复方法和装置、电子设备和存储介质,以至少解决相关技术中存在当目标数据库在执行异常操作后没有备份,或者目标数据库在执行异常操作后备份文件不可用时,无法对数据库中错误数据进行数据恢复的问题。
6.根据本技术实施例的一个方面,提供了一种数据恢复方法,包括:
7.获取目标数据库的目标重做日志文件,其中,所述目标重做日志文件为在所述目标数据库中执行错误数据变更时产生的日志文件;
8.从所述目标重做日志文件中解析得到目标回滚日志;
9.按照所述目标回滚日志的组成字段,对所述目标回滚日志进行解析,得到回滚日志记录,其中,所述回滚日志记录为用于指示所述目标数据库执行所述错误数据变更前的历史数据状态的信息;
10.根据所述回滚日志记录生成用于对所述目标数据库进行恢复的恢复指令;
11.指示所述目标数据库所在的设备执行所述恢复指令,以将所述目标数据库从执行所述错误数据变更后的状态恢复为所述历史数据状态。
12.可选地,如前述的方法,所述从所述目标重做日志文件中解析得到目标回滚日志包括:
13.在所述目标重做日志文件中确定出至少一个目标回滚日志块,其中,每个所述目标回滚日志块中包括一个所述目标回滚日志;
14.使用第一解析方式对所述目标回滚日志块中所述目标回滚日志所在的日志段进行解析,得到所述目标回滚日志,其中,所述目标回滚日志块中包括多种日志类型的日志,所述多种日志类型包括所述目标回滚日志所属的目标日志类型,所述第一解析方式与所述目标回滚日志所属的日志类型匹配。
15.可选地,如前述的方法,所述使用第一解析方式对所述目标回滚日志块中所述目
标回滚日志所在的日志段进行解析包括:按照如下方式使用多种解析方式分别对所述目标回滚日志块中的当前日志段进行解析,直至解析出所述目标回滚日志,所述当前日志段的起始位置为位于前一次识别成功的日志段之后的第一个位置、或为所述目标回滚日志块的起始位置:
16.在使用所述多种解析方式中的所述第一解析方式在所述当前日志段的起始位置识别出所述目标日志类型的类型起始标识的情况下,继续使用所述第一解析方式在所述目标回滚日志中识别出所述目标日志类型的类型结束标识,并将所述目标日志类型的类型结束标识所在的位置作为所述当前日志段的结束位置,将从所述当前日志段的起始位置至所述当前日志段的结束位置之间解析出来的内容作为所述目标回滚日志;
17.在使用所述多种解析方式中的第二解析方式在所述当前日志段的起始位置识别出第二日志类型的类型起始标识的情况下,继续使用所述第二解析方式在所述目标回滚日志中识别出所述第二日志类型的类型结束标识,并将所述第二日志类型的类型结束标识之后的第一个位置作为下一日志段的起始位置,其中,所述第二解析方式为所述多种解析方式中除所述第一解析方式之外的任一种解析方式。
18.可选地,如前述的方法,所述按照所述目标回滚日志的组成字段,对所述目标回滚日志进行解析,得到回滚日志记录包括:
19.确定所述目标回滚日志的各个所述组成字段之间的次序关系;
20.按照所述次序关系,对所述目标回滚日志进行解析,得到每个所述组成字段的字段值;
21.根据每个所述组成字段的字段值,得到所述回滚日志记录。
22.可选地,如前述的方法,所述根据所述回滚日志记录生成用于对所述目标数据库进行恢复的恢复指令包括:
23.通过所述回滚日志记录确定历史数据的历史主键值,所述历史数据的历史组成字段的历史字段名以及历史字段值,其中,所述历史数据为执行所述错误数据变更前的所述目标数据库中,执行所述错误数据变更数据,所述历史组成字段为所述历史数据中,通过所述错误数据变更之后,字段值被修改的字段;
24.将所述历史主键值写入恢复语句模板中用于写入待修改数据的主键值的写入位置内,将所述历史字段名写入恢复语句模板中用于写入待修改字段的字段名的写入位置内,以及将所述历史字段值写入所述恢复语句模板中用于写入所述待修改字段的字段值的写入位置内,得到所述恢复指令。
25.可选地,如前述的方法,所述指示所述目标数据库所在的设备执行所述恢复指令,以将所述目标数据库从执行所述错误数据变更后的状态恢复为所述历史数据状态包括:
26.指示所述设备根据所述恢复指令中的所述历史主键值,在所述目标数据库中定位到目标数据,其中,所述目标数据为所述历史数据通过所述错误数据变更后的数据;
27.指示所述设备根据所述恢复指令中的所述历史字段名,在所述目标数据中定位到通过所述错误数据变更的目标字段;
28.指示所述设备通过所述历史字段值对所述目标字段中的当前值进行修改,以将所述目标数据库恢复为所述历史数据状态。
29.可选地,如前述的方法,在所述获取目标数据库的目标重做日志文件之前,所述方
法还包括:
30.获取所述目标数据库在历史时间执行的目标数据变更;
31.在确定所述目标数据变更不符合预设变更要求的情况下,将所述目标数据变更确定为所述错误数据变更。
32.可选地,如前述的方法,在确定目标数据变更不符合预设变更要求的情况下,将目标数据变更确定为错误数据变更之后,所述方法还包括:
33.确定所述目标数据库对应的目标业务方,其中,所述目标业务方为能够对所述目标数据库进行操作的业务方;
34.中断所述目标业务方对所述目标数据库进行的操作。
35.根据本技术实施例的另一个方面,还提供了一种数据恢复装置,包括:
36.获取模块,用于获取目标数据库的目标重做日志文件,其中,所述目标重做日志文件为在所述目标数据库中执行错误数据变更时产生的日志文件;
37.第一解析模块,用于从所述目标重做日志文件中解析得到目标回滚日志;
38.第二解析模块,用于按照所述目标回滚日志的组成字段,对所述目标回滚日志进行解析,得到回滚日志记录,其中,所述回滚日志记录为用于指示所述目标数据库执行所述错误数据变更前的历史数据状态的信息;
39.恢复指令模块,用于根据所述回滚日志记录生成用于对所述目标数据库进行恢复的恢复指令;
40.数据库恢复模块,用于指示所述目标数据库所在的设备执行所述恢复指令,以将所述目标数据库从执行所述错误数据变更后的状态恢复为所述历史数据状态。
41.根据本技术实施例的又一个方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;其中,存储器,用于存储计算机程序;处理器,用于通过运行所述存储器上所存储的所述计算机程序来执行上述任一实施例中的方法步骤。
42.根据本技术实施例的又一个方面,还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一实施例中的方法步骤。
43.在本技术实施例中,采用对目标数据库的目标重做日志文件进行解析的方式,通过目标数据库的目标重做日志文件解析得到对应的回滚日志记录,由于回滚日志记录为用于指示所述目标数据库执行所述错误数据变更前的历史数据状态的信息,从而可以实现根据回滚日志记录将该目标数据库恢复至目标重做日志文件中的目标回滚日志对应的历史数据状态的目的,达到了提供一种新的对数据库进行恢复的实现方式的技术效果,进而解决了相关技术中存在的在目标数据库在执行异常操作后没有备份,或者目标数据库在执行异常操作后备份文件不可用的情况下,无法对目标数据库进行恢复的问题。
附图说明
44.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
45.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
46.图1是根据本技术实施例的一种可选的数据恢复方法的硬件环境的示意图;
47.图2是根据本技术实施例的一种可选的数据恢复法的流程示意图;
48.图3是根据本技术实施例的一种可选的数据恢复装置的结构框图;
49.图4是根据本技术实施例的一种可选的电子设备的结构框图。
具体实施方式
50.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
51.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
52.根据本技术实施例的一个方面,提供了一种数据恢复方法。可选地,在本实施例中,上述数据恢复方法可以应用于由终端和服务器所构成的硬件环境中。服务器通过网络与终端进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器提供数据存储服务。
53.上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:wifi(wireless fidelity,无线保真),蓝牙。终端可以并不限定于为pc、手机、平板电脑等。
54.本技术实施例的数据恢复方法可以由服务器来执行,也可以由终端来执行,还可以是由服务器和终端共同执行。其中,终端执行本技术实施例的数据恢复方法也可以是由安装在其上的客户端来执行。
55.以由服务器来执行本实施例中的数据恢复方法为例,图1是根据本技术实施例的一种可选的数据恢复方法的流程示意图,如图1所示,该方法的流程可以包括以下步骤:
56.步骤s101,获取目标数据库的目标重做日志文件,其中,目标重做日志文件为在目标数据库中执行错误数据变更时产生的日志文件。
57.本实施例中的数据恢复方法可以应用于需要在对指定的数据库进行数据恢复的场景,例如:在目标数据库在执行异常操作后没有备份的场景,或者目标数据库在执行异常操作后备份文件不可用的场景下对目标数据库进行数据恢复的场景等,也可以是对其他场景下的数据库进行数据恢复的场景。本技术实施例中以目标数据库在执行异常操作后没有
备份或者备份为例说明上述的数据恢复方法,对于其他类型的执行错误数据变更的目标数据库,在不矛盾的情况下,上述的数据恢复方法同样适用。
58.以在目标数据库在无法启动或者异常操作后没有备份文件的场景为例,通过对目标数据库进行数据恢复,以将目标数据库恢复为执行错误数据变更之前的历史数据状态。
59.目标数据库可以是进行数据变更的数据库,并且,目标数据库在进行数据变更之后会产生目标重做日志文件。
60.进一步的,目标重做日志文件可以是目标数据库中执行错误数据变更时产生的日志文件。
61.错误数据变更可以包括但不限于在目标数据库中写入了错误数据或进行了错误的数据删除等变更操作。
62.例如,目标数据库对应的业务方在对目标数据库进行误操作(如,写入了错误的数据)之后,导致目标数据库中执行了错误数据变更,因此,便会产生与目标数据库执行的错误数据变更对应的目标重做日志文件,如redo log file文件。
63.步骤s102,从目标重做日志文件中解析得到目标回滚日志。
64.在获取目标重做日志文件之后,即可在重做日志文件中解析得到目标回滚日志。
65.在目标数据库执行错误数据变更之前,目标数据库可以已经执行多次数据变更,并且在其中至少一个数据变更对应的目标回滚日志未进行删除的情况下,可以在目标重做日志文件中解析得到至少一个目标回滚日志。因此,解析得到的目标回滚日志可以包括一个或多个。
66.步骤s103,按照目标回滚日志的组成字段,对目标回滚日志进行解析,得到回滚日志记录,其中,回滚日志记录为用于指示目标数据库执行错误数据变更前的历史数据状态的信息。
67.在得到目标重做日志的所有目标回滚日志之后,即可对每个目标回滚日志进行解析,以得到每个目标回滚日志中的回滚日志记录。
68.在得到目标回滚日志的情况下,通过目标回滚日志的组成字段,可以确定目标回滚日志的结构,并且可以确定每个组成字段指代参数类型,因此,按照目标回滚日志的组成字段,对目标回滚日志进行解析,得到回滚日志记录。
69.回滚日志记录可以是用于指示目标数据库执行错误数据变更前的历史数据状态的信息,历史数据状态可以包括但不限于:错误数据变更对应的变更位置,以及变更前的参数值。例如,当错误数据变更将主键x和更新列y的值对应的值从空值(即,null)变更为了“xxx”;则回滚日志记录中可以包括主键x和更新列y对应的值为空值(即,null)。
70.步骤s104,根据回滚日志记录生成用于对目标数据库进行恢复的恢复指令。
71.在获取回滚日志记录之后,即可根据回滚日志记录生成用于对目标数据库进行恢复的恢复指令。
72.恢复指令可以是用于将目标数据库从执行错误数据变更后的状态恢复为历史数据状态的指令。因此恢复指令可以包括需要进行恢复的位置信息以及值(可以是空值)。
73.在目标回滚日志存在多个的情况下,由于每个目标回滚日志中都包括一个回滚日志记录,不同的回滚日志记录用于指示目标数据库不同的历史数据状态;例如,当存在三个回滚日志记录(a、b、c)时,a对应于目标数据库执行错误数据变更前3分钟的历史数据状态,
b对应于目标数据库执行错误数据变更前2分钟的历史数据状态,c对应于目标数据库执行错误数据变更前1分钟的历史数据状态。因此,根据a、b、c可以分别生成对应恢复指令a、b、c。
74.例如,在前述示例的基础上,当回滚日志记录中可以包括主键x和更新列y对应的值为空值(即,null)的情况下,根据该回滚日志记录生成的恢复指令q可以是用于指示将主键x和更新列y的值修改为空值的指令。
75.步骤s105,指示目标数据库所在的设备执行恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为历史数据状态。
76.在生成恢复指令之后,即可指示目标数据库所在的设备执行恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为历史数据状态
77.目标数据库所在的设备可以是目标数据库对应的计算设备,也可以是用于对目标数据库中的数据进行修改的计算设备。
78.在恢复指令包括一个时,可以指示目标数据库所在的设备执行该唯一的恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为该恢复指令对应的历史数据状态。
79.在恢复指令包括多个的情况下,指示目标数据库所在的设备执行目标恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为目标历史数据状态,其中,目标恢复指令为用于对目标数据库进行恢复的恢复指令,目标历史数据状态为目标恢复指令对应的回滚日志记录所指示的目标数据库的历史数据状态。即,可以指示目标数据库所在的设备先从该多个恢复指令中确定出用于进行恢复的目标恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为目标恢复指令对应的历史数据状态。
80.例如,在只存在前述的恢复指令q,且目标数据库对应的业务方在确定通过该恢复指令q对目标数据库进行恢复的情况下,可以通过预设操作(例如,点击“确认恢复至该状态”)触发恢复指令q执行,以指示目标数据库所在的设备执行恢复指令q,将目标数据库从执行错误数据变更后的状态恢复为主键x和更新列y对应的值为空值(即,null)的历史数据状态。
81.通过本实施例中的方法,可以在目标数据库在执行异常操作后没有备份,或者目标数据库在执行异常操作后备份文件不可用的情况下,通过目标数据库的目标重做日志文件将该目标数据库恢复至目标重做日志文件中的目标回滚日志对应的历史数据状态,进而达到将目标数据库中的错误数据状态恢复为正确数据状态的目的,提供了一种新的对数据库进行恢复的实现方式。
82.作为一种可选的实施方式,如前述的方法,所述步骤s102从目标重做日志文件中解析得到目标回滚日志包括如下所述步骤:
83.步骤s201,在目标重做日志文件中确定出至少一个目标回滚日志块,其中,每个目标回滚日志块中包括一个目标回滚日志。
84.由于在每对目标数据库进行一次数据更新,目标重做日志文件中都会产生一个与数据更新对应的最新的目标回滚日志块(即,redo block),并且目标重做日志文件中至少会保留最新的目标回滚日志块;因此,在获取目标数据库的目标重做日志文件之后,即可对目标重做日志文件进行解析(例如,按照日志块名称等等)得到至少一个目标回滚日志块,
并且,每个目标回滚日志块中包括一个目标回滚日志(即,mlog_undo_insert)。
85.步骤s202,使用第一解析方式对目标回滚日志块中目标回滚日志所在的日志段进行解析,得到目标回滚日志,其中,目标回滚日志块中包括多种日志类型的日志,多种日志类型包括目标回滚日志所属的目标日志类型,第一解析方式与目标回滚日志所属的日志类型匹配。
86.一个目标回滚日志块中可以包括若干个不同类型的日志段,可选地,当解析到名称为mlog_undo_insert的日志段时,即可认定为解析到目标回滚日志。
87.目标回滚日志为包含在目标回滚日志块中的一个记录,目标回滚日志块中包括多种日志类型的日志,多种日志类型包括目标回滚日志所属的目标日志类型,因此,需要在目标回滚日志块对应的所有解析方式中,确定出与目标回滚日志所属的日志类型匹配的第一解析方式。
88.在确定出与目标回滚日志对应的第一解析方式之后,即可使用第一解析方式对目标回滚日志块中目标回滚日志所在的日志段进行解析,得到目标回滚日志。
89.例如,redo block(即,目标回滚日志块)中的每个redo记录(即,日志)占用多少空间是不确定的,因此,可以通过目标回滚日志块对应的所有解析方式把redo block中每个redo记录解析出来,直到通过第一解析方式对目标回滚日志所在的日志段进行解析后得到目标回滚日志,还可以是通过第一解析方式从目标回滚日志块的第一个位置开始解析,当无法解析时,则跳过无法进行解析的位置,并从下一位置开始解析,直到通过第一解析方式对目标回滚日志所在的日志段进行解析后得到目标回滚日志。
90.当存在多个目标回滚日志块的情况下,可以通过本实施例中的方法分别在每个目标回滚日志块中解析得到目标回滚日志。
91.通过本实施例中的方法,可以达到在目标重做日志文件中解析得到目标回滚日志的目的,以便于后期根据目标回滚日志对目标数据库进行恢复。
92.如图2所示,作为一种可选的实施方式,如前述的方法,所述步骤s201使用第一解析方式对目标回滚日志块中目标回滚日志所在的日志段进行解析,得到目标回滚日志包括如下所述步骤:按照如下方式使用多种解析方式分别对目标回滚日志块中的当前日志段进行解析,直至解析出目标回滚日志,当前日志段的起始位置为位于前一次识别成功的日志段之后的第一个位置、或为目标回滚日志块的起始位置:
93.步骤s301,在使用多种解析方式中的第一解析方式在当前日志段的起始位置识别出目标日志类型的类型起始标识的情况下,继续使用第一解析方式在目标回滚日志中识别出目标日志类型的类型结束标识,并将目标日志类型的类型结束标识所在的位置作为当前日志段的结束位置,将从当前日志段的起始位置至当前日志段的结束位置之间解析出来的内容作为目标回滚日志。
94.在确定出目标回滚日志之后,即可通过第一解析方式对目标回滚日志进行解析,以得到目标回滚日志,由于无法确定目标回滚日志块中的各个日志占用的空间,因此,无法确定每个日志在目标回滚日志块中的日志段,因此可以通过各个解析方式循环对目标回滚日志块进行解析,直至通过第一解析方式在目标回滚日志块中解析出目标回滚日志。
95.当已使用其中n种解析方式解析出对应的n个日志的情况下,当前日志段为目标回滚日志块中除了n个日志的日志段之外的其他日志段,即,当前日志段的起始位置为位于前
filed对应的信息查询到该位置被进行错误数据变更前的数据,以得到被进行错误数据变更前的数据。
111.通过本实施例中的方法,可以快速根据目标回滚日志解析得到回滚日志记录,以达到获取目标数据库被进行错误数据变更前的数据的目的。
112.作为一种可选的实施方式,如前述的方法,所述步骤s104根据回滚日志记录生成用于对目标数据库进行恢复的恢复指令包括如下所述步骤:
113.步骤s501,通过回滚日志记录确定历史数据的历史主键值,历史数据的历史组成字段的历史字段名以及历史字段值,其中,历史数据为执行错误数据变更前的目标数据库中,执行错误数据变更的数据,历史组成字段为历史数据中,通过错误数据变更之后,字段值被修改的字段。
114.在获取回滚日志记录之后,即可根据回滚日志记录确定出历史数据的历史主键值,历史数据的历史组成字段的历史字段名以及历史字段值。
115.历史主键值可以是用于指示被执行错误数据变更的数据的历史主键的序号。并且,历史主键值与通过错误数据变更后的数据的主键值一致。
116.历史字段名可以是用于指示历史主键对应的数据中,被进行错误数据变更的字段的字段名,可以通过字段对应的参数类型进行表征(例如,addr(地址))等等。
117.历史字段值可以是历史字段名对应的字段在错误数据变更前的值。
118.步骤s502,将历史主键值写入恢复语句模板中用于写入待修改数据的主键值的写入位置内,将历史字段名写入恢复语句模板中用于写入待修改字段的字段名的写入位置内,以及将历史字段值写入恢复语句模板中用于写入待修改字段的字段值的写入位置内,得到恢复指令。
119.在获取历史主键值之后,可以将历史主键值写入恢复语句模板中用于写入待修改数据的主键值的写入位置内;在获取历史字段名之后,可以将历史字段名写入恢复语句模板中用于写入待修改字段的字段名的写入位置内;在获取历史字段值之后,可以将历史字段值写入恢复语句模板中用于写入待修改字段的字段值的写入位置内,得到恢复指令。
120.恢复语句模板可以是预先设定的用于写入恢复信息(即,历史主键值、历史字段名、历史字段值等等),以用于生成对应的恢复指令的模板。
121.例如,update`type_test`.`test5`set`历史字段名`=历史字段值where`id`='历史主键值';
122.当历史主键值为18、历史字段名为addr、历史字段值为null时,生成的恢复指令为:update`type_test`.`test5`set`addr`=null where`id`='18';
123.当历史主键值为19、历史字段名为addr、历史字段值为yyy时,生成的恢复指令为:update`type_test`.`test5`set`addr`=yyy where`id`='19'。
124.通过本实施例中的方法,可以自动构造得到用于对目标数据库进行恢复的恢复指令,以便于之后能够自动按照恢复指令对目标数据库恢复至错误数据变更前的历史数据状态。
125.作为一种可选的实施方式,如前述的方法,所述步骤s105指示目标数据库所在的设备执行恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为历史数据状态包括如下所述步骤:
126.步骤s601,指示设备根据恢复指令中的历史主键值,在目标数据库中定位到目标数据,其中,目标数据为历史数据通过错误数据变更后的数据。
127.步骤s602,指示设备根据恢复指令中的历史字段名,在目标数据中定位到通过错误数据变更的目标字段。
128.步骤s603,指示设备通过历史字段值对目标字段中的当前值进行修改,以将目标数据库恢复为历史数据状态。
129.在生成恢复指令之后,即可根据恢复指令对目标数据库进行数据修改。
130.目标数据库所在的设备在接收得到恢复指令之后,由于历史数据与通过错误数据变更后的目标数据的主键值一致,因此可根据解析到的恢复指令中的历史主键值,在目标数据库中定位到目标数据。
131.在定位到目标数据之后,由于历史数据与通过错误数据变更后的目标数据的字段名一致,因此,在根据解析到的回复指令中的历史字段名之后,即可在目标数据中定位到通过错误数据变更的目标字段。
132.在定位到目标数据中的目标字段之后,即可根据历史字段值对目标字段中的当前值进行修改,进而达到将目标数据库恢复为历史数据状态的目的。
133.通过本实施例中的方法,可以通过恢复指令自动完成将目标数据库恢复为历史数据状态,进而可以有效提高数据库恢复的效率,降低数据库维护人员的工作量。
134.作为一种可选的实施方式,如前述的方法,在所述步骤s101获取目标数据库的目标重做日志文件之前,方法还包括如下所述步骤:
135.步骤s701,获取目标数据库在历史时间执行的目标数据变更。
136.在目标数据库在历史时间执行了目标数据变更之后,可以通过对目标数据库进行监听的方式获取该目标数据变更。
137.历史时间可以是在当前时间之前的一个时间点。
138.目标数据变更可以是对数据进行更改、增加、删除等等。
139.步骤s702,在确定目标数据变更不符合预设变更要求的情况下,将目标数据变更确定为错误数据变更。
140.在获取目标数据变更之后,可以通过判断目标数据变更是否符合预设变更要求,判断目标数据变更是否为错误数据变更。
141.预设变更要求可以是用于限定合法数据变更的要求,例如,限定合法的数据类型、合法的变更方式(例如,只能进行增加,进行删除为非法)。
142.例如,在预设变更要求为地址字段的值不能为“xxx”的情况下,若目标数据变更将主键为18的地址字段的值修改为“xxx”的情况下,将该目标数据变更确定为错误数据变更。
143.通过本实施例中的方法,可以自动判断目标数据库是否发生错误数据变更,以提升对目标数据库进行恢复的响应效率。
144.作为一种可选的实施方式,如前述的方法,在所述步骤s702在确定目标数据变更不符合预设变更要求的情况下,将目标数据变更确定为错误数据变更之后,方法还包括如下所述步骤:
145.步骤s801,确定目标数据库对应的目标业务方,其中,目标业务方为能够对目标数据库进行操作的业务方。
146.步骤s802,中断目标业务方对目标数据库进行的操作。
147.在确定目标数据变更确定为错误数据变更之后,可以通过目标数据库对接接口确定出目标数据库对应的业务方。
148.目标业务方为能够对目标数据库进行操作的业务方。
149.在确定目标数据库已发生错误数据变更的情况下,可以通过切换目标业务方对目标数据库进行操作的接口的方式,达到中断目标业务方对目标数据库进行操作的目的。并且在目标数据库恢复至历史数据状态后,重新允许目标业务方对目标数据库进行的操作。
150.通过本实施例中的方法,通过在确定目标数据库已发生错误数据变更的情况下,中断目标业务方对目标数据库进行的操作,可以避免因为目标业务方在错误数据变更后的操作导致目标数据库中的目标回滚日志被清除的问题,导致重做日志文件中的回滚日志只存在错误数据变更后的数据状态对应的信息,进而无法将目标数据库恢复至正常的历史数据状态的问题,可以有效提高对目标数据库进行恢复的成功率。
151.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
152.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom(read

only memory,只读存储器)/ram(random access memory,随机存取存储器)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
153.根据本技术实施例的另一个方面,还提供了一种用于实施上述数据恢复方法的数据恢复装置。图3是根据本技术实施例的一种可选的数据恢复装置的结构框图,如图3所示,该装置可以包括:
154.获取模块1,用于获取目标数据库的目标重做日志文件,其中,目标重做日志文件为在目标数据库中执行错误数据变更时产生的日志文件;
155.第一解析模块2,用于从目标重做日志文件中解析得到目标回滚日志;
156.第二解析模块3,用于按照目标回滚日志的组成字段,对目标回滚日志进行解析,得到回滚日志记录,其中,回滚日志记录为用于指示目标数据库执行错误数据变更前的历史数据状态的信息;
157.恢复指令模块4,用于根据回滚日志记录生成用于对目标数据库进行恢复的恢复指令;
158.数据库恢复模块5,用于指示目标数据库所在的设备执行恢复指令,以将目标数据库从执行错误数据变更后的状态恢复为历史数据状态。
159.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。并且,本发明实施例的装置中各模块实现其功能的具体过
程可参见方法实施例中的相关描述,此处不再赘述。
160.作为一种可选的实施方式,如前述的装置,第一解析模块2包括:
161.确定单元,用于在目标重做日志文件中确定出至少一个目标回滚日志块,其中,每个目标回滚日志块中包括一个目标回滚日志;
162.解析单元,用于使用第一解析方式对目标回滚日志块中目标回滚日志所在的日志段进行解析,得到目标回滚日志,其中,目标回滚日志块中包括多种日志类型的日志,多种日志类型包括目标回滚日志所属的目标日志类型,第一解析方式与目标回滚日志所属的日志类型匹配。
163.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。并且,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
164.作为一种可选的实施方式,如前述的装置,解析单元用于:按照如下方式使用多种解析方式分别对目标回滚日志块中的当前日志段进行解析,直至解析出目标回滚日志,当前日志段的起始位置为位于前一次识别成功的日志段之后的第一个位置、或为目标回滚日志块的起始位置:
165.在使用多种解析方式中的第一解析方式在当前日志段的起始位置识别出目标日志类型的类型起始标识的情况下,继续使用第一解析方式在目标回滚日志中识别出目标日志类型的类型结束标识,并将目标日志类型的类型结束标识所在的位置作为当前日志段的结束位置,将从当前日志段的起始位置至当前日志段的结束位置之间解析出来的内容作为目标回滚日志;
166.在使用多种解析方式中的第二解析方式在当前日志段的起始位置识别出第二日志类型的类型起始标识的情况下,继续使用第二解析方式在目标回滚日志中识别出第二日志类型的类型结束标识,并将第二日志类型的类型结束标识之后的第一个位置作为下一日志段的起始位置,其中,第二解析方式为多种解析方式中除第一解析方式之外的任一种解析方式。
167.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。并且,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
168.作为一种可选的实施方式,如前述的装置,第二解析模块3用于:
169.确定目标回滚日志的各个组成字段之间的次序关系;
170.按照次序关系,对目标回滚日志进行解析,得到每个组成字段的字段值;
171.根据每个组成字段的字段值,得到回滚日志记录。
172.此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。并且,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
173.作为一种可选的实施方式,如前述的装置,恢复指令模块4用于:
174.通过回滚日志记录确定历史数据的历史主键值,历史数据的历史组成字段的历史字段名以及历史字段值,其中,历史数据为执行错误数据变更前的目标数据库中,执行错误数据变更数据,历史组成字段为历史数据中,通过错误数据变更之后,字段值被修改的字
interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
194.通信接口用于上述电子设备与其他设备之间的通信。
195.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non

volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
196.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
197.本技术实施例还提供一种计算机可读存储介质,存储介质包括存储的程序,其中,程序运行时执行上述方法实施例的方法步骤。
198.可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、rom、ram、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
199.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
200.上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。
201.在本技术的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
202.在本技术所提供的几个实施例中,应该理解到,以上所描述的装置实施例仅仅是示意性的,例如所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或模块的间接耦合或通信连接,可以是电性或其它的形式。
203.所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例中所提供的方案的目的。
204.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
205.以上所述仅是本技术的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应
视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献