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

文档序号:8395961阅读:来源:国知局
原,或者是数据库操作记录集合中更新操作的逆操作,表示将测试数据库中的对应记录还原到更新操作以前的状态;清除操作为数据库操作记录集合中插入操作的逆操作,表示删除测试数据库中已经插入的数据。
[0127]与现有技术相比,本发明实施例根据生成的仅记录测试数据库希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录的变化记录集合(ChangeSet),对数据库进行逆操作,本质上是按行对数据库进行恢复,无论数据库中的某一行进行了多少次变化,仅需要根据变化记录集合(ChangeSet)中变化记录记录的内容对数据库中发生了变化的行进行一次删除操作,或者进行一次删除操作和一次插入操作,BP可实现对数据库的恢复,恢复数据库所需要执行的操作远远少于实际所发生的操作,与现有技术相比,避免了大量的重复操作,提高了数据库恢复的效率,缩短了数据库恢复的时间,同时,由于恢复过程可并发,更进一步提高了数据库恢复的效率。
[0128]在本发明实施例中,变化记录集合生成单元100包括第一变化记录信息获取模块110、第一变化记录信息写入模块120、末次变化记录集合生成模块130、变化记录集合生成模块140、第三变化记录信息获取模块150和第三变化记录信息写入模块160。
[0129]第一变化记录信息获取模块110,用于当数据库操作记录集合(OperSet)通过分析事务日志获得,且该事务日志中包含前镜像时,顺序读取测试数据库在希望恢复到的目标时间点和结束时间点之间的数据库操作记录集合(OperSet),当判断数据库操作记录集合中存在可以读取的数据库操作记录时,获取数据库操作记录中的唯一标识、与该唯一标识所对应操作的操作类型标识和前镜像。
[0130]在本发明实施例中,由于事务日志中记录有数据库中发生变化的行所在表的表名和前镜像,而该行相应的键值可以在前镜像中获得,因此,通过读取测试数据库在希望恢复到的目标时间点和结束时间点之间的数据库操作记录集合(OperSet),可以获取数据库操作记录中的至少包括表明和键值的唯一标识。
[0131]第一变化记录信息写入模块120,用于当数据库操作记录集合(OperSet)通过分析事务日志获得,且上述事务日志中包含前镜像时,当查询变化记录集合(ChangeSet)中不存在上述唯一标识时,根据上述唯一标识、操作类型标识和前镜像,在变化记录集合(ChangeSet)中写入对应的唯一标识、操作类型信息和在操作发生之前所有的值信息。
[0132]在本发明实施例中,当数据库操作记录集合(OperSet)中与上述唯一标识所对应操作的操作类型标识为删除操作或者更新操作时,在变化记录集合(ChangeSet)中写入的操作类型信息为补充操作;当数据库操作记录集合(OperSet)中与上述唯一标识所对应操作的操作类型标识为插入操作时,在变化记录集合(ChangeSet)中写入的操作类型信息为清除操作。
[0133]在本发明实施例中,在变化记录集合(ChangeSet)中写入的在操作发生之前所有的值信息为数据库操作记录集合(OperSet)中与上述唯一标识所对应操作的前镜像。
[0134]由于对测试数据库在希望恢复到的目标时间点和结束时间点之间的数据库操作记录集合(OperSet)进行的是顺序读取,且仅当变化记录集合(ChangeSet)中不存在数据库操作记录中的唯一标识时,才在变化记录集合(ChangeSet)中写入对应的唯一标识、操作类型信息和在操作发生之前所有的值信息,因此,可以保证变化记录集合(ChangeSet)中的变化记录均为测试数据库希望恢复到的目标时间点和结束时间点之间的所有发生变化的行首次出现的变化记录。
[0135]末次变化记录集合生成模块130,用于当数据库操作记录集合(OperSet)通过分析事务日志获得,且上述事务日志为不包括前镜像但包括后镜像的事务日志时,根据数据库操作记录集合(OperSet),生成末次变化记录集合(DeltaDataSet)。
[0136]在本发明实施例中,末次变化记录集合(DeltaDataSet)记录测试数据库初始时间点和希望恢复到的目标时间点之间的所有发生变化的行最后一次出现的末次变化记录,上述末次变化记录至少包括测试数据库某张表某一行的唯一标识和在操作发生之后所有的值信息。
[0137]在本发明实施例中,末次变化记录集合生成模块130包括:
[0138]末次变化记录信息获取子模块131,用于逆向读取测试数据库在初始时间点和希望恢复到的目标时间点之间的数据库操作记录集合(OperSet),当判断数据库操作记录集合(OperSet)中存在可读取的数据库操作记录时,获取数据库操作记录中的唯一标识和与上述唯一标识所对应操作的后镜像。
[0139]末次变化记录信息写入子模块132,用于当查询末次变化记录集合(DeltaDataSet)中不存在上述唯一标识时,根据上述唯一标识和后镜像,在末次变化记录集合(DeltaDataSet)中写入对应的唯一标识和在操作发生之后所有的值信息。
[0140]在本发明实施例中,由于对测试数据库在初始时间点和希望恢复到的目标时间点之间的数据库操作记录集合(OperSet)的读取为逆向读取,且仅当查询末次变化记录集合(DeltaDataSet)中不存在数据库操作记录中的唯一标识时,才在末次变化记录集合(DeltaDataSet)中写入对应的唯一标识和在操作发生之后所有的值信息,因此,可以保证末次变化记录集合(DeltaDataSet)中的变化记录均为初始时间点和希望恢复到的目标时间点之间的所有发生变化的行最后一次出现的末次变化记录。
[0141]变化记录集合生成模块140,用于当数据库操作记录集合(OperSet)通过分析事务日志获得,且上述事务日志为不包括前镜像但包括后镜像的事务日志时,根据上述数据库操作记录集合(OperSet)、末次变化记录集合(DeltaDataSet)以及原始数据集合(InitDbSet)生成变化记录集合。
[0142]在本发明实施例中,变化记录集合生成模块140包括:
[0143]第二变化记录信息获取模块141,用于顺序读取测试数据库在希望恢复到的目标时间点和结束时间点之间的数据库操作记录集合(OperSet),当判断所述数据库操作记录集合(OperSet)中存在可以读取的数据库操作记录时,获取所述数据库操作记录中的唯一标识和与该唯一标识对应的操作类型标识。
[0144]第二变化记录信息写入模块142,用于当查询变化记录集合(OperSet)中不存在上述唯一标识,且末次变化记录集合(DeltaDataSet)中存在上述唯一标识时,获取所述唯一标识在末次变化记录集合(DeltaDataSet)中所对应的在操作发生之后所有的值信息,根据上述唯一标识、操作类型标识和在操作发生之后所有的值信息,在变化记录集合(ChangeSet)中写入对应的唯一标识、操作类型信息和在操作发生之前所有的值信息;当查询所述变化记录集合(ChangeSet)中不存在上述唯一标识,且上述末次变化记录集合(DeltaDataSet)中不存在上述唯一标识时,获取该唯一标识在原始数据集合(InitDbSet)中所对应的原始数据库值,根据所述唯一标识、操作类型标识和原始数据库值,在变化记录集合(ChangeSet)中写入对应的唯一标识、操作类型信息及在操作发生之前所有的值信息。
[0145]本发明实施例通过生成一个记录测试数据库初始时间点和希望恢复到的目标时间点之间的所有发生变化的行最后一次出现的、至少包括数据库在初始时间点和希望恢复到的目标时间点之间数据库某张表某一行的唯一标识和在操作发生之后所有的值信息的末次变化记录集合(DeltaDataSet),若末次变化记录集合(DeltaDataSet)中存在数据库在初始时间点和希望恢复到的目标时间点之间的唯一标识,则末次变化记录集合(DeltaDataSet)中与上述唯一标识对应的在操作发生之后所有的值信息即为需要在变化记录集合(ChangeSet)中写入的数据库某张表某一行在操作发生之前的所有的值信息;若末次变化记录集合(DeltaDataSet)中不存在数据库在初始时间点和希望恢复到的目标时间点之间的唯一标识,则原始数据集合(InitDbSet)中与上述唯一标识对应的原始数据库值即为需要在变化记录集合(ChangeSet)中写入的数据库某张表某一行在操作发生之前的所有的值信息。通过上述过程,可以保证在变化记录集合(ChangeSet)中完整而准确的写入相应的唯一标识、在操作发生之前所有的值信息及操作类型信息,解决了当所述数据库操作记录集合(OperSet)通过分析事务日志获得,且事务日志为不包括前镜像但包括后镜像的事务日志时,由于数据库操作记录集合(OperSet)中不包括前镜像,在生成变化记录集合(ChangeSet)时,无法从数据库操作记录中直接获得数据库某张表某一行在操作发生之前的所有的值信息写入变化记录集合(ChangeSet)的问题。
[0146]第三变化记录信息获取模块150,用于当通过分析生产数据库服务器与客户端之间交换的所有网络报文获得数据库操作记录集合(OperSet)时,顺序读取测试数据库初始时间点至结束时间点之间的数据库操作记录集合(OperSet),当判断数据库操作记录集合(OperSet)中存在可以读取的数据库操作记录时,获取数据库操作记录中的操作类型标识,与该操作类型标识对应的唯一标识和操作字段值或者与该操作类型标识对应的取值条件。
[0147]第三变化记录信息写入模块160,用于当通过分析生产数据库服务器与客户端之间交换的所有网络报文获得数据库操作记录集合时,当上述操作类型标识为插入操作,且所述变化记录集合(ChangeSet)中不存在上述唯一标识时,根据所述操作类型标识、唯一标识和操作字段值,在变化记录集合(ChangeSet)中写入对应的操作类型信息、唯一标识和在操作发生之前所有的值信息;当上述操作类型标识为删除操作或者更新操作,且根据上述取值条件在原始数据集合中查找的符合该取值条件的记录的唯一标识不在变化记录集合(ChangeSet)中存在时,将与该记录对应的唯一标识、操作类型信息和在操作发生之前所有的值信息记录到变化记录集合(ChangeSet)。
[0148]在本发明实施例中,对于数据库操作记录中的操作类型标识为插入操作的情况,由于相关的数据库操作记录中记录表名和操作字段值,而从表名和操作字段值中可以获得唯一标识,因此可以直接在变化记录集合(ChangeSet)中查找是否包括对应的唯一标识,且在变化记录集合(ChangeSet)中不包括对应的唯一标识的情况下,可以直接在变化记录集合(Change
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1