基于数据库多表间数据一致性的数据恢复方法及装置与流程

专利2022-06-30  54

本发明实施例涉及通信系统
技术领域
:,尤其涉及一种基于数据库多表间数据一致性的数据恢复方法及装置。
背景技术
::随着互联网业务的不断发展,业务越来越复杂,微服务、分布式技术广泛运用到当前的it系统中。在分布式系统中,不同系统一般都有独立的数据库,如何在一个业务流程中,控制各个数据库间数据操作的一致性(即所有数据库要么全部提交成功,要全部不提交)便成为了衡量分布式系统可用性的重要指标。现有技术中,不同厂家实现的方式不尽相同,大多数场景均采用通过数据库自带的恢复技术进行数据回滚技术实现上述场景,如oracle的闪回技术。所谓的闪回技术,是一组独特而丰富的数据恢复解决方案,能够有选择性地高效撤销一个错误的影响,从错误中恢复。以oracle为例,oracle大多数的闪回特性都是在逻辑层面操作的。除了闪回删除(flashdrop,其基于回收站技术),其余闪回技术都是基于undo数据的。oracle闪回技术主要包括:闪回查询:支持指定一个时间,并且查看指定时间的查询结果。闪回版本查询:支持查询某个时间段内一张或多张表的记录的所有版本。闪回事务查询:支持查看某时间段内一个或多个事务所做的改变。闪回事务:可以回退一个事务,oracle会分析指定事务的依赖关系,并生成一个抵消的事务来执行。抵消事务执行成功后,指定回退的事务就像没有发生一样。但是,现有技术中使用的闪回技术,无法实现系统自动恢复,需要通过人工对数据进行分析后,由管理员决定是否执行以及如何执行,对数据恢复的及时率上无法保障。在高并发量的业务系统中,特别是在某一个时刻某个数据库出现异常导致事务提交失败时,采用现有的这种方式进行数据的恢复无法满足实际的业务场景需要,会造成极高的业务风险,并且灵活性也不足。技术实现要素:本发明实施例的目的是提供一种克服上述问题或者至少部分地解决上述问题的基于数据库多表间数据一致性的数据恢复方法及装置。为了解决上述技术问题,一方面,本发明实施例提供一种基于数据库多表间数据一致性的数据恢复方法,包括:获取目标业务的每一业务流程节点对应的数据库操作;将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。另一方面,本发明实施例提供一种基于数据库多表间数据一致性的数据恢复装置,包括:获取模块,用于获取目标业务的每一业务流程节点对应的数据库操作;保存模块,用于将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;恢复模块,用于当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。再一方面,本发明实施例提供一种电子设备,包括:存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述的方法。又一方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,实现上述的方法。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法及装置,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。附图说明图1为本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法示意图;图2为本发明实施例提供的分布式系统示意图;图3为本发明实施例提供的基于数据库多表间数据一致性的数据恢复装置示意图;图4为本发明实施例提供的电子设备的结构示意图。具体实施方式为了使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法示意图,如图1所示,本发明实施例提供一种基于数据库多表间数据一致性的数据恢复方法,其执行主体为基于数据库多表间数据一致性的数据恢复装置,以下简称数据恢复装置,该数据恢复装置可以配置到数据库操作控制系统中,该方法包括:步骤s101、获取目标业务的每一业务流程节点对应的数据库操作;步骤s102、将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;步骤s103、当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。具体来说,图2为本发明实施例提供的分布式系统示意图,如图2所示,分布式系统通过企业服务总线获取业务消息,各应用服务不直接调用数据库接口进行访问,统一调用数据库操作控制系统进行数据库访问,从而保证数据库多表间数据的一致性。分布式系统在接收到业务消息时,需要生成一个任务编号,以及为该业务分配一个业务类型编号,其中,任务编号随机分配,每一个业务消息的唯一标识就是任务编号,针对同一笔业务消息,在不同的分布式系统进行处理时,该任务编号相同;业务类型编号按照系统中配置的业务类型进行分配。当执行数据库操作时,各应用服务不直接调用数据库接口进行访问,统一调用数据库操作控制系统进行数据库访问,调用时需要将任务编号和业务类型编码以及执行的sql语句发送到该数据库操作控制系统。数据库操作控制系统获取目标业务的每一业务流程节点对应的数据库操作。当数据库操作控制系统接收到数据库访问请求时,获取任务编号(例如,no1)和业务类型。如果sql语句是查询语句,则直接调用数据库进行查询即可;如果是操作数据库表中数据的语句,则根据事务控制规则初始化信息结果获取配置信息,该配置信息中包含每一数据库操作对应的数据恢复语句,每一数据库操作对应的数据恢复语句依次保存在目标业务对应的链表中,并在执行该条sql语句前,根据恢复或重做的配置,将数据库提交失败时的处理方式保存到缓存队列中。当业务流程结束时,应用服务向数据库操作控制系统发送服务结束指令。当数据库操作控制系统接收到应用服务发送的服务结束指令时,统一对各个数据库未提交的事务进行统一提交。当系统运行出现异常,事务提交失败时,自动启动恢复流程,按照目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。根据数据库名称,获取数据库提交失败时的处理方式,并根据取值决定是执行恢复操作还是重做操作。通过任务编号在缓存队列中找到相应的sql语句。按顺序执行缓存队列中的恢复语句后者重做语句。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。在上述实施例的基础上,进一步地,所述按照所述目标业务对应的链表依次恢复不同数据库的数据表之后,还包括:释放所述目标业务对应的链表中的业务流程节点。具体来说,当系统运行出现异常,事务提交失败时,自动启动恢复流程,按照目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。根据数据库名称,获取数据库提交失败时的处理方式,并根据取值决定是执行恢复操作还是重做操作。通过任务编号在缓存队列中找到相应的sql语句。按顺序执行缓存队列中的恢复语句后者重做语句。执行完成后,在缓存队列中释放该任务编号的链表。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。在以上各实施例的基础上,进一步地,所述获取目标业务的每一业务流程节点对应的数据库操作之前,还包括:获取每一业务涉及的数据库操作,以及每一数据库操作对应的数据恢复语句。具体来说,在系统进行数据恢复之前,还需要进行数据库操作控制系统的初始化。为了完成不同数据库中进行事务操作的控制,数据库操作控制系统需要分成三部分完成系统的初始化工作。1、业务管理模块初始化该部分初始化功能主要包括处理事务控制规则初始化、数据恢复规则初始化和数据重做规则初始化。事务控制规则初始化功能主要配置业务与数据库之间的控制规则,及当某个数据库出现异常时,是否恢复其它已提交的数据或将执行失败的数据进行重做。具体配置实例如下:业务类型编号、(数据库1、恢复或重做)、(数据库2、恢复或重做)……(数据库n、恢复或重做)数据恢复规则初始化主要配置业务与数据库表操作的规则,即针对某类业务进行了表操作的配置时,操作该类表的数据需要进行数据恢复。业务类型编号、(数据库1、表操作、恢复规则)、(数据库2、表操作、恢复规则)……。可针对多个数据库进行配置。例如:业务类型编号:10010001数据库:db1表操作:insertintotable1values(……)恢复规则编号:10010001恢复规则:deletefromtable1where……//删除已插入数据表操作:deletefromtable2where……恢复规则编号:10010002恢复规则:insertintotable2values(……)//插入已删除数据表操作:updatetable3setcolumn=awhere……恢复规则编号:10010003恢复规则:updatetable3setcolumn=原有值whererowid=x//将已修改数据恢复为原有值上述实例表针对数据库db1中表执行插入、删除和修改失败时,需要进行恢复操作。数据重做规则初始化主要配置业务与数据库表操作的规则,即针对某类业务进行了表操作的配置时,操作该类表的数据需要进行数据重做。业务类型编号、(数据库a、表操作、重做方式)、(数据库b、表操作、重做方式)……其中重做方式可分为重新执行语句;通过文件同步到数据库,待数据库恢复后自动加载文件。例如:业务类型编号:10010001数据库:dba表操作:insertintotable2values(……)重做编号:20010001重做方式:重新执行语句2、缓存管理模块初始化为了实现数据库操作时,将变更前的数据进行临时存储,需要完成存储队列的初始化工作,具体的存储方式为链表方式,结构如下:任务编号、(数据库a、sql语句1)、(数据库b、sql语句2)……任务编号链表的首节点,当有需要插入的数据时,需要在首节点后依次增加节点。3、执行管理模块初始化执行管理模块初始化包括恢复功能初始化和重做功能初始化。上述初始化配置包括后端数据库的tns等内容。经过系统初始化后,系统将获取每一业务涉及的数据库操作,以及每一数据库操作对应的数据恢复语句。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。在以上各实施例的基础上,进一步地,所述数据恢复语句包括恢复操作语句和重做操作语句。具体来说,数据库事务提交失败时的处理方式,包括恢复操作和重做操作。因此,每一数据库操作对应的数据恢复语句包括恢复操作语句和重做操作语句。数据库事务提交失败时需要进行恢复,则需要根据数据库操作的具体类型选择不同的恢复操作方式。如果数据库事务提交失败时需要进行重做,则只需要将数据库访问请求中需要执行的sql语句保存到该任务编号对应的尾节点,并通过标示进行区分即可。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。在以上各实施例的基础上,进一步地,所述数据库操作包括对数据表进行插入、删除和修改。具体来说,数据库事务提交失败时的处理方式,包括恢复操作和重做操作。因此,每一数据库操作对应的数据恢复语句包括恢复操作语句和重做操作语句。对数据库的操作包括对数据表进行插入、删除和修改。数据库事务提交失败时需要进行恢复,则需要根据数据库操作的具体类型选择不同的恢复操作方式。对表table1执行插入数据语句insertintotable1values(……),插入数据后记录插入行的rowid值a,并生成删除数据语句deletefromtable1whererowid=a,并将该条记录插入到缓存队列尾节点。对表table1执行删除数据语句deletefromtable1where……,删除数据前先查询被删除的数据select*fromtable1where……,并将结果自动转换成插入语句insertintotable1values(……),……,(……),然后在执行删除语句。对表table1执行修改数据语句updatetable1setcolumn=bwhere……,在执行修改语句前,前先查询被删除的数据select*,rowidfromtable1where……,将查询出来的结果自动转换成插入语句insertintotable1values(……),……,(……),根据rowid值生成删除数据修改后的语句deletefromtable1whererowidin(……)。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。图3为本发明实施例提供的基于数据库多表间数据一致性的数据恢复装置示意图,如图3所示,本发明实施例提供一种基于数据库多表间数据一致性的数据恢复装置,该数据恢复装置可以配置到数据库操作控制系统中,用于执行上述任一实施例中所述的方法,具体包括获取模块301、保存模块302和恢复模块303,其中:获取模块301用于获取目标业务的每一业务流程节点对应的数据库操作;保存模块302用于将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;恢复模块303用于当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。具体来说,图2为本发明实施例提供的分布式系统示意图,如图2所示,分布式系统通过企业服务总线获取业务消息,各应用服务不直接调用数据库接口进行访问,统一调用数据库操作控制系统进行数据库访问,从而保证数据库多表间数据的一致性。分布式系统在接收到业务消息时,需要生成一个任务编号,以及为该业务分配一个业务类型编号,其中,任务编号随机分配,每一个业务消息的唯一标识就是任务编号,针对同一笔业务消息,在不同的分布式系统进行处理时,该任务编号相同;业务类型编号按照系统中配置的业务类型进行分配。当执行数据库操作时,各应用服务不直接调用数据库接口进行访问,统一调用数据库操作控制系统进行数据库访问,调用时需要将任务编号和业务类型编码以及执行的sql语句发送到该数据库操作控制系统。数据库操作控制系统通过获取模块301获取目标业务的每一业务流程节点对应的数据库操作。当数据库操作控制系统接收到数据库访问请求时,获取任务编号(例如,no1)和业务类型。如果sql语句是查询语句,则直接调用数据库进行查询即可;如果是操作数据库表中数据的语句,则根据事务控制规则初始化信息结果获取配置信息,该配置信息中包含每一数据库操作对应的数据恢复语句。通过保存模块302将每一数据库操作对应的数据恢复语句依次保存在目标业务对应的链表中,并在执行该条sql语句前,根据恢复或重做的配置,将数据库提交失败时的处理方式保存到缓存队列中。当业务流程结束时,应用服务向数据库操作控制系统发送服务结束指令。当数据库操作控制系统接收到应用服务发送的服务结束指令时,统一对各个数据库未提交的事务进行统一提交。当系统运行出现异常,事务提交失败时,通过恢复模块303自动启动恢复流程,按照目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。根据数据库名称,获取数据库提交失败时的处理方式,并根据取值决定是执行恢复操作还是重做操作。通过任务编号在缓存队列中找到相应的sql语句。按顺序执行缓存队列中的恢复语句后者重做语句。本发明实施例提供的基于数据库多表间数据一致性的数据恢复装置,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。在上述实施例的基础上,进一步地,还包括释放模块;所述释放模块用于在所述按照所述目标业务对应的链表依次恢复不同数据库的数据表之后,释放所述目标业务对应的链表中的业务流程节点。具体来说,当系统运行出现异常,事务提交失败时,自动启动恢复流程,按照目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。根据数据库名称,获取数据库提交失败时的处理方式,并根据取值决定是执行恢复操作还是重做操作。通过任务编号在缓存队列中找到相应的sql语句。按顺序执行缓存队列中的恢复语句后者重做语句。执行完成后,通过释放模块在缓存队列中释放该任务编号的链表。本发明实施例提供的基于数据库多表间数据一致性的数据恢复装置,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,在运行过程中出现某个数据库执行了数据表操作后提交,也可以根据数据库操作访问系统中的恢复规则自动恢复对应数据,从而保障了数据表恢复的及时性和准确性。最后,以一个具体的例子进行说明:1、分布式应用程序在处理业务消息请求时,需要为该类业务消息配置业务类型,并且在处理一条业务消息时,需要分配唯一的任务编号,确保各个服务内部处理该消息时,服务编号一致,并且所有服务均需要通过数据库操作控制系统进行数据库访问。例如:业务s由某分布式系统中四个服务进行串行处理,按处理顺序分别是服务1、服务2、服务3和服务4,对应的数据库分别为db1、db2、db3和db4。业务流程第一步为通过服务1对表table1进行增加数据的操作;第二步为通过服务2对表table2进行删除数据的操作;第三步为通过服务3对表table3进行修改数据的操作;第四步为通过服务4对表table4进行插入数据的操作;针对数据库db1、db2和db3,提交失败都需要进行数据恢复,而针对db4,提交失败需要执行重做。所以数据库操作控制系统业务管理模块配置为:事务控制规则:s、(db1、恢复),(db2、恢复),(数据库3、恢复),(db4、重做)数据恢复规则:业务类型编号:s数据库:db1表操作:insertintotable1values(“a1”)数据库:db2表操作:deletefromtable2wherecondition=a2//table2包含3个字段,值分别为a2、a21、a22;数据库:db3表操作:updatetable3setcolumn=bwherecondition=a3//table3包含3个字段,分别为a3、a31、a32数据重做规则:业务类型编号:s数据库:db4表操作:insertintotable4values(“a4”)重做方式:重新执行语句2、当分布式系统接收到业务类型为s的请求消息时,首先为该消息分配唯一的任务编号,例如任务编号00000001,将该该消息通过服务总线分别调用服务1、服务2、服务3和服务4进行处理,各服务在处理该消息时,分别调用数据库操作控制系统访问数据库。3、当数据库操作控制系统接收到各服务发送的调用请求时,根据操作的sql语句执行,并按照db1、db2、db3和db4顺序依次执行,并按照执行;4、数据库操作控制系统根据执行的语句生成数据恢复策略,详细如下:执行完db1的操作时,生成策略如下:00000001→db1、deletefromtable1whererowid=a执行完db2的操作时,生成策略如下:00000001→db1、deletefromtable1whererowid=a→db2、insertintotable2values(a2),(a21),(a22)执行完db3的操作时,生成策略如下:00000001→db1、deletefromtable1whererowid=a→db2、insertintotable2values(a2),(a21),(a22)→db3、deletefromtable3whererowidin(aa);insertintotable3values(a3),(a31),(a32)执行完db4的操作时,生成策略最终链表如下:00000001→db1、deletefromtable1whererowid=a→db2、insertintotable2values(a2),(a21),(a22)→db3、deletefromtable3whererowidin(aa);insertintotable3values(a3),(a31),(a32)→r,db4、insertintotable4values(“a4”)5、当数据库执行过程中出现异常时,假设db3执行失败,需要按照规则同步回滚其他数据库的数据时,需要按照策略链表从头到尾顺序执行相应的sql语句,从而回滚整个业务流程的数据,依次执行的语句为:deletefromtable1whererowid=a;insertintotable2values(a2),(a21),(a22)deletefromtable3whererowidin(aa);insertintotable3values(a3),(a31),(a32)insertintotable4values(“a4”)6、执行完成后,释放业务编号对应的链表节点。图4为本发明实施例提供的电子设备的结构示意图,如图4所示,所述设备包括:处理器401、存储器402和总线403;其中,处理器401和存储器402通过所述总线403完成相互间的通信;处理器401用于调用存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:获取目标业务的每一业务流程节点对应的数据库操作;将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。本发明实施例提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取目标业务的每一业务流程节点对应的数据库操作;将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取目标业务的每一业务流程节点对应的数据库操作;将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。以上所描述的装置及设备等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
技术特征:

