一种基于时间点的数据库恢复方法及系统与流程

文档序号:11176989阅读:276来源:国知局
一种基于时间点的数据库恢复方法及系统与流程

本发明涉及数据库技术领域,尤其涉及一种数据库恢复技术领域。



背景技术:

企业收集的数据量以惊人的速度增加,很多数据库能够在出现损坏或某些系统故障后恢复数据并重建,而有些不能。即使数据库能够被重建,性能也很低下,可能需要数天或数周来完成,这取决于要还原的数据量。

为了缓解这一问题,企业通常通过复制或拷贝数据来创建多个数据库副本,以确保不会因为任何一个服务器故障而导致数据不可用。这对于服务器故障、自然灾难、断电等情况来说是很好的办法。但某些情况下,数据库物理上完好无损,但错误已经影响到了数据,并且不能轻易地通过补偿操作来修正。通常这是由于人为的操作错误,或应用程序中隐藏的未被发现的编程错误而引起。因此如果数据库能恢复到一个指定的时间点,在此时间点数据库的状态是好的,这将十分有用。

目前将数据库恢复到指定时间主要有两种机制:1)一些数据库通过使用预写日志(wal)、审计重做或撤消来支持此功能。2)其他一些数据库允许使用数据快照作为一个大致的起始点,然后使用上述的审计回放机制来完成此操作。以上两种机制存在如下不足:首先,这两种机制都需要在数据恢复时保证wal可用,因此需要集成到存储引擎内部,以确保wal文件不会被过早删除。而对于独立于存储引擎的应用系统则无法直接控制wal文件,进而也无法保证wal文件中的变化数据能够被存储而不会被删除。其次,一些预写日志wal中因无法添加辅助信息而导致其中不包含回放所需的所有数据,例如,对于单独一张表上所做的特定版本的快照更改,或者特定catalog的更改或元数据操作,通常wal都不会有诸如此类的相关辅助信息。

因此,需要一种恢复方法,使在独立于存储引擎的情况下也能保证要回放的变化数据被存储,需要一种能添加辅助信息的文件,使得文件中能够包含所需的所有数据,以便能够更好地对数据库进行恢复。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种基于时间点的数据库恢复方法及系统,采用与存储引擎无关的变化文件替代预写日志wal文件,能够确保在不受存储引擎控制的情况下,也能使变化数据被存储,并在恢复过程中能够添加所需的辅助信息。

第一方面,本发明提供了一种基于时间点的数据库恢复方法,所述方法包括:

建立数据库的快照集;

捕捉所述数据库中的变化数据,并将所述变化数据存储至变化文件中;

在所述变化文件中添加辅助信息;

将所述变化文件与所述快照集关联,形成恢复集;

根据所述恢复集,将所述数据库恢复到选定时间点。

进一步地,所述快照集包括第一时间点对应的第一快照。

进一步地,所述将所述变化文件与所述快照集关联,形成恢复集,具体包括:将所述变化文件与所述第一快照关联,形成恢复集。

进一步地,所述根据所述恢复集,将所述数据库恢复到选定时间点,具体包括:利用所述第一快照,将所述数据库恢复到所述第一时间点;回放所述变化文件中的第一变化数据;其中,所述第一变化数据为所述变化文件中从所述第一时间点至所述选定时间点的时间范围以内产生的变化数据。

进一步地,所述快照集包括:第一时间点对应的第一快照,多个中间时间点分别对应的多个中间部分快照;其中,所述中间时间点为所述第一时间点至当前时间点之间的建立了快照的一个时间点。

进一步地,所述将所述变化文件与所述快照集关联,形成恢复集,具体包括:

查找第二时间点对应的第二快照;其中,所述第二时间点为所述选定时间点之前距离所述选定时间点最近的中间时间点,所述第二快照为所述第二时间点对应的中间部分快照;

将所述变化文件与所述第二快照关联,形成恢复集。

进一步地,所述根据所述恢复集,将所述数据库恢复到选定时间点,具体包括:

利用所述第二快照,将所述数据库恢复到所述第二时间点;

