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

文档序号:8395961阅读:来源:国知局
Set)中写入与上述操作类型标识、唯一标识和操作字段值对应的操作类型信息、唯一标识和在操作发生之前所有的值信息写入;对于数据库操作记录中的操作类型标识为更新操作或者删除操作的情况,由于在相关的数据库操作记录中没有记录唯一标识的相关信息(表名和键值),而记录有与该操作类型标识对应操作的所对应的取值条件,由于变化记录集合(ChangeSet)仅记录记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录,因此与该首次出现的变化记录相关的数据库某张表某一行的唯一标识和操作发生前的所有的信息一定在原始数据集合(InitDbSet)中存在,根据操作记录中数据库操作记录集合(OperSet)中与上述操作类型标识对应的操作的取值条件,可以在在原始数据集合(InitDbSet)中查找出与上述取值条件相符合的记录的集合,根据记录的唯一标识,再查询在变化记录集合(ChangeSet)中查询是否存在该唯一标识,并在不存在的情况下将与该记录对应唯一标识、操作类型信息和在操作发生之前所有的值信息记录到变化记录集合(ChangeSet)。
[0149]由于对测试数据库初始时间点至结束时间点之间的数据库操作记录集合(OperSet)的读取为正向顺序读取,且仅当变化记录集合(ChangeSet)中不存在数据库操作记录相关操作所对应的唯一标识时,才在变化记录集合(ChangeSet)中写入相应的唯一标识、操作类型信息和在操作发生之前所有的值信息,因此,可以保证变化记录集合(ChangeSet)中的变化记录均为希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录。
[0150]逆操作单元200包括:删除操作模块210和插入操作模块220。
[0151]删除操作模块210,用于删除数据库中与变化记录集合(ChangeSet)中记录的所有的唯一标识对应的行;
[0152]插入操作模块220,用于根据所述变化记录集合(ChangeSet)中操作类型信息为补充操作的变化记录中的在操作发生之前所有的值信息,将所述在操作发生之前所有的值信息插入到数据库中。
[0153]在上述实施例中,对数据库执行的删除操作和插入操作均为并发的过程,多个操作同时进行,大大提高了数据库恢复的效率。
[0154]与现有技术相比,本发明实施例根据生成的仅记录测试数据库希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录的变化记录集合(ChangeSet),对数据库进行逆操作,本质上是按行对数据库进行恢复,无论数据库中的某一行进行了多少次变化,仅需要根据变化记录集合(ChangeSet)中变化记录记录的内容对数据库中发生了变化的行进行一次删除操作,或者进行一次删除操作和一次插入操作,BP可实现对数据库的恢复,恢复数据库所需要执行的操作远远少于实际所发生的操作,与现有技术相比,避免了大量的重复操作,提高了数据库恢复的效率,缩短了数据库恢复的时间,同时,由于恢复过程可并发,更进一步提高了数据库恢复的效率。
[0155]当数据库操作记录集合(OperSet)通过分析事务日志获得,且事务日志中包含前镜像时,由于对测试数据库在希望恢复到的目标时间点和结束时间点之间的数据库操作记录集合(OperSet)进行的是正向读取,且仅当变化记录集合(ChangeSet)中不存在数据库操作记录中的唯一标识时,才在变化记录集合(ChangeSet)中写入对应的唯一标识、操作类型信息和在操作发生之前所有的值信息,因此,可以保证变化记录集合(ChangeSet)中的变化记录均为希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录。
[0156]当所述数据库操作记录集合(OperSet)通过分析事务日志获得,且事务日志为不包括前镜像但包括后镜像的事务日志时,通过生成一个记录初始时间点和希望恢复到的目标时间点之间的所有发生变化的行最后一次出现的、至少包括数据库在初始时间点和希望恢复到的目标时间点之间数据库某张表某一行的唯一标识和在操作发生之后所有的值信息的末次变化记录集合(DeltaDataSet),若末次变化记录集合(DeltaDataSet)中存在数据库在初始时间点和希望恢复到的目标时间点之间的唯一标识,则末次变化记录集合(DeltaDataSet)中与上述唯一标识对应的在操作发生之后所有的值信息即为需要在变化记录集合(ChangeSet)中写入的数据库某张表某一行在操作发生之前的所有的值信息;若末次变化记录集合(DeltaDataSet)中不存在数据库在初始时间点和希望恢复到的目标时间点之间的唯一标识,则原始数据集合(InitDbSet)中与上述唯一标识对应的原始数据库值即为需要在变化记录集合(ChangeSet)中写入的数据库某张表某一行在操作发生之前的所有的值信息。通过上述过程,可以保证在变化记录集合(ChangeSet)中完整而准确的写入相应的唯一标识、在操作发生之前所有的值信息及操作类型信息。
[0157]当希望恢复到的目标状态是初始状态时,由于所有需要写入变化记录集合(ChangeSet)的数据库某张表某一行的操作发生之前的所有的值信息均可以在原始数据集合(InitDbSet)中获得,因此不需要经历末次变化记录集合(DeltaDataSet)的相关步骤,数据库恢复步骤少。
[0158]当通过分析生产数据库服务器与客户端之间交换的所有网络报文获得数据库操作记录集合(OperSet)时,对于数据库操作记录中的操作类型标识为插入操作的情况,由于相关的数据库操作记录中记录表名和操作字段值,而从表名和操作字段值中可以获得唯一标识,因此可以直接在变化记录集合(ChangeSet)中查找是否包括对应的唯一标识,且在变化记录集合(ChangeSet)中不包括对应的唯一标识的情况下可以直接将与上述操作类型标识、与上述操作类型标识对应的操作的唯一标识和对应的操作字段值对应的操作类型信息、唯一标识和在操作发生之前所有的值信息写入变化记录集合(ChangeSet);对于数据库操作记录中的操作类型标识为更新操作或者删除操作的情况,由于在相关的数据库操作记录中没有记录唯一标识的相关信息(表名和键值),而记录有与该操作类型标识对应操作的所对应的取值条件,由于变化记录集合(ChangeSet)仅记录记录希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录,因此与该首次出现的变化记录相关的数据库某张表某一行的唯一标识和操作发生前的所有的信息一定在原始数据集合(InitDbSet)中存在,根据操作记录中数据库操作记录集合(OperSet)中与上述操作类型标识对应的操作的取值条件,可以在在原始数据集合(InitDbSet)中查找出与上述取值条件相符合的记录的集合,根据记录的唯一标识,再查询在变化记录集合(ChangeSet)中查询是否存在该唯一标识,并在不存在的情况下将与该记录对应唯一标识、操作类型信息和在操作发生之前所有的值信息记录到变化记录集合(ChangeSet)。
[0159]由于对测试数据库初始时间点至结束时间点之间的数据库操作记录集合(OperSet)的读取为正向读取,且仅当变化记录集合(ChangeSet)中不存在数据库操作记录相关操作所对应的唯一标识时,才在变化记录集合(ChangeSet)中写入相应的唯一标识、操作类型信息和在操作发生之前所有的值信息,因此,可以保证变化记录集合(ChangeSet)中的变化记录均为希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录。
[0160]在对数据库进行逆操作时,对数据库执行的删操作和插入操作可以为并发的过程,多个操作同时进行,可进一步提高了数据库恢复的效率。
[0161]需要说明的是:上述实施例提供的数据库恢复系统仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据库恢复系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据库恢复系统与数据库恢复方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
[0162]本领域普通技术人员可以理解,实现上述实施例方法中的全部或者部分步骤是可以通过程序来指令相关的硬件来完成的,所述的程序可以存储于一计算机可读取存储介质中,不失一般性,计算机可读取存储介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM, EEPR0M、闪存或其他固态存储介质,CD-ROM、DVD或其他光学存储介质、磁带盒、磁带、磁盘或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。
[0163]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0164]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种数据库恢复方法,其特征在于,所述方法包括如下步骤: 根据数据库操作记录集合,生成变化记录集合; 根据所述变化记录集合,对数据库进行逆操作; 其中,所述数据库操作记录集合至少记录针对生产数据库的插入操作、删除操作及修改操作的所有操作历史信息; 所述变化记录集合记录测试数据库希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录,所述变化记录至少包括所述数据库某张表某一行的唯一标识、操作类型信息和在操作发生之前所有的值信息; 所述唯一标识用于唯一标识所述变化记录集合中的一个实例对象,至少包括数据库中某一行所在表的表名和所述行记录的键值; 所述操作类型信息包括补充操作和清除操作,所述补充操作是所述数据库操作记录集合中删除操作的逆操作,表示将已经被删除的数据在测试数据库中还原,或者是所述数据库操作记录集合中更新操作的逆操作,表示将测试数据库中的对应记录还原到更新操作以前的状态;所述清除操作是所述数据库操作记录集合中插入操作的逆操作,表示删除测试数据库中已经插入的数据。
2.如权利要求1所述的方法,其特征在于,当所述数据库操作记录集合通过分析事务日志获得,且所述事务日志中包含前镜像时,所述根据数据库操作记录集合,生成变化记录集合的步骤具体包括: 顺序读取测试数据库在希望恢复到的目标时间点和结束时间点
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1