一种数据库恢复方法及系统的制作方法

文档序号:8395961阅读:673来源:国知局
一种数据库恢复方法及系统的制作方法
【技术领域】
[0001]本发明属于计算机领域,尤其涉及一种数据库恢复方法及系统。
【背景技术】
[0002]交易系统,如股票交易系统、基金交易系统、银行交易系统等的上线是一个风险极大的工作,各种不确定因素都有可能导致交易系统上线的失败。现在,在交易系统上线前,往往会通过系统仿真来完成大量的系统功能测试和性能压力测试,以便用户能在系统上线前对系统上线后可能存在的风险进行控制,大大减少了交易系统直接上线的失败风险。由于交易系统仿真过程一般都会进行多次,在每一次交易系统仿真结束之后,又需要将修改后的数据库恢复至原始状态。
[0003]另外,用户在操作数据库的过程中,也可能会对数据库进行误操作,比如数据的误删除、误修改等,这些误操作往往会给用户带来巨大的损失,尤其是在金融业,当用户发现前面对数据库的操作包括了错误的操作时,需要能够获取发生误操作时间所对应的数据,才能够对误操作的数据进行判断和处理,也就是说,需要将修改后的数据库恢复到发生误操作的时间点上。
[0004]现有技术通过交易回滚的方式将修改后的数据库恢复至原始状态或发生误操作的时间点之前的状态,存在数据库恢复效率低,恢复时间长的问题。

【发明内容】

