在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退的制作方法

文档序号:6354409阅读:350来源:国知局
专利名称:在分布式数据库中使用递增捕捉来进行逻辑数据备份和回退的制作方法
技术领域
本发明涉及数据备份和回退技术,更具体地涉及递增的数据备份和回退技术。
背景技术
在大型分布式数据库系统中,可以使用传统SQL (结构化查询语言)备份和还原来 进行数据保护。然而,尚有缺点存在。需要完整数据库的备份的盘上副本,这需要与所备份 的数据库一样多的存储。另外,需要对事务日志进行周期性备份来用于较低的还原点目标 (RPO)。此外,还原时间目标(RTO)很差,因为不管所涉及的数据的大小,任何还原操作都将 需要还原整个备份并随后应用一系列事务日志备份文件。该过程非常耗时并是劳动力密集 的,并且备份是以不可被直接查询的二进制格式来存储的。

发明内容
下面提供了简化的概述,以便提供对此处所描述的一些新颖实施方式的基本理 解。本“发明内容”不是详尽的综述,并且它不旨在标识关键/重要元素或描绘本发明的范 围。其唯一的目的是以简化形式提出一些概念,作为稍后提出的更详细描述的序言。所公开的体系结构是一种消除了对数据的盘上完整备份的需求的有成本竞争力 的方法。通过只在单独的表中保留已发生的变更来优化存储。因此,该体系结构允许对关 系数据库(例如,SQL)中的递增变更进行递增还原。该体系结构提供经改进的还原时间和 还原点目标。通过使用对已变更数据(例如,以XML为格式)的递增捕捉,提供了捕捉模式 变更、查询递增地捕捉的数据、并将用户数据高效地还原到更早时间点状态并且没有停机 时间的能力。通过一组触发器来(例如,连续地)跟踪变更(例如,插入、更新以及删除操作), 并且根据某一格式(例如,XML)将递增地捕捉的已变更的行插入数据捕捉表中(差分变更 “增量”表)。该格式是自描述的并且包含该格式内的行的模式。数据回退将来自数据捕捉表的适当行的递增变更解压到更早时间点,并随后将这 些行覆盖到生产数据。优化插入操作以不在数据捕捉表中创建各行而是在基表中维护变更 跟踪信息(例如,插入的协调世界时间(UTC))。为了为实现上述及相关目的,本文结合下面的描述和附图来描述某些说明性方 面。这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面 旨在落入所要求保护的主题的范围内。结合附图阅读下面的详细描述,其他优点和新颖特 征将变得显而易见。


