恢复数据库的页面

申请号 CN201380071875.4 申请日 2013-01-30 公开(公告)号 CN104937556A 公开(公告)日 2015-09-23
申请人 惠普发展公司; 有限责任合伙企业; 发明人 G.格雷夫; H.库诺;
摘要 检测包含已经被备份到备份介质的 数据库 的至少一部分的存储介质的故障。响应于检测到故障,对包括关于数据库而实施的事务的日志进行分析。在从备份介质对数据库的部分的恢复完成之前运行 访问 数据库的事务。当单独页面被运行的事务访问时,实施单独页面的恢复。
权利要求

1.一种方法,包括:
检测包含已经被备份到备份介质的数据库的至少一部分的存储介质的故障;
响应于检测到故障,对包括关于数据库而实施的事务的日志进行分析;
在从备份介质对数据库的部分的恢复完成之前运行访问数据库的事务;以及当单独页面被运行的事务访问时,调用单独页面的恢复。
2.根据权利要求1所述的方法,还包括:
响应于检测到故障,将来自备份介质的备份数据的至少一部分作为还原的数据而拷贝到替代介质。
3.根据权利要求1所述的方法,其中调用单独页面的恢复对还原的数据进行更新。
4.根据权利要求1所述的方法,其中调用单独页面中特定一个的恢复包括从备份到备份介质的数据检索一个版本的特定页面,并且通过使用日志中的信息而向该版本的特定页面应用改变的重做。
5.根据权利要求1所述的方法,其中分析日志标识重做恢复操作和撤销恢复操作,其中调用单独页面的恢复包括实施重做和撤销恢复操作中的所选一个。
6.根据权利要求5所述的方法,其中撤销恢复操作中的至少一个被用于对在存储介质故障之前没有交托的数据改变进行回滚。
7.根据权利要求5所述的方法,还包括响应于检测到运行的事务中的至少一个具有与在存储介质故障的时候运行的事务的冲突而实施撤销恢复操作中的至少一个。
8.根据权利要求1所述的方法,还包括:
使用自修复B树而存储数据库的页面,其中实施运行的事务中的至少一个涉及遍历自修复B树;以及
在遍历期间使用自修复B树中的信息以确定数据库的单独页面不是最新的。
9.一种系统,包括:
用以存储数据库的存储介质;
至少一个处理器;以及
在至少一个处理器上可执行的恢复模,用以:
接收存储介质的故障的指示;
响应于故障的指示而开始还原操作,所述还原操作从数据库的备份中还原数据,并且还原操作包括:
从备份向替代介质拷贝数据;
从记录了存储介质故障之前的事务的恢复日志中标识重做恢复操作和撤销恢复操作;
使得在还原操作的完成之前运行事务;以及
基于由运行的事务对数据库的访问而按需实施所标识的重做恢复操作和撤销恢复操作中的所选一个。
10.根据权利要求9所述的系统,其中恢复日志被分区成多个分段,并且其中标识重做和撤销恢复操作基于分析少于多个分段中的全部。
11.根据权利要求9所述的系统,其中标识基于分析恢复日志,并且其中分析检测恢复日志中的废弃的撤销和重做信息。
12.根据权利要求9所述的系统,其中在实施重做和撤销恢复操作中任一个之前运行事务。
13.根据权利要求9所述的系统,其中重做恢复操作中的每一个将重复对数据所做的改变,并且撤销恢复操作中的每一个将对事务进行回滚。
14.一种包括至少一个机器可读存储介质的物品,所述机器可读存储介质存储了指令,所述指令在执行时使得系统:
检测包含已经被备份到备份介质的数据库的至少一部分的存储介质的故障;
响应于检测到故障,从备份介质向替代介质拷贝备份数据;
响应于检测到故障,对包括关于数据库而实施的事务的日志进行分析,其中分析标识用以重做对数据的改变的操作和用以撤销事务的操作;
在从备份介质对数据库的部分的恢复完成之前运行访问数据库的事务;以及在页面被运行的事务访问时,调用重做操作和撤销操作中所选的一个。
15.根据权利要求14所述的物品,其中指令在执行时使系统:
使用自修复B树来存储数据库的页面,其中实施运行的事务中的至少一个涉及遍历自修复B树;以及
在遍历期间使用自修复B树中的信息以确定数据库的单独页面不是最新的。