回放所述变化文件中的第二变化数据;其中,所述第二变化数据为所述变化文件中从所述第二时间点至所述选定时间点的时间范围以内产生的变化数据。

第二方面,本发明还提供了一种基于时间点的数据库恢复系统,所述系统包括:数据备份模块,变化捕捉模块,信息添加模块,数据关联模块,数据恢复模块;其中,所述数据备份模块与所述变化捕捉模块连接,所述变化捕捉模块与所述信息添加模块连接,所述信息添加模块与所述数据关联模块,所述数据关联模块与所述数据恢复模块连接;

所述数据备份模块,用于创建数据库的快照集;

所述变化捕捉模块,用于捕捉所述数据库中的变化数据,并将所述变化数据存储至变化文件中;

所述信息添加模块,用于在变化文件中添加辅助信息;其中,所述辅助信息包括文件存储格式、文件存储路径;

所述数据关联模块,用于将所述变化文件与所述快照集关联,形成恢复集;

所述数据恢复模块,用于根据所述恢复集,将数据库恢复到选定时间点。

进一步地,所述快照集包括第一时间点对应的第一快照。

进一步地,所述数据关联模块,具体用于:将所述变化文件与所述第一快照关联,形成恢复集。

由上述技术方案可知,本发明提供一种基于时间点的数据库恢复方法及系统,采用与存储引擎无关的变化文件替代预写日志wal文件,能够确保在不受存储引擎控制的情况下,也能使变化数据被存储,并在恢复过程中能够添加所需的辅助信息,进而能够更好地将数据库恢复到任意一个选定时间点。

附图说明

图1为本发明提供的基于时间点的数据库恢复方法的流程示意图。

图2为本发明提供的基于时间点的数据库恢复方法的实例示意图。

图3为本发明提供的基于时间点的数据库恢复系统的结构示意图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

实施例一

图1示出了本发明实施例一提供的基于时间点的数据库恢复方法的流程示意图。如图1所示,一种基于时间点的数据库恢复方法,包括:

步骤s1,建立数据库的快照集;

步骤s2,捕捉所述数据库中的变化数据,并将所述变化数据存储至变化文件中;

步骤s3,在所述变化文件中添加辅助信息;

步骤s4,将所述变化文件与所述快照集关联,形成恢复集;

步骤s5,根据所述恢复集,将所述数据库恢复到选定时间点。

本实施例的具体技术方案如下:

步骤s1,建立数据库的快照集。

通过建立数据库的快照集,来实现对所述数据库的备份,可以对所述数据集做一次备份,此时所述快照集仅包括第一时间点对应的第一快照;也可以对所述数据库做多次备份或周期性备份,此时所述快照集包括:第一时间点对应的第一快照,以及多个中间时间点分别对应的多个中间部分快照。其中,所述中间时间点为所述第一时间点至当前时间点之间建立过快照的一个时间点,没有建立过快照的时间均不属于本发明所述的中间时间点的概念范畴。通过多次备份和周期性备份,基于任何时间点的恢复都不需要回放太多的变化数据,通常恢复到一个完整的备份或快照,一个完整的备份或快照之后不久的状态,比恢复到大量变化操作后的状态更快。

步骤s2,捕捉所述数据库中的变化数据,并将所述变化数据存储至变化文件中。

快照集建立之后,每个dml操作产生的变化数据,如插入、修改、删除产生的变化数据,都在写入存储层之前被捕捉,并被存储至变化文件中。

每个变化文件包含多种数据信息,以便于判断对于一个给定的恢复操作,哪些数据信息是需要被回放的。变化文件是独立于存储引擎存在的,能够由产品控制和维护的文件,而不受本地资源管理器的控制,可避免被过早的删除。采用该文件取代本地wal文件,本地wal文件则不再被使用,从而减少了磁盘空间,且即使对本地wal结构或协议并不十分了解也可确保数据变化被存储。

每个变化文件只包含特定资源(比如物理表)的变化数据,同时每个资源都是独立的并有自己的变化文件,因此对不同资源可同时执行恢复操作,互不影响,也可以按照一定的顺序先后执行恢复操作,对于先后顺序的选择以能达到最佳性能为准。

步骤s3,在所述变化文件中添加辅助信息。

