本技术涉及大数据,特别是涉及一种数据恢复方法、装置、计算机设备及存储介质。
背景技术:
1、目前数据库在运行过程中可能会遇到故障、如事务失败、进程退出、程序崩溃或者存储损坏等,这些故障可能导致数据库状态不正确或数据丢失。因此数据库系统需要提供故障恢复的机制,以保证在故障发生后,可以将数据库恢复到正确的状态,同时保证已提交事务的修改持久化,未提交事务的修改不可见。目前数据库系统在实现故障恢复的机制时,通常是利用预先备份的文件,对数据进行恢复。其中,备份文件需要消耗更多的cpu和内存资源,备份和恢复速度较慢,不适合大数据的场景。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种降低消耗资源的数据恢复方法、装置、计算机设备、存储介质及计算机程序产品。
2、第一方面,本技术一种数据恢复方法,该方法包括:
3、获取待恢复数据库相应的二进制日志文件,根据二进制日志文件,构建用于进行数据恢复的事务对象,事务对象中包括数据块地址和相应存储的数据块内容;
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、上述数据恢复方法、装置、计算机设备、存储介质及计算机程序产品,根据待恢复数据库的二进制日志文件构建后续用于进行数据恢复的事务对象。对事务对象进行遍历,以根据遍历到的事务对象中的数据块地址,从内存中获取相应的数据块内容。如果根据事务对象确定获取到的数据块内容存在数据异常,则可以基于事务对象,将内存中异常数据块的异常数据内容替换为正确内容,替换后再刷新至数据库服务器中的磁盘上存储。由于不需要备份文件,而是可以直接基于二进制日志文件,在数据还存在于内存时对数据进行恢复,从而可以减少对备份文件的依赖,节省存储空间和带宽,降低数据恢复的成本。另外,由于在数据从内存刷新至磁盘上之前,可以根据二进制日志文件对内存中的数据块内容进行检测,从而可以有效检测和恢复由于硬件故障或者恶意攻击导致的数据损坏和篡改,进而提高数据库的安全性和可靠性。