一种数据恢复方法、装置及电子设备
技术领域
本发明涉及数据存储
技术领域
,特别是涉及一种数据恢复方法、装置及电子设备。背景技术
当前,对数据库中的文件进行备份和恢复是数据库服务高可靠的重要依据之一,其中,数据恢复时间是对数据库进行恢复的关键指标。
相关技术中,数据恢复方法包括:针对数据库中待恢复的备份文件,从该备份文件中顺序读取同等大小的数据块,对所读取到的各个数据块进行解压缩,从而,按照各个数据块的读取顺序,依次将对各个数据块进行解压缩所得到的数据存储到目标文件中。例如,如图1所示,为上述数据恢复方法的示意图。
然而,在上述相关技术中,由于采用顺序读取且按照读取顺序依次存储的方式,无疑存在数据恢复耗时较高的问题。
发明内容
本发明实施例的目的在于提供一种数据恢复方法、装置及电子设备,以实现减少数据恢复的耗时,提高数据恢复的效率。具体技术方案如下:
第一方面,本发明实施例提供了一种数据恢复方法,所述方法包括:
基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;其中,所述预定读取策略包括:基于预设的读取数据量,更新所述备份文件对应的且用于表征待读取数据的起始位置的偏移地址;基于本次更新之前的偏移地址和所述读取数据量,从所述备份文件中读取待恢复数据块;
针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,所述基于预设的读取数据量,更新所述备份文件对应的且用于表征待读取数据的起始位置的偏移地址的步骤,包括:
在当前的所述备份文件对应的,且用于表征待读取数据的起始位置的偏移地址的基础上,增加所述读取数据量,得到更新后的偏移地址。
可选的,一种具体实现方式中,所述基于本次更新之前的偏移地址和所述读取数据量,从所述备份文件中读取待恢复数据块的步骤,包括:
基于本次更新之前的偏移地址和所述读取数据量,确定从所述备份文件中进行数据读取的地址范围;
按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述按照所述地址范围,从所述备份文件中读取待恢复数据块的步骤,包括:
利用无锁方式,按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容的步骤,包括:
将读取该待恢复数据块时所基于的偏移地址确定为标记内容,并为所述待恢复数据设置所确定的标记内容;或者,
将从所述备份文件中进行数据读取的地址范围确定为标记内容,并为所述待恢复数据设置所确定的标记内容;其中,所述地址范围是根据读取该待恢复数据块时所基于的偏移地址和所述读取数据量确定的。
可选的,一种具体实现方式中,在所述基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块的步骤之前,所述方法还包括:
从用于存储所述备份文件的存储节点中,读取所述备份文件,并将所读取到的所述备份文件存储至第一预设缓存中;
所述基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块的步骤,包括:
基于并发方式,按照预定读取策略从所述第一预设缓存中存储的所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,
所述基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块的步骤,包括:
预设的各个解压缩线程基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;
所述针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容的步骤,包括:
每一解压缩线程对所读取到的待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
所述按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中的步骤,包括:
预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,在所述预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中的步骤之前,所述方法还包括:
每一解压缩线程将设置有标记内容的所述待恢复数据存储至该解压缩线程对应的第二预设缓存中;
所述预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中的步骤,包括:
预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将所述第二预设缓存中各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,每个解压缩线程对应的第二预设缓存不同;所述预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将所述第二预设缓存中各个待恢复数据存储至预设的目标文件中的步骤,包括:
预设的数据持久化线程轮巡各个解压缩线程对应的第二预设缓存,将各个第二预设缓存中的各个待恢复数据,按照标记内容连续的顺序,依次存储至预设的目标文件中。
第二方面,本发明实施例提供了一种数据恢复装置,所述装置包括:
数据块读取模块,用于基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;其中,所述预定读取策略包括:基于预设的读取数据量,更新所述备份文件对应的,且用于表征待读取数据的起始位置的偏移地址;基于本次更新之前的偏移地址和所述读取数据量,从所述备份文件中读取待恢复数据块;
数据标记模块,用于针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
数据存储模块,用于按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,所述数据块读取模块包括:
地址更新子模块,用于在当前的所述备份文件对应的,且用于表征待读取数据的起始位置的偏移地址的基础上,增加所述读取数据量,得到更新后的偏移地址。
可选的,一种具体实现方式中,所述数据块读取模块包括:
地址范围确定子模块,用于基于本次更新之前的偏移地址和所述读取数据量,确定从所述备份文件中进行数据读取的地址范围;
数据块读取子模块,用于按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述数据块读取子模块具体用于:
利用无锁方式,按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述数据标记模块具体用于:
将读取该待恢复数据块时所基于的偏移地址确定为标记内容,并为所述待恢复数据设置所确定的标记内容;或者,
将从所述备份文件中进行数据读取的地址范围确定为标记内容,并为所述待恢复数据设置所确定的标记内容;其中,所述地址范围是根据读取该待恢复数据块时所基于的偏移地址和所述读取数据量确定的。
可选的,一种具体实现方式中,所述装置还包括:
文件缓存模块,用于在所述基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块之前,从用于存储所述备份文件的存储节点中,读取所述备份文件,并将所读取到的所述备份文件存储至第一预设缓存中;
所述数据块读取模块具体用于:基于并发方式,按照预定读取策略从所述第一预设缓存中存储的所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,
所述数据块读取模块具体用于:预设的各个解压缩线程基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;
所述数据标记模块具体用于:每一解压缩线程对所读取到的待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
所述数据存储模块具体用于:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,所述装置还包括:
数据缓存模块,用于在所述预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中之前,每一解压缩线程将设置有标记内容的所述待恢复数据存储至该解压缩线程对应的第二预设缓存中;
所述数据存储模块具体用于:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将所述第二预设缓存中各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,每个解压缩线程对应的第二预设缓存不同;数据存储模块具体用于:
预设的数据持久化线程轮巡各个解压缩线程对应的第二预设缓存,将各个第二预设缓存中的各个待恢复数据,按照标记内容连续的顺序,依次存储至预设的目标文件中。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的任一数据恢复方法的步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的任一数据恢复方法的步骤。
第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面提供的任一数据恢复方法的步骤。
本发明实施例有益效果:
以上可见,应用本发明实施例提供的方案,在对数据库中待恢复的备份文件进行恢复时,可以基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块,进而,针对每一待恢复数据块,便可以对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容;这样,便可以按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
基于此,应用本发明实施例提供的方案,由于各个待恢复数据块是并发方式且基于预定读取策略读取的,因此,相较于顺序读取各个数据块的方式,针对待恢复的备份文件中的连续的各个数据块,无需等待上一数据块读取完成后,再继续读取下一数据块,而可以同时进行多个数据块的读取;并且,基于各个标记内容可以保证将各个待恢复数据有序写入至目标文件,保证数据恢复的有效性。可见,通过本方案,可以缩短上述备份文件中的各个数据块的读取时间,从而,减少数据恢复的耗时,提高数据恢复的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为相关技术中的数据恢复方法的示意图;
图2为本发明实施例提供的一种数据恢复方法的流程示意图;
图3为本发明实施例提供的另一种数据恢复方法的流程示意图;
图4为本发明实施例提供的再一种数据恢复方法的流程示意图;
图5为本发明实施例提供的又一种数据恢复方法的流程示意图;
图6为本发明实施例提供的一种数据恢复方法的实际应用的示意图;
图7为本发明实施例提供的一种数据恢复装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,数据恢复方法包括:针对数据库中待恢复的备份文件,从该备份文件中顺序读取同等大小的数据块,并对所读取到的各个数据块进行解压缩,从而,按照各个数据块的读取顺序,依次将对各个数据块进行解压缩所得到的数据存储到目标文件中。然而,在上述相关技术中,由于采用顺序读取且按照读取顺序依次存储的方式,无疑存在数据恢复耗时较高的问题。
为了解决上述技术问题,本发明实施例提供了一种数据恢复方法。
其中,该数据恢复方法可以适用于任一需要对数据库中的备份文件进行恢复的应用场景。并且,该数据恢复方法可以应用于与存在待恢复的备份文件的数据库相关联的任一电子设备,例如,可以是数据库的管理节点、也可以是用于存储待恢复的备份文件的数据节点、还可以是用于存储对待恢复的备份文件进行数据恢复后得到的目标文件的数据节点等,这都是合理的。为了便于描述,以下将本发明实施例提供的一种数据恢复方法的执行主体简称为电子设备。
本发明实施例提供的一种数据恢复方法,可以包括如下步骤:
基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;其中,所述预定读取策略包括:基于预设的读取数据量,更新所述备份文件对应的且用于表征待读取数据的起始位置的偏移地址;基于本次更新之前的偏移地址和所述读取数据量,从所述备份文件中读取待恢复数据块;
针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
基于此,应用本发明实施例提供的方案,由于各个待恢复数据块是并发方式且基于预定读取策略读取的,因此,相较于顺序读取各个数据块的方式,针对待恢复的备份文件中的连续的各个数据块,无需等待上一数据块读取完成后,再继续读取下一数据块,而可以同时进行多个数据块的读取;并且,基于各个标记内容可以保证将各个待恢复数据有序写入至目标文件,保证数据恢复的有效性。可见,通过本方案,可以缩短上述备份文件中的各个数据块的读取时间,从而,减少数据恢复的耗时,提高数据恢复的效率。
下面结合附图,对本发明实施例提供的一种数据恢复方法进行具体说明
图2为本发明实施例提供的一种数据恢复方法的流程示意图,如图2所示,该方法可以包括如下步骤:
S201:基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;
其中,预定读取策略包括:基于预设的读取数据量,更新备份文件对应的且用于表征待读取数据的起始位置的偏移地址;基于本次更新之前的偏移地址和读取数据量,从备份文件中读取待恢复数据块;
针对待恢复的备份文件,可以首先确定该备份文件中待恢复的数据,进而,在对该备份文件进行恢复时,便需要读取该备份文件中待恢复的数据,并将这些待恢复的数据存储至目标文件中,以完成对该备份文件的恢复。
其中,待恢复的备份文件中的待恢复的数据即为待恢复的备份文件中的待读取数据。进而,可以确定备份文件中的待读取数据的起始位置的偏移地址,即确定备份文件对应的,且用于表征待读取数据的起始位置的偏移地址,并且,可以记录所确定的该偏移地址。
此外,在从备份文件中读取待读取数据时,可以按照预设的读取数据量进行读取,即每次读取数据量为该预设的读取数据量的数据,进而,每次所读取的数据可以视为一个数据量为预设的读取数据量的数据块。
这样,便可以基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块。也就是说,可以在并发方式下,基于预设的读取数据量,更新备份文件对应的且用于表征待读取数据的起始位置的偏移地址;并且,在每次更新上述偏移地址之后,基于本次更新之前的偏移地址和读取数据量,从备份文件中读取待恢复数据块。
其中,所谓并发方式是指:在操作系统中,一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程度都是在同一处理机上运行。示例性的,电子设备可以通过多个线来实现并发方式,当然并不局限于此。
这样,在从备份文件中读取待恢复数据块时,便可以从备份文件中同时读取多个待恢复数据块。进而,基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块的过程可以包括如下环节:
环节1:在开始对备份文件中的待读取数据进行恢复时,可以首先确定当前的备份文件对应的且用于表征待读取数据的起始位置的偏移地址,并记录该偏移地址。
环节2:在开始读取备份文件中的待读取数据时,首先获取当前所记录的偏移地址,并在获取该偏移地址之后,基于预设的读取数据量,更新所记录的偏移地址;进而,在对所记录的偏移地址进行更新之后,便可以基于所获取的本次更新之前的偏移地址和预设的读取数据量,从备份文件中读取数据量为预设的读取数据量的数据块,即从备份文件中读取待恢复数据块。
环节3:在上述环节2中从备份文件中读取待恢复数据块的同时,可以再次获取当前所记录的偏移地址,并在获取该偏移地址之后,基于预设的读取数据量,更新所记录的偏移地址;进而,在对所记录的偏移地址进行更新之后,便可以基于所获取的本次更新之前的偏移地址和预设的读取数据量,从备份文件中读取待恢复数据块。
这样,在上述环节2和环节3中从备份文件中读取待恢复数据块的过程中,存在重合的一段时间时间,则在该重合的时间段内,可以同时进行两个待恢复数据块的读取。
进而,在上述环节3之后,可以循环获取当前所记录的偏移地址,并在获取该偏移地址之后,基于预设的读取数据量,更新所记录的偏移地址;进而,在对所记录的偏移地址进行更新之后,便可以基于所获取的本次更新之前的偏移地址和预设的读取数据量,从备份文件中读取待恢复数据块的过程,完成对备份文件中的各个待读取数据块的读取。
基于此,由于可以同时读取备份文件中的多个待读取数据块,而无需在上一个待读取数据块读取完成后,再继续读取下一个待读取数据块,因此,可以缩短上述备份文件中的各个数据块的读取时间,从而,减少数据恢复的耗时,提高数据恢复的效率。
S202:针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容;
在读取到每一待恢复数据块后,便可以对该待读取数据块进行解压缩,得到待恢复数据,则该待恢复数据即为需要存储至目标文件中的数据。
其中,为了保证最终所得到的目标文件的有效性,则在将各个待恢复数据存储至目标文件中时,各个待恢复数据在目标文件中的存储顺序,应该与各个待恢复数据对应的待恢复数据块在备份文件中的顺序相同。
由于读取各个待恢复数据块时所基于的偏移地址可以表征各个待恢复数据块在备份文件中的起始位置的偏移地址,则读取各个待恢复数据块时所基于的偏移地址可以表征各个待恢复数据块在备份文件中的存储顺序,进而,针对各个待恢复数据,读取每个待恢复数据对应的待恢复数据块时所基于的偏移地址,便可以表征每个待恢复数据在目标文件中的存储顺序。
这样,针对每一待恢复数据块,在对该待恢复数据块进行解压缩,得到待恢复数据后,便可以根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容。
也就是说,为每个待恢复数据所设置的标记内容可以表征该待恢复数据在目标文件中的存储顺序,进而,在将各个待恢复数据存储至目标文件中时,便可以按照各个标记内容所表征的存储顺序,依次存储各个待恢复数据。
其中,上述标记内容可以为读取待恢复数据块时所基于的偏移地址,也可以为基于读取待恢复数据块时所基于的偏移地址和读取数据量确定的地址范围,当然,还可以是其他的根据读取待恢复数据块时所基于的偏移地址所确定的内容,例如,根据读取待恢复数据块时所基于的偏移地址的前后顺序,确定的阿拉伯数字,其中,读取待恢复数据块时所基于的偏移地址越靠前,则所确定的阿拉伯数字越小,反之,读取待恢复数据块时所基于的偏移地址越靠后,则所确定的阿拉伯数字越大。这都是合理的。
可选的,一种具体实现方式中,上述根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容的步骤,可以包括如下步骤A1:
步骤A1:将读取该待恢复数据块时所基于的偏移地址确定为标记内容,并为待恢复数据设置所确定的标记内容。
在本具体实现方式中,针对每一待恢复数据块,在对该待恢复数据块进行解压缩,得到待恢复数据后,可以将读取该待恢复数据块时所基于的偏移地址设置为该待恢复数据的标记内容。
可选的,另一种具体实现方式中,上述根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容的步骤,可以包括如下步骤A2:
步骤A2:将从备份文件中进行数据读取的地址范围确定为标记内容,并为待恢复数据设置所确定的标记内容;
其中,地址范围是根据读取该待恢复数据块时所基于的偏移地址和读取数据量确定的。
在本具体实现方式中,针对每一待恢复数据块,在对该待恢复数据块进行解压缩,得到待恢复数据后,可以首先根据读取该待恢复数据块时所基于的偏移地址和读取数据量,确定从备份文件中进行数据读取的地址范围,从而,将该所确定的地址范围设置为该待恢复数据的标记内容。
其中,根据读取该待恢复数据块时所基于的偏移地址和读取数据量,确定从备份文件中进行数据读取的地址范围的方式可以为:在读取该待恢复数据块时所基于的偏移地址的基础上,增加读取数据量,得到目标地址,则该偏移地址和该目标地址之间的地址范围,即为从备份文件中进行数据读取的地址范围。
S203:按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
在为解压缩得到的各个待恢复数据设置标记内容后,由于为每个待恢复数据所设置的标记内容可以表征该待恢复数据在目标文件中的存储顺序,因此,便可以按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
其中,所谓将各个待恢复数据存储至预设的目标文件中是指:将各个待恢复数据持久化到目标文件中,从而,完成对待恢复数据的恢复。
需要说明的是:在上述步骤S201的执行过程中,对于已经读取完成的待恢复数据块,可以继续执行上述步骤S202,也就是说,上述步骤S201和步骤S202可以同时执行,只是二者所针对的待读取数据块不同;进而,在上述步骤S201和/或步骤S202的执行过程中,对于解压缩得到的且已经设置有标记内容的待恢复数据,可以继续执行上述步骤S202,也就是说,上述步骤S203可以与步骤S201以及步骤S202中的至少一步骤同时执行,只是,各个步骤所针对的对象不同。
在这种情况下,可选的,在完成对所读取到的待恢复数据块的解压缩,并为解压缩得到的待恢复数据设置标记内容后,可以将设置有标记内容的待恢复数据存储至预设的存储区域中,以使设置有标记内容的待恢复数据存储在该存储区域中等待被存储至目标文件中。例如,可以将设置有标记内容的待恢复数据存储至预设的缓存空间中等。
基于此,应用本发明实施例提供的方案,由于各个待恢复数据块是并发读取的,因此,相较于顺序读取各个数据块的方式,针对待恢复的备份文件中的连续的各个数据块,无需等待上一数据块读取完成后,再继续读取下一数据块,而可以同时进行多个数据块的读取。这样,便可以缩短上述备份文件中的各个数据块的读取时间,从而,减少数据恢复的耗时,提高数据恢复的效率。
下面,对上述步骤S201中的预定读取策略进行举例说明。
可选的,一种具体实现方式中,上述预定读取策略中,基于预设的读取数据量,更新备份文件对应的且用于表征待读取数据的起始位置的偏移地址的步骤,可以包括如下步骤B1:
步骤B1:在当前的备份文件对应的,且用于表征待读取数据的起始位置的偏移地址的基础上,增加读取数据量,得到更新后的偏移地址。
在本具体实现方式中,由于每次所读取的待恢复数据块的数据量为预设的读取数据量,也就是说,针对备份文件中的每个待读取数据块。该待读取数据块的下一待读取数据块的起始地址的偏移地址,与该待读取数据块的起始地址的偏移地址相差上述预设的读取数据量,因此,在该待读取数据块的起始地址的偏移地址的基础上,增加预设的读取数据量,便可以得到该待读取数据块的下一待读取数据块的起始地址的偏移地址。
这样,由于当前的偏移地址为:当前的备份文件对应的,且用于表征待读取数据的起始位置的偏移地址,则在该当前的偏移地址的基础上,增加读取数据量,所得到的偏移地址,即为在基于当前的偏移地址和预设的数据量读取待恢复数据块时,下一待读取的待恢复数据块的起始位置的偏移地址。从而,在每次更新当前的偏移地址时,便可以在当前的备份文件对应的,且用于表征待读取数据的起始位置的偏移地址的基础上,增加读取数据量所得到的偏移地址,即为更新后的偏移地址。
可选的,一种具体实现方式中,上述预定读取策略中,基于本次更新之前的偏移地址和读取数据量,从备份文件中读取待恢复数据块的步骤,可以包括如下步骤B2-B3:
步骤B2:基于本次更新之前的偏移地址和读取数据量,确定从备份文件中进行数据读取的地址范围;
步骤B3:按照地址范围,从备份文件中读取待恢复数据块。
在本具体实现方式中,本次更新之前的偏移地址为:所要读取的待恢复数据块的起始地址的偏移地址,预设的读取数据量为:所要读取的待恢复数据块的数据量,则在本次更新之前的偏移地址上增加上述读取数据量,便可以得到所要读取的待恢复数据块的终止地址的偏移地址,进而,依次读取的待恢复数据块即为:备份文件中,由该起始地址的偏移地址开始,至该终止地址的偏移地址停止的数据块。
这样,便可以基于本次更新之前的偏移地址和读取数据量,确定从备份文件中进行数据读取的地址范围,且该地址范围为:从上述起始地址的偏移地址指向终止地址的偏移地址的地址范围。
进而,便可以按照上述所确定的地址范围,从备份文件中读取待恢复数据块,即读取备份文件中,由该起始地址的偏移地址开始,至该终止地址的偏移地址停止的数据块,得到待恢复数据块。
可选的,上述步骤B3,可以包括如下步骤B31:
步骤B31:利用无锁方式,按照地址范围,从备份文件中读取待恢复数据块。
其中,由于各个待恢复数据块是基于该待恢复数据块在备份文件中的偏移地址,从备份文件中读取的,而所记录的备份文件对应的,且用于表征待读取数据的起始位置的偏移地址会在每次读取待恢复数据块之间进行更新,所以,在读取各个待恢复数据块时,所利用的地址范围之间不会存在重复的范围,从而,不会造成数据的重复读取。也就是说,备份文件中正在被读取或者已经被读取过的数据不会被再次读取。
这样,在按照上述所确定的地址范围,从备份文件中读取待恢复数据块时,无需为了防止数据的重复读取,而对正在被读取或者已经被读取过的数据进行锁定,从而,可以在无锁方式下,按照上述所确定的地址范围,从备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,如图3所示,本发明实施例提供的一种数据恢复方法还可以包括如下在S200:
S200:从用于存储备份文件的存储节点中,读取备份文件,并将所读取到的备份文件存储至第一预设缓存中;
相应的,在本具体实现方式中,上述步骤S201,基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块的步骤,便可以包括如下步骤S201A:
S201A:基于并发方式,按照预定读取策略从第一预设缓存中存储的备份文件中读取待恢复数据块。
在本具体实现方式中,在需要对待恢复的备份文件进行恢复时,可以首先从用于存储该备份文件的存储节点中,读取该备份文件,进而,将所读取到的备份文件存储至第一预设缓存中。这样,便可以基于并发方式,按照预定读取策略从第一预设缓存中存储的备份文件中读取待恢复数据块。
其中,基于并发方式,按照预定读取策略从第一预设缓存中存储的备份文件中读取待恢复数据块的具体实现方式,与上述步骤S201的具体实现方式相同,在此不再赘述。
这样,在对上述备份文件进行恢复的过程中,由于是从第一预设缓存中读取备份文件中的待恢复数据块,从而,可以无需对用于存储该备份文件的存储节点进行频繁地访问,进而,可以避免对该存储节点中所存储的文件所可能造成的影响,例如,误读取备份文件之外的其他文件中的数据、误删其他文件等。
可以理解的,在电子设备的运行过程中,电子设备所执行的各个步骤,可以通过不同的线程实现。
基于此,电子设备中可以预先设置用于实现本发明实施例提供的一种数据恢复方法中的各个步骤的线程,从而,利用所预先设置的线程,实现对待恢复的备份文件的恢复。
可选的,一种具体实现方式中,如图4所示:
上述步骤S201,基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块,,可以包括如下步骤S201B:
S201B:预设的各个解压缩线程基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;
其中,各个解压缩线程在基于预设的读取数据量,更新所述备份文件对应的且用于表征待读取数据的起始位置的偏移地址的过程中,可以对该偏移地址进行加锁,以保证在一个时间点下偏移地址仅仅被一个解压缩线程读取及更新。
上述步骤S202,针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容,可以包括如下步骤S202A:
S202A:每一解压缩线程对所读取到的待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容;
上述步骤S203,按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中,可以包括如下步骤S203A:
S203A:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
在本具体实现方式中,电子设备中可以记录有备份文件对应的且用于表征待读取数据的起始位置的偏移地址。
这样,每个解压缩线程可以读取电子设备当前所记录的偏移地址,而在当前所记录的偏移地址在每次被读取后,便可以基于预设的读取数据量进行更新。在当前所记录的偏移地址更新后,该解压缩线程便可以基于所读取的本次更新之前的偏移地址和预设的读取数据量,从备份文件中读取待恢复数据块。
每个解压缩线程在读取到待恢复数据块后,便可以对所读取到的待恢复数据块进行解压缩,得到待恢复数据,并根据所读取到的偏移地址,为待恢复数据设置用于表征存储顺序的标记内容。
这样,在得到各个设置有标记内容的待恢复数据后,预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
其中,为了进一步减少数据恢复的耗时,提高数据恢复的效率,可以预设一个存储空间,以用于存储各个解压缩线程所得到的设置有标记内容的待恢复数据。这样,每个解压缩线程在得到设置有标记内容的待恢复数据后,可以直接将该待恢复数据存储至上述存储空间中,从而,每个解压缩无需在数据持久化线程将该待恢复数据存储至目标文件中之后,再去读取新的待恢复数据块,而是无论数据持久化线程是否将该待恢复数据存储至目标文件中,在将该待恢复数据存储至上述存储空间后,均可以直接再去读取新的待恢复数据块。通过该种方式,可以解决各个解压缩线程的短木板效应所导致的恢复耗时的问题,提升各个解压缩线程的并发吞吐。
基于此,可选的,如图5所示,本发明实施例提供的一种数据恢复方法中,还可以包括如下步骤S204:
S204:每一解压缩线程将设置有标记内容的待恢复数据存储至该解压缩线程对应的第二预设缓存中;
相应的,在本具体实现方式中,上述步骤S203A,预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中,可以包括如下步骤S203A1:
S203A1:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将第二预设缓存中各个待恢复数据存储至预设的目标文件中。
在本具体实现方式中,每一解压缩线程在得到设置有标记内容的待恢复数据后,便可以将该待恢复数据存储至该解压缩线程对应的第二预设缓存中。进而,预设的数据持久化线程便可以按照为各个待恢复数据设置的标记内容,将第二预设缓存中各个待恢复数据存储至预设的目标文件中。
这样,每个解压缩线程在将所得到的设置有标记内容的待恢复数据存储至所对应的第二预设缓存后,便可以直接再去读取新的待恢复数据块,而无需等待数据持久化线程将该待恢复数据存储至目标文件中。从而,在备份数据的恢复过程中,便可以减少每个解压缩线程等待所得到的设置有标记内容的待恢复数据被存储至目标文件中的耗时,从而,进一步减少数据恢复的耗时,提高数据恢复的效率。
可选的,不同的解压缩线程所对应的第二预设缓存可以是相同的缓存,也可以是不同的缓存。
基于此,可选的,一种具体实现方式中,每个解压缩线程对应的第二预设缓存不同;
相应的,在本具体实现方式中,上述步骤S203A1,预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将第二预设缓存中各个待恢复数据存储至预设的目标文件中,便可以包括如下步骤C:
步骤C:预设的数据持久化线程轮巡各个解压缩线程对应的第二预设缓存,将各个第二预设缓存中的各个待恢复数据,按照标记内容连续的顺序,依次存储至预设的目标文件中。
在本具体实现方式中,由于不同的解压缩线程对应的第二预设缓存不同,因此,数据持久化线程在存储各个解压缩线程所得到的各个设置有标记内容的待恢复数据时,便可以轮巡各个解压缩线程对应的第二预设缓存,从而,将各个第二预设缓存中的各个待恢复数据,按照标记内容连续的顺序,依次存储至预设的目标文件中。
为了便于理解上述本发明实施例提供的一种数据恢复方法,下面通过一个具体实例进行说明。
假设电子设备中设置有数据拷贝线程、第一预设缓存、解压缩线程1、解压缩线程2、解压缩线程3、第二预设缓存和数据持久化线程。其中,解压缩线程1、解压缩线程2和解压缩线程3构成解压缩线程组,且三个解压缩线程通过并发方式运行,以实现并发读取数据。并且,假设预设的读取数据量为N。
例如,如图6所示,图6中的备份数据BUFFER(缓存)即为第一预设缓存、三个解压缩框分别为解压缩线程1、解压缩线程2和解压缩线程3对应的解压缩过程,解压数据BUFFER即为第二预设缓存,数据文件为待恢复的备份文件。
基于此,对待恢复的备份文件进行恢复的过程如下:
环节1:数据拷贝线程从用于存储待恢复的备份文件的存储节点中,读取该备份文件,并将该备份文件存储至第一预设缓存中。
环节2:数据拷贝线程或者解压缩线程组中的任一线程,在指定存储位置,记录该备份文件对应的用于表征待读取数据的起始位置的初始的偏移地址为A。其中,解压缩线程组中的任一线程可以是预先指定出的。
环节3:针对解压缩线程1,若读取到上述偏移地址为A,则将当前所记录的偏移地址A更新为偏移地址A+N。之后,解压缩线程1基于偏移地址A和读取数据量N,从备份文件中读取待恢复数据块a0,对待恢复数据块a0进行解压缩,得到待恢复数据a1,设置待恢复数据a1的标记内容为偏移地址A,将标记有偏移地址A的待恢复数据a1存储至第二预设缓存中。接着,解压缩线程1可以再次读取当前所记录的偏移地址,并循环上述过程,直至将备份文件中的待读取数据全部读取完。
环节4:针对解压缩线程2,若读取到读取偏移地址为A+N,则将当前所记录的偏移地址A+N更新为偏移地址A+2N;之后,解压缩线程2基于偏移地址A+N和读取数据量N,从备份文件中读取待恢复数据块b0,对待恢复数据块b0进行解压缩,得到待恢复数据b1,设置待恢复数据b1的标记内容为偏移地址A+N,并将标记有偏移地址A+N的待恢复数据b1存储至第二预设缓存中。接着,解压缩线程2可以再次读取当前所记录的偏移地址,并循环上述过程,直至将备份文件中的待读取数据全部读取完。
环节5:针对解压缩线程3,若读取上述偏移地址为A+2N,则解压缩线程3将当前所记录的偏移地址A+2N更新为偏移地址A+3N;之后,解压缩线程3基于偏移地址A+2N和读取数据量N,从备份文件中读取待恢复数据块c0,对待恢复数据块c0进行解压缩,得到待恢复数据c1,设置待恢复数据c1的标记内容为偏移地址A+2N,并将标记有偏移地址A+2N的待恢复数据c1存储至第二预设缓存中。接着,解压缩线程3可以再次读取解压缩线程组当前所记录的偏移地址,并循环上述过程,直至将备份文件中的待读取数据全部读取完。
环节6:在上述各个环节的运行过程中,数据持久化线程按照第二预设缓存中,为各个待恢复数据设置的标记内容所表征的存储顺序,将第二预设缓存中的各个待恢复数据存储至目标文件中。
其中,数据持久化线程先将标记内容为偏移地址A的待恢复数据存储至目标文件中,再将标记内容为偏移地址A+N的待恢复数据连续存储至目标文件中,之后,将标记内容为偏移地址A+2N的待恢复数据连续存储至目标文件中,依次类推,直至将备份文件中的所有待读取数据存储至目标文件中。
需要强调的是:当存在多个待恢复的备份文件时,可以针对每个备份文件,执行上述本发明实施例提供的任一数据恢复方法的步骤,以实现对多个待恢复的备份数据的恢复。
相应于上述本发明实施例提供的一种数据恢复方法,本发明实施例提供了一种数据恢复装置。
图7为本发明实施例提供的一种数据恢复装置的结构示意图,如图7所示,该装置可以包括如下模块:
数据块读取模块710,用于基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;其中,所述预定读取策略包括:基于预设的读取数据量,更新所述备份文件对应的,且用于表征待读取数据的起始位置的偏移地址;基于本次更新之前的偏移地址和所述读取数据量,从所述备份文件中读取待恢复数据块;
数据标记模块720,用于针对每一待恢复数据块,对该待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
数据存储模块730,用于按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
基于此,应用本发明实施例提供的方案,由于各个待恢复数据块是并发方式且基于预定读取策略读取的,因此,相较于顺序读取各个数据块的方式,针对待恢复的备份文件中的连续的各个数据块,无需等待上一数据块读取完成后,再继续读取下一数据块,而可以同时进行多个数据块的读取;并且,基于各个标记内容可以保证将各个待恢复数据有序写入至目标文件,保证数据恢复的有效性。可见,通过本方案,可以缩短上述备份文件中的各个数据块的读取时间,从而,减少数据恢复的耗时,提高数据恢复的效率。
可选的,一种具体实现方式中,所述数据块读取模块710包括:
地址更新子模块,用于在当前的所述备份文件对应的,且用于表征待读取数据的起始位置的偏移地址的基础上,增加所述读取数据量,得到更新后的偏移地址。
可选的,一种具体实现方式中,所述数据块读取模块710包括:
地址范围确定子模块,用于基于本次更新之前的偏移地址和所述读取数据量,确定从所述备份文件中进行数据读取的地址范围;
数据块读取子模块,用于按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述数据块读取子模块具体用于:
利用无锁方式,按照所述地址范围,从所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,所述数据标记模块720具体用于:
将读取该待恢复数据块时所基于的偏移地址确定为标记内容,并为所述待恢复数据设置所确定的标记内容;或者,
将从所述备份文件中进行数据读取的地址范围确定为标记内容,并为所述待恢复数据设置所确定的标记内容;其中,所述地址范围是根据读取该待恢复数据块时所基于的偏移地址和所述读取数据量确定的。
可选的,一种具体实现方式中,所述装置还包括:
文件缓存模块,用于在所述基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块之前,从用于存储所述备份文件的存储节点中,读取所述备份文件,并将所读取到的所述备份文件存储至第一预设缓存中;
所述数据块读取模块710具体用于:基于并发方式,按照预定读取策略从所述第一预设缓存中存储的所述备份文件中读取待恢复数据块。
可选的,一种具体实现方式中,
所述数据块读取模块710具体用于:预设的各个解压缩线程基于并发方式,按照预定读取策略从备份文件中读取待恢复数据块;
所述数据标记模块720具体用于:每一解压缩线程对所读取到的待恢复数据块进行解压缩,得到待恢复数据,并根据读取该待恢复数据块时所基于的偏移地址,为所述待恢复数据设置用于表征存储顺序的标记内容;
所述数据存储模块730具体用于:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,所述装置还包括:
数据缓存模块,用于在所述预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将各个待恢复数据存储至预设的目标文件中之前,每一解压缩线程将设置有标记内容的所述待恢复数据存储至该解压缩线程对应的第二预设缓存中;
所述数据存储模块730具体用于:预设的数据持久化线程按照为各个待恢复数据设置的标记内容,将所述第二预设缓存中各个待恢复数据存储至预设的目标文件中。
可选的,一种具体实现方式中,每个解压缩线程对应的第二预设缓存不同;数据存储模块730具体用于:
预设的数据持久化线程轮巡各个解压缩线程对应的第二预设缓存,将各个第二预设缓存中的各个待恢复数据,按照标记内容连续的顺序,依次存储至预设的目标文件中。
相应于上述本发明实施例提供的一种数据恢复方法,本发明实施例还提供了一种电子设备,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801,通信接口802,存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现上述本发明实施例提供的任一数据恢复方法的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述本发明实施例提供的任一数据恢复方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述本发明实施例提供的任一数据恢复方法的步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种OTA升级失败回退版本方法