其中,所述辅助信息包括应用程序的相关信息,如文件存储格式、文件存储路径等。通过在所述变化文件中添加上述辅助信息,使文件中包含有比通常使用的wal文件更多的数据,从而允许应用程序将一个变化文件与对应的快照相关联,可确保回放时能够更方便的处理存储在其中的变化数据,这是本地wal文件无法实现的。

步骤s4,将所述变化文件与所述快照集关联,形成恢复集。

可选地,当所述快照集中仅包括第一快照时,步骤s4具体包括:将所述变化文件与所述第一快照关联,形成恢复集。

可选地,当所述快照集中包括第一快照和多个中间部分快照时,步骤s4具体为:查找第二时间点对应的第二快照;将所述变化文件与所述第二快照关联,形成恢复集。其中,所述第二时间点为选定时间点之前距离选定时间点最近的中间时间点,所述第二快照为所述第二时间点对应的中间部分快照。

将变化文件与对应的快照相关联,再进行恢复,可以避免在恢复操作中,将一个变化文件应用到错误的快照版本上。

步骤s5,根据所述恢复集,将所述数据库恢复到选定时间点。

恢复集形成后,即可根据所述恢复集,对数据库进行恢复操作。

可选地,当所述快照集中仅包括第一快照时,步骤s5具体包括:利用所述第一快照,将所述数据库恢复到第一时间点;回放所述变化文件中的第一变化数据。其中,所述第一变化数据为所述变化文件中从第一时间点至选定时间点的时间范围以内产生的变化数据。

对于不同资源,均可通过上述方式进行恢复,例如,对于物理表,可利用所述第一快照,将所述数据库的物理表恢复到第一时间点对应的版本,具体地,可删除数据库中现有的表,用恢复集里的第一快照来替换,以该版本为基线版本,依次读取变化文件中的第一变化数据,将该第一变化数据应用到数据库中,第一变化数据在数据库中的顺序与其在变化文件中的顺序相同。

可选地,当所述快照集中包括第一快照和多个中间部分快照时,步骤s5具体包括:利用所述第二快照,将所述数据库恢复到第二时间点;回放所述变化文件中的第二变化数据。其中,所述第二变化数据为所述变化文件中从第二时间点至选定时间点的时间范围以内产生的变化数据。

对于不同资源,均可通过上述方式进行恢复,例如,对于物理表,可利用所述第二快照,将所述数据库的物理表恢复到第二时间点对应的版本,具体地,可删除数据库中现有的表,用恢复集里的第二快照来替换,以该版本为基线版本,依次读取变化文件中的第二变化数据,将该第一变化数据应用到数据库中,第二变化数据在数据库中的顺序与其在变化文件中的顺序相同。

通过上述方法,在确定了恢复集和选定时间点后,任何数据库都可以被精确地还原到选定时间点的状态。

下面结合图2具体举例说明,图2用不同的横线代表不同的物理表:表1、表2、表3、表4和表5,用竖线代表不同快照对应的时间点,用竖线的位置来表示某个快照具体是哪个物理表对应的快照,用折线代表对数据库所做的dml操作,每个dml操作都会产生相应的变化数据,并存入变化文件。具体地,图2中所示时间轴上的10:00为第一时间点,10:00对应的竖线代表第一快照;11:00和12:30为两个中间时间点,11:00和12:30对应的竖线分别代表表2在11:00处对应的中间部分快照、表4在12:30处对应的中间部分快照。

若选12:00为选定时间点,也是要恢复的时间点,则对于表1来说,在12:00之前只有第一快照,将第一快照与变化文件关联形成恢复集。根据恢复操作进行恢复时,首先将表1利用第一快照恢复到10:00所在的状态,然后从10:00开始回放变化数据,直至回放到12:00,即完成了对表1的整个恢复操作,所回放的这部分变化数据即为第一变化数据。

对于表2来说,在12:00之前有两个快照,分别是10:00的第一快照和11:00的中间部分快照,其中,11:00的中间部分快照也是在12:00之前距离该选定时间点最近的快照,即第二快照,将第二快照与变化文件关联形成恢复集。根据恢复操作进行恢复时,首先将表2利用第二快照恢复到11:00所在的状态,然后从11:00开始回放变化数据,直至回放到12:00,即完成了对表1的整个恢复操作,所回放的这部分变化数据即为第二变化数据。