1.一种基于数据库多表间数据一致性的数据恢复方法,其特征在于,包括:

获取目标业务的每一业务流程节点对应的数据库操作;

将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;

当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。

2.根据权利要求1所述的方法,其特征在于,所述按照所述目标业务对应的链表依次恢复不同数据库的数据表之后,还包括:

释放所述目标业务对应的链表中的业务流程节点。

3.根据权利要求1所述的方法,其特征在于,所述获取目标业务的每一业务流程节点对应的数据库操作之前,还包括:

获取每一业务涉及的数据库操作,以及每一数据库操作对应的数据恢复语句。

4.根据权利要求1所述的方法,其特征在于,所述数据恢复语句包括恢复操作语句和重做操作语句。

5.根据权利要求1所述的方法,其特征在于,所述数据库操作包括对数据表进行插入、删除和修改。

6.一种基于数据库多表间数据一致性的数据恢复装置,其特征在于,包括:

获取模块,用于获取目标业务的每一业务流程节点对应的数据库操作;

保存模块,用于将每一数据库操作对应的数据恢复语句依次保存到所述目标业务对应的链表中;

恢复模块,用于当系统运行出现异常时,自动启动恢复流程,按照所述目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。

7.根据权利要求6所述的数据恢复装置,其特征在于,还包括释放模块;

所述释放模块用于在所述按照所述目标业务对应的链表依次恢复不同数据库的数据表之后,释放所述目标业务对应的链表中的业务流程节点。

8.一种电子设备,其特征在于,包括:

存储器和处理器,所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5任一所述的方法。

9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序被处理器执行时,实现如权利要求1至5任一所述的方法。

技术总结
本发明实施例提供一种基于数据库多表间数据一致性的数据恢复方法及装置,所述方法包括:获取目标业务的每一业务流程节点对应的数据库操作;将每一数据库操作对应的数据恢复语句依次保存到目标业务对应的链表中;当系统运行出现异常时,自动启动恢复流程,按照目标业务对应的链表中的数据恢复语句依次恢复不同数据库的数据表。本发明实施例提供的基于数据库多表间数据一致性的数据恢复方法及装置,通过优化业务服务调用数据库的访问机制,自动保存不同业务流程操作数据库时的数据库访问记录,并实时生成数据库恢复规则,从而保障了数据表恢复的及时性和准确性。

技术研发人员:王琪;张大亮;屈立学;乔栋
受保护的技术使用者:中国移动通信集团内蒙古有限公司;中国移动通信集团有限公司
技术研发日:2018.11.29
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59292.html

最新回复(0)