说明书全文

恢复数据库的页面

背景技术

[0001] 数据库可以存储在具有一个或多个存储设备的存储系统中。存储设备的示例可以包括基于盘的存储设备、集成电路存储设备等等。
[0002] 由于存储设备的故障所引起的数据丢失是关注点。为了解决存储设备的故障的可能性,可以实施数据库中数据的备份。备份可以包括全备份,其中数据库的整体被拷贝到备份存储系统。备份还可以包括差异或增量备份,其中只有自从上一次备份以来已经改变的数据库数据被拷贝到备份存储系统。由于数据库的大小已经增加,与实施备份操作以及还原操作(从数据备份中还原数据)相关联的时间可能是相对长的。附图说明
[0003] 关于以下各图描述了一些实施例:图1是包括数据库系统和用以备份数据库系统的数据的备份系统的示例布置的框图
图2是根据一些实现方式的还原操作的流程图
图3是根据另外的实现方式的在瞬时还原过程中的数据库系统和备份存储系统的操作的示意图;以及
图4是根据另外的实现方式的在数据库管理模、瞬时还原模块和备份存储系统之中的交互的示意图。

具体实施方式

[0004] 与从数据库的备份拷贝中恢复相对大的数据库相关联的挑战是还原操作可能花费相对长的时间来完成。因而,在用于存储数据库的系统中的至少一个存储设备的故障之后,在还原操作完成的延长的时间段内用户可能不能够访问数据库。
[0005] 根据一些实现方式,提供“瞬时”还原以允许在还原操作的完成之前访问数据库,所述还原操作被实施来从用于存储数据库的存储介质的至少一个存储设备的故障中还原数据库。数据库可以指代在表中存储数据的关系数据库。可替换地,数据库可以指代能够存储根据其它格式的数据或者非结构化(没有根据任何指定格式或方案而被结构化)的数据的数据储存库。
[0006] 数据库的瞬时还原使得数据库在还原操作的完成之前可用。注意到,术语“瞬时”不必意指数据库在存储介质故障之后立即可用。相反,术语“瞬时”被用于表明在存储介质故障之后数据库的可用性与利用传统还原技术而可用相比更快。
[0007] 利用根据一些实现方式的瞬时还原过程,在存储介质故障之后以及在还原操作的完成之前,事务可以访问已经被存储在出故障的存储介质上的数据。事务可以指代读取和/或写入数据库的数据的任何数据操作。可以响应于来自用户、应用或另一实体的请求而发起事务。
[0008] 能够运行的事务可以包括再继续(resumed)的事务、新事务以及重新开始的事务。新事务是在存储介质故障之后所发起的那些事务。再继续的事务是在存储介质故障之前活动地执行的那些事务。这样的活动事务在检测到存储介质故障时可以被暂停,并且可以在瞬时还原过程中再继续。重新开始的事务是在存储介质故障之前活动地执行并且被异常结束(abort)并且然后在存储介质故障之后重新开始的那些事务。
[0009] 由于在还原操作的完成之前使得数据库可用,所以事务可以遇到作为在存储介质故障之前由事务所进行的改变的主体的数据库页面。当遇到任何这样的页面时,页面可以单独地按需恢复。数据库的“页面”可以指代数据库的任何分段。在一些示例中,数据库的页面可以由分层次索引(诸如B树索引)的节点表示。B树索引包括节点的分层次布置,其包括根节点、中间节点以及在B树索引底部的叶节点。每个叶节点表示数据库的相应页面。中间节点可以各自与键(key)范围相关联;给定中间节点的子节点与给定中间节点的键范围内的键相关联。键包括数据库中的数据记录的至少一个属性。作为示例,如果数据库包含涉及公司雇员的数据记录,那么数据记录的属性可以是雇员标识符。
[0010] 在其它示例中,数据库的页面可以以不同的方式表示。
[0011] 根据一些实现方式的还原操作因而是瞬时、按需的还原操作,其中在出故障的存储设备的内容的整体的还原完成之前使得数据库可用于事务,并且每当事务请求这样的单独页面时可以按需恢复数据库的单独的页面。如果事务请求了尚未还原的数据库页面或者与尚未回滚的出故障的事务冲突,那么单独页面重做恢复或单独事务撤销恢复(以下进一步讨论)可以按需运行以确保替代存储介质(其替代出故障的存储介质)上的相应页面看似最新并且在线,即使那仅对替代存储介质上的一些页面是真实的。
[0012] 图1是包括数据库系统102和备份存储系统104的示例布置的框图。数据库系统102包括存储介质106,其可以用一个或多个存储设备来实现,诸如基于盘的存储设备(例如,磁性或光学盘驱动装置)、集成电路存储设备(例如,闪速存储器设备、电池支持的随机存取存储器设备、相变存储器设备等)等等。存储介质106存储作为数据库的部分的数据库页面108。如以上所指出的,数据库页面108可以是B树索引的部分,或者可以是另一数据结构的部分。
[0013] 存储介质106还可以存储恢复或事务日志110,其记录已经对数据库中的数据做出改变的事务。恢复日志可以指代任何数据结构,包括一个或多个文件或(多个)其它数据容器。恢复日志110持久地存储在存储介质106中,以使得恢复日志110将会是可用的,即使数据库系统102将遭受系统崩溃或以其它方式被重置。通过在恢复日志中记录事务,那些事务可以通过从恢复日志中重放事务而被重复,如果故障出于任何原因而阻止了它们的完成的话。注意到,用于存储事务恢复日志的(多个)存储设备可以不同于用于存储数据库内容的(多个)存储设备。
[0014] 数据库系统102还包括数据库管理模块112,其包括在数据库系统102的一个或多个处理器114上可执行的机器可读指令。数据库管理模块112能够管理数据库109的访问(读取访问或写入访问)。
[0015] 数据库系统102还包括网络接口116以允许数据库系统102通过网络118而通信。
[0016] 客户端设备(未示出)能够通过网络118而访问数据库系统102。由客户端设备所提交的查询被数据库管理模块112接收,所述数据库管理模块112可以发布事务以访问由查询所请求的数据。
[0017] 而且,备份存储系统104通过网络118而连接到数据库系统102。备份存储系统104包括备份存储介质120,其可以利用一个或多个存储设备(诸如基于盘的存储设备、集成电路存储设备等)来实现。备份存储介质120可以存储全备份数据122(其中全备份是数据库系统102中的数据库的所有数据库页面108的备份)、增量备份数据124(其中增量备份是自从之前的备份以来所改变的数据的备份)以及其它信息。注意到,恢复日志110的拷贝也可以被提供在备份存储介质120中。还注意到,用于存储事务恢复日志的(多个)备份存储设备可以不同于用于存储数据库内容的(多个)备份存储设备。另外,数据库系统102和备份存储系统104可以可能地驻留在(多个)相同的物理系统上,尽管它们在图1的示例中被绘制为分离的组件。
[0018] 备份存储系统104还包括备份控制模块131,所述备份控制模块131管理备份存储介质120中数据的访问。备份控制模块131可以被实现为在备份存储系统104的一个或多个处理器132上可执行的机器可读指令。备份存储系统104还包括网络接口134,所述网络接口134允许备份存储系统104通过网络118而通信。
[0019] 如图1中另外示出的,数据库系统102包括备份模块128和瞬时还原模块130。尽管被描绘为是图1中的数据库系统102的部分,注意到,备份模块128和瞬时还原模块130在其它实现方式中可以是分离的系统的部分,诸如备份存储系统104的部分或另一系统的部分。
[0020] 备份模块128和瞬时还原模块130可以用在(多个)处理器114上可执行的机器可读指令来实现。备份模块128控制数据库109到备份存储系统104的备份。备份(全备份或增量备份)的实施可以根据由备份模块128所维护的备份策略。例如,备份策略可以指定将多频繁地实施备份,以及在什么条件之下将实施全备份而不是增量备份。
[0021] 瞬时还原模块130可以根据一些实现方式而实施瞬时还原。瞬时还原模块130可以在检测到存储介质106的故障时被调用。
[0022] 数据库系统102还包括替代存储介质107,其可以包括一个或多个存储设备。替代存储介质107初始是空的并且可以用作用于存储介质106中任何出故障的(多个)存储设备的替代。注意到,在一些情况中,替代存储介质可以是与原始存储设备相同的物理存储设备。例如,出故障的驱动装置可以被重新格式化并且被重用为替代存储介质。替代存储介质107被用于存储由瞬时还原操作根据一些实现方式所恢复的数据。在其中替代存储介质107是存储设备的示例中,于是存储设备可以用作用于数据库系统102的存储介质106中的任何存储设备的替代存储设备。替代存储设备可以在存储介质106中的任何存储设备的故障之后立即可用。
[0023] 在瞬时还原过程期间,瞬时还原模块130可以引起与出故障的存储介质相对应的备份数据的部分到替代存储介质107的拷贝。
[0024] 图2是根据一些实现方式的由瞬时还原模块130所实施的瞬时还原过程的流程图。瞬时还原模块130检测(在202处)存储介质(例如,存储介质106)的故障,所述存储介质包含已经被备份到备份存储介质120的数据库109的至少一部分。出故障的存储介质上的数据库109的部分可以在随后的讨论中称作数据库的“受故障影响的部分”。存储介质的故障可以指代存储设备的故障、多个存储设备的故障、存储设备的一部分的故障等等。存储介质的故障可以使得数据库不再可访问,除非实施出故障的存储介质中所存储的数据库的受故障影响的部分的还原。
[0025] 响应于检测到故障,瞬时还原模块130可以引起与数据库109的受故障影响的部分相对应的备份存储介质120处的备份数据的一部分到替代存储介质107的拷贝。注意到,在该阶段处,替代存储介质107中的数据很可能不是最新的,因为由恢复日志110中的事务所进行的改变没有反映在从备份数据还原到替代存储介质107的数据中。
[0026] 而且,响应于检测到故障,瞬时还原模块130分析(在204处)恢复日志,诸如恢复日志110或恢复日志110的拷贝,其包括关于数据库109所实施的事务。分析恢复日志可以包括分析包括自从对数据库109实施上一次备份以来的事务的恢复日志的一部分。上一次备份可以是全备份或增量备份。
[0027] 对于更高效的恢复日志分析,恢复日志110可以被划分成多个分段,诸如对应于存储介质106的不同存储设备的不同分段。因而,当特定的存储设备出故障时,恢复日志分析可以仅仅分析对应于特定存储设备的恢复日志分段,并且其余的恢复日志分段不必被分析。
[0028] 对于更高效的恢复日志分析,恢复日志110还可以使用其它策略而被划分成多个分段。例如,不同分段可以对应于恢复日志的不同时间分段、或者对应于事务的不同类别(例如行业事务与订单发货事务)。因而,当特定存储设备出故障时,恢复日志分析可以仅仅分析对应于特定存储设备的恢复日志分段(或某种其它恢复日志分段),并且其余的恢复日志分段不必被分析。恢复日志的分析标识“重做”恢复操作和“撤销”恢复操作。重做恢复操作指代重复对数据库的数据所做出的改变。撤销恢复操作指代撤销对数据库中的数据所做出的改变。尽管恢复日志的分析标识重做恢复操作和撤销恢复操作,但是注意到,所标识的重做恢复操作和撤销恢复操作并不立即运行。相反,重做和撤销恢复操作可以增量地和按需运行,作为瞬时还原过程的部分。
[0029] 在一些示例中,恢复日志分析的输出可以包括作为重做恢复操作的主体的数据库页面的列表,以及作为撤销恢复操作的主体的事务的列表。而且,对于与重做恢复操作相关联的每个页面和与撤销恢复操作相关联的每个事务,可以标识恢复日志的相关日志记录,连同任何相关的。锁指代可以与数据单元(诸如数据库页面)相关联的机制,其允许一个事务实施关于数据单元的数据访问操作而没有来自另一事务的干扰。例如,写入事务可以在数据库页面上放置写入锁,其防止另一事务访问(读取访问或写入访问)数据库页面。
[0030] 作为恢复日志分析的部分,是否要实施重做恢复操作或撤销恢复操作的确定基于恢复日志中所记录的事务在存储介质故障之前被交托(commit)还是没有交托的确定。如果在事务交托之前存储介质出故障,那么事务被回滚(通过实施撤销恢复操作)。另一方面,如果在存储介质故障之前事务被交托,那么在重做恢复操作中重复事务中的动作。
[0031] 在一些情况中,在存储介质故障之前,可以已经在特定事务上开始了回滚,并且回滚可以已经存记(log)了一些补偿动作。补偿动作可以指代可以用于撤销另一动作的动作。在其中回滚已经存记了补偿动作的上下文中,于是这样的补偿动作可以用于撤销回滚已经实施的内容。存记补偿动作可以指代将记录添加到恢复日志,其描述该补偿动作。为了在瞬时还原过程中重做回滚,重做恢复操作可以确保所存记的补偿动作的持久性——换言之,重做恢复操作确保用于回滚的补偿动作被保持可用直到回滚完成(在出于无论什么原因而必须实施回滚的撤销的情况下)。
[0032] 更一般地,当实施撤销恢复操作时,撤销恢复操作可以调用并且存记适当的补偿动作。
[0033] 如在图2中另外描绘的,瞬时还原模块130允许在从备份存储介质120对数据库109的受故障影响的部分的恢复完成之前运行(在206处)对数据库系统102中的数据库109进行访问的事务。在一些实现方式中,瞬时还原模块130可以向数据库管理模块112发送消息以指示:事务可以在检测到存储介质故障之后运行。注意到,可以在实施恢复日志分析中所标识的重做和撤销恢复操作中任一项之前运行事务。
[0034] 响应于来自瞬时还原模块130的消息,数据库管理模块112在数据库系统102中运行事务。事务包括新事务和再继续的事务。
[0035] 在单独的页面被运行的事务访问时,瞬时还原模块130可以调用(在208处)在恢复日志分析(在204处)的输出中所标识的按需重做和撤销恢复操作。所调用的按需重做恢复操作可以实施数据库109的受故障影响的部分的单独页面的恢复。注意到,单独页面的按需恢复聚焦于由活动的事务所访问的页面上。数据库109的受故障影响的部分的其余页面的恢复可以发生在空闲时间间隔期间,或者每当提供显式命令以这样做时发生。
[0036] 撤销恢复操作可以在检测到新事务与由于存储介质故障而出故障的事务冲突时被按需实施。
[0037] 如以上所指出的,再继续的事务是在存储介质故障之前活动地执行的那些事务。如果从存储介质故障的恢复看似瞬时,如通过使用根据一些实现方式的瞬时还原过程而可能的那样,则已经访问了出故障的存储介质的活动的事务可能不必被回滚。代替地,那些事务可以通过瞬时还原操作而再继续。在204处实施的日志分析期间,那些事务可以暂停。
然而,在日志分析之后,事务可以再继续。当事务再继续时,它们可以触发按需重做恢复操作,就像新事务在存储介质故障之后运行那样。如果新的、重新开始的或再继续的事务最终出故障或异常结束,那么可以应用用于实施事务回滚的技术。例如,在存储介质故障之后运行的新事务可能进入与存储介质故障之前运行的事务的死锁情形中,并且死锁解决机制可以选择异常结束新事务或较旧的事务。因而,数据库页面的按需重做恢复操作可以在再继续的事务中早先实施,具有那些改变的随后回滚。类似地,事务可以在日志分析之后重新开始,并且可以触发按需重做恢复操作,诸如在存储介质故障之后开始或再继续的事务,或者按需撤销操作,诸如在存储介质故障之后异常结束的事务。
[0038] 当运行的事务访问数据库页面时,检查数据库页面的状态。检查数据库页面的状态涉及检查是否必须恢复数据库页面。例如,检查数据库页面的状态可以涉及检查页面是否已经已知为已经被恢复或在存储介质故障的时候已经是稳定的,并且然后检查恢复日志分析的输出以确定数据库页面是否与在存储介质故障之前对数据库页面的改变相关联。如果是这样,那么调用单独数据库页面的恢复,其中恢复可以是重做恢复操作或撤销恢复操作。在瞬时还原过程期间,备份存储介质120可以保持在只读模式中,尽管替代存储介质107可以处于读-写模式中(以允许替代存储介质107的读取和写入)。而且,注意到,单独页面恢复可以重复自从采取了上一次备份以来对数据库页面的所有更新。
[0039] 如以上所指出的,如果在新事务(在存储介质故障之后运行在数据库系统102中的事务)以及由于存储介质故障而出故障的事务之间检测到锁冲突,则出故障的事务回滚。对出故障的事务进行回滚指代通过实施撤销恢复操作而撤销由出故障的事务所做出的数据改变。在回滚和部分回滚期间的增量锁释放可以被实施为撤销恢复操作的部分。部分回滚可以指代撤销在给定事务中对数据所做出的改变的一部分。部分锁释放可以指代与给定事务相关联的锁的子集的释放。
[0040] 图3是图示了根据一些实现方式的瞬时还原过程的示例操作的示意图。如所描绘的,从数据库109向备份存储介质120实施数据备份302,以使得备份数据304被存储在备份存储介质120中。备份数据304可以包括图1的全备份数据122和增量备份数据124的任一个或某种组合。
[0041] 在某点处,瞬时还原模块130接收存储介质106的故障的指示306。响应于指示306,瞬时还原模块130发起瞬时还原过程,其包括实施数据还原308以从备份数据304向替代存储介质107拷贝数据部分(用于存储为还原的数据310)。所拷贝的备份数据304的部分包括与出故障的存储介质相关联的备份数据部分。
[0042] 在一些情况中,备份数据304的页面可以通过使用页面标识符而被访问。在其中备份数据304被压缩的其它实现方式中,可以提供索引,所述索引将页面标识符映射到包含备份数据304的文件(或多个文件)中的偏移位置
[0043] 为了在差异备份数据中的更快速的搜索,可以采用位向量过滤器。位向量过滤器包括位的布置,其中每个位对应于相应的数据库页面。位如果被设置成预定义的值则指示数据库页面不在相应的差异备份数据中。使用位向量过滤器虑及跳过在差异备份数据文件中的无益的搜索。
[0044] 瞬时还原模块130还可以响应于故障指示306而开始恢复日志110的分析。在实施了恢复日志分析之后,瞬时还原模块130可以向数据库管理模块112发送指示以准许数据库管理模块112运行事务(包括新事务和再继续的事务)。
[0045] 事务可以引起按需重做和撤销恢复操作,在事务访问数据库页面时,其可以关于数据库109(其包括还原的数据310)中的数据而被实施。在实施重做和撤销恢复操作时,还原的数据310变得更加时新(up-to-date)。
[0046] 在一些可替换的实现方式中,可以采用自修复B树。自修复B树是这样的B树索引:其中B树索引的节点包含对于节点中所包含的数据的备份映像的指针。指针可以是对于用于节点的数据的最新近的备份映像的指针。每个节点还可以包含到恢复日志110中的指针,以及更具体地,对于关于由节点表示的页面的最新近的日志记录的指针。该指针称作PageLSN(页面日志序列号)。PageLSN标识最新近地被应用于相应页面的恢复日志记录。
[0047] 另外,父节点中的每个子指针(父对子指针)与到恢复日志110中的指针配对。该父对子指针是子节点中预期的PageLSN;并且如果子节点是最新的,则子节点的PageLSN等于或高于所预期的PageLSN。
[0048] 根到叶B树遍历(被实施为一个或多个事务的部分)可以基于节点的PageLSN而确定B树节点是否是最新的,并且可以调用单独页面重做恢复操作,如果B树节点不是最新的话。
[0049] 在另外的实现方式中,为了恢复日志110的更高效的分析,首先提取关于出故障的存储介质的恢复日志110中的日志记录。然后可以在关于出故障的存储介质的所提取日志记录上实施分析(而不是在所有存储介质上的分析)。在恢复日志的子集上实施分析增加所分析的部分可以被高速缓存在较高速存储器中的似然性,因而改进按需重做和撤销恢复操作。
[0050] 在附加实现方式中,变成废弃的恢复日志110中的日志信息可以不予处理,以实现更高效的恢复日志分析(如在图2中的204处所实施的那样)。用于恢复日志记录中的事务的日志信息的累积初始包括撤销信息,其是用于撤销事务的信息。当日志分析遇到对事务异常结束进行指示的事务交托记录时,所累积的撤销信息变成废弃的并且可以被丢弃(不必被进一步分析)。
[0051] 类似地,当日志分析遇到匹配的补偿日志记录时,某些重做信息可以被确定成是废弃的。对该规则的例外是其中回滚关于与原始更新不同的页面的情况,例如,如果B树条目在更新和回滚之间由于在B树节点之中的拆分或合并操作而在节点之中移动的话。
[0052] 在一些实现方式中,用于高效按需还原的恢复日志110的准备可以发生在日志分析(如在存储介质故障之后在204处所实施的)期间,或者准备可以作为恢复日志的存档过程(以将恢复日志存储在持久存储装置中)的部分而运行。用于高效按需还原的恢复日志110的准备的示例可以包括按存储设备或按表格而将恢复日志110分区成分段、相关日志记录的聚集、以及日志记录的压缩。
[0053] 图4图示了其中描绘了在数据库管理模块112、瞬时还原模块130和备份存储系统104之中的各种交互的示例操作。注意到,各种交互不必以图4中描绘的序列而发生——在其它示例中,可以采用不同的序列。
[0054] 瞬时还原模块130向数据库管理模块112通知(在402处)存储介质故障,所述存储介质故障基于图3的存储介质故障指示306而被检测。瞬时还原模块130还从数据库管理模块112请求(在404处)恢复日志110。数据库管理模块112向瞬时还原模块130递送(在406处)恢复日志110(或恢复日志110的一部分)。
[0055] 在某点处,准许数据库管理模块112运行事务。响应于由存储介质故障之后尚未更新的事务所请求的页面,数据库管理模块112从瞬时还原模块130请求(在408处)页面。作为响应,瞬时还原模块130可以从备份存储系统104请求(在410处)相应的备份页面。
所请求的备份页面由备份存储系统104递送(在412处)给瞬时还原模块130。在关于所递送的备份页面而应用了任何相应的重做或撤销恢复操作之后,瞬时还原模块130可以向数据库管理模块112递送(在414处)所请求的页面(在408处所请求的)。
[0056] 上述各种模块(包括图1的112、128、130和131)的机器可读指令被加载以用于在处理器或多个处理器(诸如图1中的114或132)上执行。处理器可以包括微处理器、微控制器、处理器模块或子系统、可编程集成电路、可编程阵列或者另一控制或计算设备。
[0057] 数据和指令存储在相应的存储设备中,所述存储设备被实现为一个或多个计算机可读的或机器可读的存储介质。存储介质包括不同形式的存储器,包括:半导体存储器设备,诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除和可编程只读存储器(EPROM)、电可擦除和可编程只读存储器(EEPROM)和闪速存储器;磁盘,诸如固定的盘、软盘和可移除盘;其它磁性介质,包括磁带;光学介质,诸如光盘(CD)或数字视频盘(DVD);或其它类型的存储设备。注意到,以上讨论的指令可以被提供在一个计算机可读或机器可读的存储介质上,或可替换地,可以提供在被分布在可能地具有复数节点的大型系统中的多个计算机可读或机器可读存储介质上。这样的一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的部分。物品或制品可以指代任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或者位于远程站点处,从所述远程站点可以通过网络下载机器可读指令以供执行。
[0058] 在前述描述中,阐述了众多细节以提供对本文公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实践实现方式。其它实现方式可以包括从以上讨论的细节的修改和变型。所意图的是,所附权利要求覆盖这样的修改和变型。
QQ群二维码
意见反馈