[0005]本发明实施例提供一种数据库恢复方法,旨在解决现有数据库恢复效率低、恢复时间长的问题。
[0006]本发明实施例是这样实现的,一种数据库恢复方法,包括如下步骤:
[0007]根据数据库操作记录集合,生成变化记录集合;
[0008]根据所述变化记录集合,对数据库进行逆操作;
[0009]其中,所述数据库操作记录集合至少记录针对生产数据库的插入操作、删除操作及修改操作的所有操作历史信息;
[0010]所述变化记录集合记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录,所述变化记录至少包括所述数据库某张表某一行的唯一标识、操作类型信息和在操作发生之前所有的值信息;
[0011]所述唯一标识用于唯一标识所述变化记录集合中的一个实例对象,至少包括数据库中某一行所在表的表名和所述行记录的键值;
[0012]所述操作类型信息包括补充操作和清除操作,所述补充操作是所述数据库操作记录集合中删除操作的逆操作,表示将已经被删除的数据在测试数据库中还原,或者是所述数据库操作记录集合中更新操作的逆操作,表示将测试数据库中的对应记录还原到更新操作以前的状态;所述清除操作为所述数据库操作记录集合中插入操作的逆操作,表示删除测试数据库中已经插入的数据。
[0013]本发明实施例还提供一种数据库恢复系统,所述系统包括:
[0014]变化记录集合生成单元,用于根据数据库操作记录集合,生成变化记录集合;以及
[0015]逆操作单元,用于根据所述变化记录集合,对数据库进行逆操作;
[0016]其中,所述数据库操作记录集合至少记录针对生产数据库的插入操作、删除操作及修改操作的所有操作历史信息;
[0017]所述变化记录集合记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录,所述变化记录至少包括所述数据库某张表某一行的唯一标识、操作类型信息和在操作发生之前所有的值信息;
[0018]所述唯一标识用于唯一标识所述变化记录集合中的一个实例对象,至少包括数据库中某一行所在表的表名和所述行记录的键值;
[0019]所述操作类型信息包括补充操作和清除操作,所述补充操作是所述数据库操作记录集合中删除操作的逆操作,表示将已经被删除的数据在测试数据库中还原,或者是所述数据库操作记录集合中更新操作的逆操作,表示将测试数据库中的对应记录还原到更新操作以前的状态;所述清除操作为所述数据库操作记录集合中插入操作的逆操作,表示删除测试数据库中已经插入的数据。
[0020]本发明实施例根据生成的仅记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录的变化记录集合,对数据库进行逆操作,即可实现对数据库的恢复,恢复数据库所需要执行的操作远远少于实际所发生的操作,与现有技术相比,避免了大量的重复操作,提高了数据库恢复的效率,缩短了数据库恢复的时间。
【附图说明】
[0021]图1是本发明实施例提供的数据库恢复方法的运行环境示意图;
[0022]图2是本发明实施例提供的数据库恢复方法的实现流程示意图;
[0023]图3是本发明实施例提供的一种生成变化记录集合的流程示意图;
[0024]图4是本发明实施例提供的另一种生成变化记录集合的流程示意图;
[0025]图5是本发明实施例提供的生成末次变化记录集合的流程示意图;
[0026]图6是本发明实施例提供的生成变化记录集合的子流程示意图;
[0027]图7是本发明实施例提供的又一种生成变化记录集合的流程示意图;
[0028]图8是本发明实施例提供的对数据库进行逆操作的流程示意图;
[0029]图9是本发明实施例提供数据库恢复系统的结构示意图。
【具体实施方式】
[0030]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0031]本发明实施例根据生成的仅记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录的变化记录集合,对数据库进行逆操作,即可实现数据库的恢复,恢复数据库所需要执行的操作远远小于实际所发生的操作,与现有技术相比,避免了大量的重复操作,提高了数据库恢复的效率,缩短了数据库恢复的时间。
[0032]图1示出了本发明实施例提供的数据库恢复方法的运行环境,详述如下:
[0033]在本发明实施例中,生产环境是指交易系统上线实际运行的环境,此时客户端通过向生产数据库服务器发送操作指令,实现对生产数据库的修改,完成交易;测试环境是指对生产数据库进行仿真或者恢复的环境,通过对生产数据库交易的捕获和回放,仿真生产环境下数据的交易过程。
[0034]生产数据库是指客户的交易系统已经上线实际运行的数据库,生产数据库中存储有事务日志。
[0035]测试数据库用于对生产数据库进行测试或者恢复,需要进行一次初始化,初始化的数据来源于原始数据集合(InitDbSet),可以通过将原始数据集合(InitDbSet)中的数据导入到测试数据库中而实现。
[0036]在本发明实施例中,原始数据集合(InitDbSet)是生产数据库某一时间点的数据的镜像或者备份,用于测试数据库的初始化和作为数据库恢复系统原始数据集合(InitDbSet)的来源,可以通过对某一时间点的生产数据库进行备份获得。
[0037]在本发明实施例中,测试数据库有三种状态,分别为初始状态、结束状态和希望恢复到的目标状态。其中,初始状态为测试数据库初始化之后的状态,对应的时间点为初始时间点;结束状态为测试数据库执行完数据库操作记录集合(OperSet)之后而达到的状态,对应的时间点为结束时间点;希望恢复到的目标状态为测试数据库在初始状态和结束状态之间任何一个时间点的状态,对应的时间点为希望恢复的目标时间点,在某些情况下,希望恢复到的目标状态也可以是初始状态。
[0038]数据库恢复系统根据原始数据集合(InitDbSet)和数据库操作记录集合(OperSet),对测试数据库进行操作,使测试数据库恢复到希望恢复到的目标状态。
[0039]在本发明实施例中,数据库操作记录集合(OperSet)至少记录针对生产数据库的插入操作、删除操作及修改操作的所有操作历史信息,可以通过分析生产数据库中的事务日志获得,也可以通过分析生产数据库服务器与客户端之间交换的所有网络报文获得。
[0040]作为本发明一个实施例,当事务日志为包括前镜像的事务日志时,通过分析生产数据库中的事务日志获得的数据库操作记录集合(OperSet)包括数据库所有操作的前镜像、表名和操作类型标识,操作类型标识表明操作的类型,包括插入操作、更新操作、删除操作等。
[0041]作为本发明另一个实施例,当事务日志为不包括前镜像但包括后镜像的事务日志时,通过分析生产数据库中的事务日志获得的数据库操作记录集合(OperSet)包括数据库所有操作的后镜像、表名和操作类型标识。
[0042]作为本发明又一个实施例,当通过分析生产数据库服务器与客户端之间交换的所有网络报文获得数据库操作记录集合(OperSet)时,当SQL操作语句为插入操作(Insert)语句时,SQL操作语句中包括表名、操作类型标识以及操作字段值等内容,例如,对于如下SQL 操作语句 “ insert into employee values (,1001,,,张伟’,’男,,,25,,,3000,),,,其中,“employee”为表名,操作类型信息为insert,操作字段值为’ 1001’,’张伟,,,25,,,3000,;当SQL操作语句为查询操作(Select)语句、更新操作(Update)或删除操作Delete语句时,SQL操作语句中包括表名、操作类型信息,以及取值条件或更新值等内容,例如,对于如下 SQL 操作语句 “update set salary = salary+200from employeewhere salary〈1000”,其中,取值条件为 “salary〈1000”,更新值为 salary = salary+200,对于如下 SQL 语句 “delete from employee where salary>1000”,其中,取值条件为“salary>1000”。
[0043]在本发明实施例中,网络报文可以是通过中间件或数据库记录的,也可以是通过网络嗅探器记录的。
[0044]图2示出了本发明实施例提供的数据库恢复方法的实现流程,详述如下:
[0045]在步骤S201中,根据数据库操作记录集合(OperSet),生成变化记录集合(ChangeSet);
[0046]在本发明实施例中,变化记录集合(ChangeSet)记录测试数据库希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录。
[0047]在本发明实施例中,变化记录记录数据库某张表某一行与操作相关的全部或者部分信息,至少包括该行的唯一标识、操作类型信息和在操作发生之前所有的值信息。
[0048]在本发明实施例中,唯一标识用
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1