对于表3、表4、表5,其恢复操作的方式与表1相同,其中,表4在12:30时虽然有中间部分快照,但该快照在选定的时间点12:00之后,因此不能作为第二快照使用,同时,12:00以后的变化数据因为是在选定时间点之后产生的,也不能在恢复操作中使用。

基于以上内容,本发明实施例一可以实现的技术效果为:采用与存储引擎无关的变化文件替代预写日志wal文件,能够确保在不受存储引擎控制的情况下,也能使变化数据被存储,并在恢复过程中能够添加所需的辅助信息,进而能够更即地恢复事务上一致的数据库到任意一个选定时间点。

实施例二

对本发明实施例一对应地,图3示出了本发明实施例提供的一种基于时间点的数据库恢复系统的结构示意图。如图3所示,所述系统包括:数据备份模块101,变化捕捉模块102,信息添加模块103,数据关联模块104,数据恢复模块105。所述数据备份模块101与所述变化捕捉模块102连接,所述变化捕捉模块102与所述信息添加模块103连接,所述信息添加模块103与所述数据关联模块104,所述数据关联模块104与所述数据恢复模块105连接。

所述数据备份模块101,用于创建数据库的快照集,对所述数据库进行备份;所述数据备份模块101通过创建数据库的快照集,来实现对所述数据库进行备份,其中,所述快照集可以仅包括第一时间点对应的第一快照,也可以包括多个快照,即第一时间点对应的第一快照,以及多个中间时间点分别对应的多个中间部分快照。

所述变化捕捉模块102,用于捕捉所述数据库中的变化数据,并将所述变化数据存储至变化文件中。所述变化捕捉模块102在变化数据被写入存储层之前被捕捉,并将所述变化数据存储至变化文件。

所述信息添加模块103,用于在变化文件中添加辅助信息;其中,所述辅助信息包括应用程序的相关信息,如文件存储格式、文件存储路径等。采用信息添加模块103在所述变化文件中添加上述辅助信息,使文件中包含有比通常使用的wal文件更多的数据,从而允许应用程序将一个变化文件与对应的快照相关联,可确保回放时能够更方便的处理存储在其中的变化数据,这是本地wal文件无法实现的。

所述数据关联模块104,用于将所述变化文件与所述快照集关联,形成恢复集。具体用于:当所述快照集包括第一快照时,将所述变化文件与所述第一快照关联,形成恢复集;当所述快照集中包括第一快照和多个中间部分快照时,查找第二时间点对应的第二快照,将所述变化文件与所述第二快照关联,形成恢复集。

所述数据恢复模块105,用于根据所述恢复集,将数据库恢复到选定时间点。具体用于:当所述快照集中仅包括第一快照时,利用所述第一快照,将所述数据库恢复到第一时间点,然后回放所述变化文件中的第一变化数据;当所述快照集中包括第一快照和多个中间部分快照时,利用所述第二快照,将所述数据库恢复到第二时间点,然后回放所述变化文件中的第二变化数据。

优选地,所述数据恢复模块105包括恢复引擎和回放引擎,所述恢复引擎与所述回放引擎连接,并与所述数据关联模块104连接。所述恢复引擎用于执行恢复操作,具体用于利用所述第一快照,将所述数据库恢复到第一时间点,或利用所述第二快照,将所述数据库恢复到第二时间点。所述回放引擎用于执行回放操作,具体用于:当所述数据库被恢复到第一时间点时,回放所述变化文件中的第一变化数据,当所述数据库被恢复到第二时间点时,回放所述变化文件中的第二变化数据。

基于以上内容,本发明实施例二可以达到的技术效果是:所述系统采用与存储引擎无关的变化文件替代预写日志wal文件,能够确保在不受存储引擎控制的情况下,也能使变化数据被存储,并在恢复过程中能够添加所需的辅助信息,进而能够更好地恢复事务上一致的数据库到任意一个选定时间点。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1