图1示出根据所公开的体系结构的计算机实现的数据管理系统。图2示出数据管理系统的一替换实施方式。
图3示出数据管理系统的一替换表示。图4示出一系统,该系统示出为了更新和删除数据操作而对基表进行的修改。图5示出示例性捕捉和变更跟踪表。图6示出根据所公开的体系结构的计算机实现的数据管理方法。图7示出图6的方法的其他方面。图8示出可用于根据所公开的体系结构来使用镜像之前(before-image)捕捉执 行逻辑数据备份和回退的计算系统的框图。图9示出使用镜像之前捕捉来执行逻辑数据备份和回退的计算环境的示意框图。
具体实施例方式所公开的体系结构提供高效地捕捉数据操作的“镜像之前”(递增)数据变更以及 变更跟踪信息并随后使用这些变更和信息来高效地回退更新/删除/插入操作的能力。镜 像之前数据是对其进行了变更,但在该已变更数据被处理来覆盖生产数据之前的数据。递 增数据的存储空间是用于整个备份和事务日志备份的空间的一小部分。此外,从数据捕捉 表回退更新/删除/插入操作的时间相对于从整个备份和事务日志备份进行还原的时间而 言是很小的。如本文所使用的,表是采用控制跨服务器的划分的划分键并且还采用控制在一服 务器内各行的排序的群集键的逻辑关系。表群是具有同一划分键的表的集合。行群是具有 同一划分键值的表群中的行的集合。行群完全处于一个服务器上,但可以不被群集在一起。 每一表群可以跨节点分布。每一存储节点是被分配了一定范围(分区)的键值,并且出于 耐久性目的而复制了每一分区。镜像之前数据可以用包含这些行的自描述模式的XML(可扩展标记语言)格式来 持久存储。因此,该解决方案对模式评估是有效的。另外,镜像之前数据可以被持久存储在 同一分区中(例如,表群),并且因而是高度可用的。此外,自动地管理并维护镜像之前保留 策略,并且该镜像之前数据可以经由诸如TSQL(事务结构化查询语言(SQL))等传统关系语 言来查询。选择镜像之前优于镜像之后,使得变更可以从该分区内的当前数据向后应用(撤 消而非重做),并且因此消除了对完整分区备份的需求以节省存储空间。现在将参考附图,全部附图中相同的附图标记用于表示相同的元件。在下面的描 述中,为了进行说明,阐述了很多具体细节以便提供对本发明的全面理解。然而,显而易见, 可以没有这些具体细节的情况下实施各新颖实施例。在其他情况下,以框图形式示出了公 知的结构和设备以便于描述它们。本发明将涵盖落入所要求保护的主题的精神和范围内的 所有修改、等效方案和替换方案。图1示出了根据所公开的体系结构的计算机实现的数据管理系统100。系统100 包括捕捉与对分布式数据库的分区110中的数据108的数据操作106相关联的递增变更数 据104的捕捉组件102。系统100还可包括创建与递增变更数据104的数据操作106相关 联的跟踪信息114的跟踪组件112和将递增变更数据104及相关联的跟踪信息114存储在 分区110的表118中的存储组件116。在需要时,递增变更数据104高度可用于访问。捕捉 组件102和跟踪组件112将数据和信息传递到存储组件116。
递增变更数据104和跟踪信息114以人类可读的格式(例如,XML——可扩展标记 语言)存储在表118中,该格式在表118中包括各行的自描述模式。递增变更数据104和 跟踪信息114在与将数据108提交给数据库的同一事务中被存储在表118中。递增变更数 据104被持久存储在与数据108所处的相同分区(分区110)中。递增变更数据104是高 度可用和可根据查询语言搜索的。表118包括递增变更数据104的变更的历史。变更与数 据操作发生的时间、事务发生的时间、或行创建的时间中的至少一个相关联。图2示出数据管理系统200的一替换实施方式。系统200包括捕捉与对分布式数 据库的分区Iio中的数据108的数据操作106相关联的递增变更数据104的捕捉组件102、 创建与数据操作106相关联的跟踪信息114的跟踪组件112、将递增变更数据104和相关 联的跟踪信息114存储在表118中的存储组件116。在此,各组件(102,112,116,204以及 206)与触发器202之间的通信由双向箭头来表示,因为这些实体之间可在两个方向上都存 在通信。系统200还可包括自动地启动对递增变更数据104和跟踪信息114的捕捉、跟踪 以及将它们存储在表118中的一个触发器(一个或多个触发器202)。递增变更数据104和跟踪信息114以人类可读的格式(例如,XML——可扩展标记 语言)存储在表118中,该格式包括来自基表108的各行的自描述模式。递增变更数据104 和跟踪信息114在与将数据108提交给数据库的同一事务中被存储在表118中。递增变更 数据104被持久存储在数据108所处的分区110中,是高度可用的,并且是可以使用查询语 言来搜索的。表118包括递增变更数据的变更的历史。变更与数据操作发生的时间(数据 操作时间戳)、事务发生的时间(事务时间戳)以及行创建的时间(协调世界时间——UTC) 相关联。系统200还可包括便于创建保留策略并将其应用于递增变更数据104和相关联的 跟踪信息114的保留策略组件204以及用于将数据108的状态还原到先前时间点的回退组 件 206。图3示出数据管理系统300的一替换表示。可以在云计算环境中将系统300(以 及例如,系统100和200)用于备份和还原功能。对于数据库中的表群302中的(包括主副 本和多个次副本的多个副本中的)每一分区,创建变更捕捉和跟踪表304(例如,图1是表 118)。在对原始表群302进行某些变更时,该表304(也被称为递增变更表或“增量”表)存 储来自原始表群302的行值。系统300可被认为是与表群302进行接口的两个不同的应用。备份服务306安装 数据捕捉和跟踪表、触发器202 (例如,SQL更新和删除触发器),并向基表添加三个跟踪列。 这些附加列被用来跟踪插入操作。这些组件备份该表群的数据。还原工具308允许用户将 表群302的先前状态还原到分阶段数据库310。为了执行备份功能,为每一表群中的每一个表的删除和更新操作安装触发器202。 触发器202捕捉对基行进行的变更并将记录插入数据捕捉和跟踪表304中。这些值随后可 从数据捕捉和跟踪表304被插回(或,还原)到原始数据库或分阶段数据库。在还原时,获 取在时间上最接近所请求的还原时间的记录并且将变更应用回基行。以此方式,数据库的 所有者可以在设定时间帧内撤消对数据库进行的动作。触发器捕捉对基行进行的变更并且将镜像之前(递增变更数据)插入到该系统所 维护的数据捕捉和跟踪表304。表304被用作用来回退(还原)操作的变更的历史。数据捕捉和跟踪表304被持久存储在与用户数据相同的表群中,使得表304与多个副本高度可 用。此外,因为镜像之前是XML的格式,所以它是易于查询的。图4示出一系统400,该系统示出为了更新和删除数据操作而对基表402进行的修 改。存在着被用来跟踪插入、删除、以及更新操作的三个列。这些列包括UTC时间戳和两个 DBTS (数据库时间戳)列(TX DBTS和OP DBTS)。TX DBTS列跟踪插入、删除以及更新操作 的较大事务上下文,而OP DBTS列跟踪单个插入、删除以及更新操作。在变更变得永久(覆盖在生产数据上)之前,来自基表的数据被存储在捕捉和变 更跟踪表304中。对于每一表群每一分区都存在一个活动的捕捉和变更跟踪表304。各列 由基表数据的XML版本、用于帮助还原操作的UTC和DBTS跟踪列、以及与备份和还原两者 都相关的其他元数据所组成。在对基表执行更新和删除操作时,对应触发器(删除触发器 404和更新触发器406)激发并将旧数据复制到捕捉和变更跟踪表304中。存在着关于捕捉和变更跟踪表304的视图408。触发器004和406)引用这一视 图408来间接引用大多数最近(活动)捕捉和变更跟踪表。捕捉和变更跟踪表304不能被 直接引用,因为它的实际名称在清除旧捕捉和变更跟踪表期间变化。可以提供存储基表的各模式版本的信息表。这对于跟踪跨还原操作的模式变更而 言是有用的。备份服务306安装所有以上组件,并且还清除旧的(过期)捕捉和变更跟踪 表。还原所存储的过程410基于给定UTC时间将该分区还原到先前状态。过程410与 其他组件一起安装。一个过程还原行群,并且另一过程还原整个分区。在执行还原操作时,使用三个列来跟踪先前插入、删除以及更新操作的次序。这些 列具有在每一插入、删除、以及更新操作时填充的默认值。每一列的默认值调用在插入、删 除或更新操作期间自动地填充正确的值的函数(内部函数)。TX DBTS允许通过事务来对基表及捕捉和变更跟踪表304中的各条目进行分类和 编组。这使用返回该单独操作的当前事务的DBTS的内部函数。在服务器上,这一内部函数 存储整个事务的当前DBTS并随后递增该DBTS。在这一内部函数被调用时,给定事务中的任 何操作将具有同一 DBTS值。任何其他DBTS引用将返回已递增的、当前非事务DBTS值。OP DBTS展示每一操作的次序,并使用返回当前DBTS并递增该DBTS的内部函数。 对于基表中的每一条目,这是不同的,因为每一插入操作经由该列的默认值来调用内部函 数。UTC时间戳是创建该行的插入操作的当前UTC时间。这一时间戳用于帮助还原操 作。用户可以选择需要还原到的UTC日期或时间。还原基于DBTS值使用UTC时间戳作为 指导来确定实际还原点。这被用来将数据库还原到一致的事务状态。使用被该系统添加到基表中的各列来跟踪基表中的插入操作。这些列存储该操作 的序列号、在该分区的主副本处测量的该操作的UTC时间、以及事务标识符。(这三个字段 也被添加到数据捕捉表。)对于插入操作,不向数据捕捉表插入行。这一优化以稍微增加回 退逻辑的复杂性为代价而减少了存储要求。在回退期间,行(它已被保存在数据捕捉表中)在所请求的回退时间之前的最后 提交的状态被用来覆盖基行。插入操作没有触发器。在对备份的基表进行插入时,在捕捉和变更跟踪表中不存储信息。自动地填充三个附加列的默认值。这一新数据允许还原操作考虑插入操作并对其 进行排序。为了在更新或删除操作期间对数据进行备份,备份服务306为相关基表安装触发 器。在对基表的更新或删除操作时,触发器存储预更新或预删除基表行的XML表示(没有 三个跟踪列)。这捕捉用于备份的数据以及数据库的“模式”。其次,它存储分区键。基于 插入触发器的DBTS记录不更改基表。在备份服务306不运行的情况下,触发器继续将已变 更的数据存储到捕捉和变更跟踪表304中。使用捕捉和变更跟踪表304上的视图408,以使得在为行群内的给定分区做出新 捕捉和变更跟踪表并且该表自身的名称变更时,触发器不必变更。更新和删除触发器两者都将必要的备份数据插入已安装的视图中。无论何时创建 带有基于其期满日期的新名称的新捕捉和变更跟踪表,该视图被重建为指向该新表。备份服务306在初始化时从配置文件读取信息,这些文件包含关于要由捕捉和变 更跟踪表来进行备份的每一数据库的信息。服务306随后建立捕捉和变更跟踪表和表群的 触发器。服务306随后调度两个操作检查基表模式变更和升级以及清除捕捉和变更跟踪 表。为了将一个分区(例如,表群)或行群还原到特定时间点,还原工具308调用在备 份服务初始化或在模式变更之后安装的一个或多个所存储的过程410。一个过程还原整个 分区中的每一个表。另一过程还原该分区内的行群。这些过程取要还原的所需时间点作为
自变量。对于实现事务一致性,在还原(回退)操作期间,如果所需还原点落入所存储(备 份)的事务的中间则可能创建不一致的状态。对于对数据库的每一所存储的变更,为事务 中的每一操作都存储事务开始DBTS和操作DBTS。展示了返回当前事务中的第一操作的DBTS的内部函数TX_START_DBTS()。如果在 该内部函数被调用之前该事务没有执行操作,则递增_DBTS并且将该值记录在事务记录 中。对于事务开始时间,观察到如下结果回退给定事务操作中的一些而留下同一事 务的其他操作可能是不合需要的。考虑一系统,在该系统中,在任何给定时间都有许多事务 在运行并且这些事务中的每一个都修改不止一行。DBTS中的每一个值可以处于一些事务的 中间。因此,正确答案是对于没有DBTS值将回退晚于该值的所有操作。因此,使用操作的 DBTS作为唯一准则是受限的。该能力被提供给属于已经开始回退的事务的回退操作。为了对其进行支持,事务 标识符与记录存储在一起。此外,事务标识符是跨故障唯一的。DBTS具有这一特性并且被 保证在故障中前进。因此,事务开始DBTS是这一需求的候选。考虑事务Tl、T2和T3的以下时间线。
权利要求
1.一种具有物理介质的计算机实现的数据管理系统(100),包括捕捉递增变更数据的捕捉组件(102),所述递增变更数据与在分布式数据库的一分区 中的数据上的数据操作相关联;创建与所述递增变更数据的数据操作相关联的跟踪信息的跟踪组件(112);以及将所述递增变更数据和相关联的跟踪信息存储在所述分区的一个表中的存储组件 (116),所述递增变更数据高度可用。
2.如权利要求1所述的系统,其特征在于,还包括自动地启动所述递增变更数据的捕 捉、所述跟踪信息的创建以及所述递增变更数据和所述跟踪信息两者在所述表中的存储的 一个或多个触发器。
3.如权利要求1所述的系统,其特征在于,所述递增变更数据和所述跟踪信息以包括 所述表中的已变更数据的自描述模式的人类可读的格式存储在所述表中。
4.如权利要求1所述的系统,其特征在于,所述递增变更数据和所述跟踪信息在与将 所述数据变更提交给所述数据库的同一事务中被存储在所述表中。
5.如权利要求1所述的系统,其特征在于,所述递增变更数据被持久存储在所述数据 所处的同一分区中。
6.如权利要求1所述的系统,其特征在于,所述递增变更数据是高度可用的并且可根 据查询语言来搜索。
7.如权利要求1所述的系统,其特征在于,所述表包括递增变更数据的变更的历史,所 述变更与数据操作发生时间、事务发生时间、或行创建时间中的至少一个相关联。
8.如权利要求1所述的系统,其特征在于,还包括用于将所述行的状态还原到先前时 间点的回退组件。
9.如权利要求1所述的系统,其特征在于,还包括保留策略组件,所述保留策略组件便 利于对保留策略的创建以及所述保留策略到所述递增变更数据和相关联的跟踪信息的应用。
10.一种使用处理器和存储器的计算机实现的数据管理方法,包括接收与分布式数据库中的数据的递增变更数据相关的数据操作(600);响应于所述数据操作来捕捉所述递增变更数据(602);创建与所述递增变更数据相关联的跟踪信息(604);以及存储所述递增变更数据和跟踪信息(606)。
11.如权利要求10所述的方法,其特征在于,还包括将所述递增变更数据作为表中的 一行并以包括自描述模式的XML格式来存储。
12.如权利要求10所述的方法,其特征在于,还包括使用结构化查询语言来查询所述 递增变更数据。
13.如权利要求10所述的方法,其特征在于,还包括将保留策略应用于所述递增变更 数据和跟踪信息。
14.如权利要求10所述的方法,其特征在于,还包括与所述递增变更数据的事务相关 联地存储事务时间戳和数据操作时间戳。
15.如权利要求10所述的方法,其特征在于,还包括基于所述递增变更数据将回退操 作应用于所述数据库以将所述数据回退到先前时间点。
全文摘要
一种消除了对数据的盘上完整备份的需求而只在单独的表中保留已发生的变更的体系结构。因此,该体系结构允许对关系数据库(例如,SQL)中的递增变更进行递增还原。该体系结构提供经改进的还原时间和还原点目标。通过使用对已变更数据(例如,以XML为格式)的递增捕捉,提供了捕捉模式变更、查询递增变更数据、并将用户数据高效地还原到更早时间点状态的能力。通过一组触发器来(例如,连续地)跟踪变更(例如,插入、更新以及删除操作),并且以人类可读格式(例如,XML)将递增地捕捉的已变更的行插入数据捕捉表中(差分变更“增量”表)。还提供了回退。
文档编号G06F17/30GK102142024SQ201110037158
公开日2011年8月3日 申请日期2011年1月31日 优先权日2010年2月1日
发明者B·H·M·德尼, C·罗伯, H·H·胡, L·诺维克, N·R·埃利斯, O·N·泽利格, S·帕尔, T·塔留斯, 吴中伟 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1