CN115827334A - Oracle数据库块级cdp备份恢复方法及其系统 - Google Patents
Oracle数据库块级cdp备份恢复方法及其系统 Download PDFInfo
- Publication number
- CN115827334A CN115827334A CN202310023408.XA CN202310023408A CN115827334A CN 115827334 A CN115827334 A CN 115827334A CN 202310023408 A CN202310023408 A CN 202310023408A CN 115827334 A CN115827334 A CN 115827334A
- Authority
- CN
- China
- Prior art keywords
- point
- volume
- backup
- data
- layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种ORACLE数据库块级CDP备份恢复方法及其系统,所述方法包括:增量检查点识别驱动安装步骤;增量检查点捕获驱动安装步骤;文件系统层IO包识别步骤;卷层IO包备份步骤;日志创建步骤;备份数据解析步骤;数据恢复步骤。所述系统包括:增量检查点识别驱动安装模块;增量检查点捕获驱动安装模块;文件系统层IO包识别模块;卷层IO包备份模块;日志创建模块;备份数据解析模块;数据恢复模块。本发明通过识别更新ORACLE控制文件中增量检查点字段的IO请求包捕获一致点,备份端通过一致性点日志即实现数据准确恢复,轻量便捷。
Description
技术领域
本发明属于数据恢复领域,涉及一种ORACLE数据库块级CDP备份恢复方法及其系统。
背景技术
ORACLE数据库是一种关系型数据库,并在市面上被广泛地使用。而块级CDP是一种可以持续地捕获所有卷设备IO请求,以IO为单位进行备份和恢复的备份方式,是目前性能较先进的备份方式。数据库的数据变化非常频繁,数秒便会产生大量的数据变更,因此对数据库采用CDP备份方式非常的适合,能最大程度保障数据的安全。当我们对ORACLE数据库使用CDP时,需要注意的是,ORACLE是一种支持事务的数据库,一个事务会产生多个IO,同时,事务又具有原子性,即一个事务的所有操作,要么全部提交,要么全部回滚,因此,当我们对数据库使用块级CDP进行恢复时,必须恢复到某个事务结束的IO。所以,将块级CDP应用到ORACLE数据库的关键就是要捕获到事务结束的IO,即数据一致点。
目前,现有技术中有一些针对ORACLE数据库的块级连续数据保护方法,例如现有技术公开了一种ORACLE一致性数据保护与捕获一致性状态的方法(公开号CN104239444B),该方式通过手动刷新数据库缓存到磁盘,并将数据库置为静默状态来保证数据的一致性。这种方法虽然保障了块级CDP中数据库的一致性,但是也有多个缺点,一是将数据库缓存全部刷新回磁盘后的一段时间内,每当试图访问某个表都需要将表从磁盘读入缓存,这会造成数据库的IO性能降低。二是将数据库置于静默状态,数据库不能进行任何操作,导致请求堵塞、业务暂停。三是此方法中的一致性状态是人为创造的,并没有捕捉到数据库自身产生的一致性点,想要提高恢复时的精度就必须频繁地人为创造一致性状态,结合缺点二,会造成数据库性能严重下降。
因此,如何捕获到ORACLE数据库自身产生的一致性点,尽可能减少对数据库进行的额外操作,以免数据库性能下降,同时将捕获到的一致性点与块级CDP结合起来,提升备份和恢复的精度,成为当前急需解决的技术问题。
发明内容
本发明为了解决上述背景技术中的技术问题,本发明实施例提供了一种ORACLE数据库块级CDP备份恢复方法及其系统。所述技术方案如下:
第一个方面,提供了一种ORACLE数据库块级CDP备份恢复方法,所述方法包括步骤:
增量检查点识别驱动安装步骤,在文件系统上层安装增量检查点识别驱动;
增量检查点捕获驱动安装步骤,在卷设备驱动上层安装增量检查点捕获驱动,其中所述控制文件增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;
文件系统层IO包识别步骤,当操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;
卷层IO包备份步骤,当文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;
日志创建步骤,在备份端创建一致性点日志和全局日志;
备份数据解析步骤,备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;
数据恢复步骤,在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
在其中一个实施例中,所述文件系统层IO包识别步骤,包括:
操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段;
所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
在其中一个实施例中,所述卷层IO包备份步骤,包括:
当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝;
所述增量检查点捕获驱动获取卷层IO请求包的首地址;
所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记;
所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
在其中一个实施例中,所述备份数据解析步骤,包括:
备份端具有镜像卷和日志卷,所述镜像卷存放最新版本数据,所述日志卷中存放旧版本数据;
备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻;
将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志;
将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
在其中一个实施例中,所述数据恢复步骤,包括:
在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点;
在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中;
将所述镜像卷的拷贝进行挂载,完成数据恢复。
第二个方面,还提供了一种ORACLE数据库块级CDP备份恢复系统,所述系统包括:
增量检查点识别驱动安装模块,用于在文件系统上层安装增量检查点识别驱动;
增量检查点捕获驱动安装模块,用于在卷设备驱动上层安装增量检查点捕获驱动,其中所述增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;
文件系统层IO包识别模块,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;
卷层IO包备份模块,用于在文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;
日志创建模块,用于在备份端创建一致性点日志和全局日志;
备份数据解析模块,用于在备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;
数据恢复模块,用于在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
在其中一个实施例中,所述文件系统层IO包识别模块,包括:
增量检查点识别单元,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段;
增量检查点记录单元,用于所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
在其中一个实施例中,所述卷层IO包备份模块,包括:
卷层IO包拷贝单元,用于当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝;
卷层IO包首地址获取单元,用于所述增量检查点捕获驱动获取卷层IO请求包的首地址;
卷层一致点标记单元,用于所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记;
发送单元,所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
在其中一个实施例中,所述备份数据解析模块,包括:
解析单元,用于备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻;
元数据写入单元,用于将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志;
备份数据写入单元,用于将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
在其中一个实施例中,所述数据恢复模块,包括:
一致点选择单元,用于在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点;
数据恢复单元,用于在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中;
挂载单元,用于将所述镜像卷的拷贝进行挂载,完成数据恢复。
本发明的有益效果:
1.本发明相较于传统的块级CDP备份方法而言,只增加了一个位于文件系统上层的增量检查点识别驱动,和在卷层驱动添加了增量检查点标记步骤便实现了一致点的捕获,操作过程十分便捷;
2.本发明相较于传统的块级CDP恢复方法而言,通过一个额外的一致性日志的辅助,能够在数据恢复时准确恢复到数据一致点,备份恢复速度快且精度较高;
3.本发明通过识别ORACLE数据库控制文件的增量检查点来捕获数据库自己产生的数据一致点,无需通过静默数据库,刷新缓存来人为创造数据一致点,因此对数据库性能几乎没有影响。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一中ORACLE数据库块级CDP备份恢复方法的流程图。
图2为本发明实施例一中ORACLE数据库控制文件头的结构图。
图3为本发明实施例二中ORACLE数据库块级CDP备份恢复系统的结构图。
图4为本发明实施例二中文件系统层IO包识别模块的结构图。
图5为本发明实施例二中卷层IO包备份模块的结构图。
图6为本发明实施例二中备份数据解析模块的结构图。
图7为本发明实施例二中数据恢复模块的结构图。
图8为本发明实施例二中数据库表的结构图。
附图中,各标号所代表的部件列表如下:
9001、增量检查点识别驱动安装模块,9002、增量检查点捕获驱动安装模块,9003、文件系统层IO包识别模块,9004、卷层IO包备份模块,9005、日志创建模块,9006、备份数据解析模块,9007、数据恢复模块,90031、增量检查点识别单元,90032、增量检查点记录单元,90041、卷层IO包拷贝单元,90042、卷层IO包首地址获取单元,90043、卷层一致点标记单元,90044、发送单元,90061、解析单元,90062、元数据写入单元,90063、备份数据写入单元,90071、一致点选择单元,90072、数据恢复单元,90073、挂载单元。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供的方法,应用范围包括但不限于下述环境:操作系统为Winserver2019,解析过程由C语言编写。
实施例一
如图1所示,在一个实施例中,提供了一种ORACLE数据库块级CDP备份恢复方法,该方法包括:
S1. 在文件系统上层安装增量检查点识别驱动。
值得说明的是,ORACLE数据库拥有重做日志以及增量检查点机制。重做日志了记录了所有有关数据更改的操作;增量检查点机制每三秒触发一次,触发时会将数据库缓存中的一部分脏块刷新到磁盘,并将所刷新的最后一块脏块的RBA(Redo Block Address,重做日志里面用于标识事务期间数据块在重做日志里面发生更改的编号)记录到数据库的控制文件增量检查点字段中。也就是说,每当控制文件写入了新的RBA,就代表这个RBA之前的事务对数据的修改都已经落盘,所以这个对控制文件写入RBA的IO请求包可以视为一致点。通过捕获该一致点,即可保证ORACLE数据库块级CDP的数据一致性。
由于块级CDP通常采用拦截并拷贝卷层IO请求包的方式来实现,但是为了识别到对控制文件写入RBA的IO请求包,必须获取IO请求包的文件写入路径,而文件写入路径又只能从文件系统层IO请求包获取,所以我们在文件系统上层安装了增量检查点识别驱动来识别一致点。
S2. 在卷设备驱动上层安装增量检查点捕获驱动,其中所述增量检查点捕获驱动内部创建并维护有增量检查点查询缓存。
值得说明的是,所述控制文件增量检查点捕获驱动内部创建并维护有增量检查点查询缓存,所述增量检查点查询缓存用于记录IO请求包的首地址,并提供了接口使得所述增量检查点识别驱动能够对增量检查点查询缓存进行写入。
S3. 当操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存。
可选的,所述S3步骤,包括:
S31. 操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段。
S32. 所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
如图2所示为ORACLE数据库控制文件的前1536B的内容。在控制文件中,前1536B包括三个字段,分别是TITLE字段(0B-512B)、DATABASE字段(512B-1024B)和CKPT PROGRESS字段(1024B-1536B),CKPT PROGRESS字段即增量检查点字段。
控制文件记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等。
为了便于理解,具体的,对步骤S3提供一个操作实例:在64位Winserver操作系统上,增量检查点识别驱动通过调用WindowsAPI中的IoGetCurrentIrpStackLocation函数获取文件系统层IO请求包的IO Stack Location,通过IO Stack Location获取到IO请求包的写入文件路径为“D:\ORACLE\PRODUCT\12.2.1\ORADATA\ORCL\CONTROL01.CTL”、写入文件偏移为0x400(1024B)、写入文件数据长度为0x200(512B)。增量检查点识别驱动判断该IO请求包为文件系统层一致点,并将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
S4. 当文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端。
可选的,所述S4步骤,包括:
S41. 当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝。
S42. 所述增量检查点捕获驱动获取卷层IO请求包的首地址。
S43. 所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与所述文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记。
S44. 所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
S5.在备份端创建一致性点日志和全局日志。
S6. 备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷。
可选的,所述步骤S6,包括:
S61. 备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻。
S62. 将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志。
S63. 将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
S7. 在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
可选的,所述步骤S7,包括:
S71. 在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点。
S72. 在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中。
S73. 将所述镜像卷的拷贝进行挂载,完成数据恢复。
本实施例的技术方案,通过在文件系统上层添加增量检查点识别驱动,在卷层添加增量检查点捕获驱动便实现了一致点的识别和标记;在备份端仅通过一个额外的一致性日志的辅助,便能在数据恢复时准确恢复到数据一致点,备份恢复速度快且精度较高。
实施例二
如图3所示,在一个实施例中,提供了一种块级CDP中数据库一致点的捕获系统,该系统包括:
增量检查点识别驱动安装模块9001,用于在文件系统上层安装控制文件增量检查点识别驱动;
增量检查点捕获驱动安装模块9002,用于在卷设备驱动上层安装控制文件增量检查点捕获驱动,其中所述控制文件增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;
文件系统层IO包识别模块9003,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;
卷层IO包备份模块9004,用于在文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;
日志创建模块9005,用于在备份端创建一致性点日志和全局日志;
备份数据解析模块9006,用于在备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;
数据恢复模块9007,用于在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
可选的,如图4所示,在本实施例的基础上,所述文件系统层IO包识别模块9003,包括:
增量检查点识别单元90031,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段;
增量检查点记录单元90032,用于所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
可选的,如图5所示,在本实施例的基础上,所述卷层IO包备份模块9004,包括:
卷层IO包拷贝单元90041,用于当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝;
卷层IO包首地址获取单元90042,用于所述增量检查点捕获驱动获取卷层IO请求包的首地址;
卷层一致点标记单元90043,用于所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与所述文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记;
发送单元90044,所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
可选的,如图6所示,在本实施例的基础上,所述备份数据解析模块9006,包括:
解析单元90061,用于备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻;
元数据写入单元90062,用于将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志;
备份数据写入单元90063,用于将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
可选的,如图7所示,在本实施例的基础上,所述数据恢复模块9007,包括:
一致点选择单元90071,用于在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点;
数据恢复单元90072,用于在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中;
挂载单元90073,用于将所述镜像卷的拷贝进行挂载,完成数据恢复。
本实施例的技术方案,增量检查点识别驱动安装模块9001,用于在文件驱动上层安装控制文件增量检查点识别驱动;增量检查点捕获驱动安装模块9002,用于在卷设备驱动上层安装控制文件增量检查点捕获驱动,其中所述控制文件增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;文件系统层IO包识别模块9003,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;卷层IO包备份模块9004,用于在文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;日志创建模块9005,用于在备份端创建一致性点日志和全局日志;备份数据解析模块9006,用于在备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;数据恢复模块9007,用于在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。本实例通过识别ORACLE数据库控制文件的增量检查点来捕获数据库自己产生的数据一致点,无需通过静默数据库,刷新缓存来人为创造数据一致点,因此对数据库性能几乎没有影响
下面,我们提供一组实验,便于进一步阐述本实施例, 所述实验使用的操作系统版本为Winserver2019,所使用数据库的版本为ORACLE12C。
本实验对量级为1000万次的事务进行10次实验。使用sql脚本执行1000万次事务。事务涉及到的数据库表结构如图8所示,所述数据库表包括银行卡号、持卡人姓名、持卡人手机号码和账户余额四个字段。每次事务实现的操作为:对随机两个不同的银行卡账户进行转账,先对其中一个账户的余额进行扣款操作,再将扣款数字加到另一个账户的余额中。每次实验捕获到的一致点数量在350个左右浮动,每次实验随机选择一个一致点作为恢复点。
本实验的评价指标为数据恢复后所有账户余额相加的总和是否和恢复前一致,以及数据库是否正常运行。实验结果如下:
第一组实验共产生346个一致点,将数据回滚到第169个一致点,恢复后数据保持一致性且数据库正常运行;
第二组实验共产生359个一致点,将数据回滚到第58个一致点,恢复后数据保持一致性且数据库正常运行;
第三组实验共产生353个一致点,将数据回滚到第321个一致点,恢复后数据保持一致性且数据库正常运行;
第四组实验共产生349个一致点,将数据回滚到第283个一致点,恢复后数据保持一致性且数据库正常运行;
第五组实验共产生342个一致点,将数据回滚到第3个一致点,恢复后数据保持一致性且数据库正常运行;
第六组实验共产生362个一致点,将数据回滚到第155个一致点,恢复后数据保持一致性且数据库正常运行;
第七组实验共产生351个一致点,将数据回滚到第349个一致点,恢复后数据保持一致性且数据库正常运行;
第八组实验共产生342个一致点,将数据回滚到第216个一致点,恢复后数据保持一致性且数据库正常运行;
第九组实验共产生356个一致点,将数据回滚到第267个一致点,恢复后数据保持一致性且数据库正常运行;
第十组实验共产生363个一致点,将数据回滚到第109个一致点,恢复后数据保持一致性且数据库正常运行;
由上述实验结果可知,十次实验中,每次随机选择的恢复点均可使数据恢复后保持一致性且数据库均可以正常运行,没有出现数据库崩溃的情况。十次实验中,每次捕获到的一致点数量都为350个左右,数量也较为稳定。因此,本实施例可以稳定地捕获一致点,且按照一致点恢复出来的数据均能保持一致性。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种ORACLE数据库块级CDP备份恢复方法,其特征在于,所述方法包括步骤:
增量检查点识别驱动安装步骤,在文件系统上层安装增量检查点识别驱动;
增量检查点捕获驱动安装步骤,在卷设备驱动上层安装增量检查点捕获驱动,其中所述增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;
文件系统层IO包识别步骤,当操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;
卷层IO包备份步骤,当文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;
日志创建步骤,在备份端创建一致性点日志和全局日志;
备份数据解析步骤,备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;
数据恢复步骤,在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
2.根据权利要求1所述的ORACLE数据库块级CDP备份恢复方法,其特征在于,所述文件系统层IO包识别步骤,包括:
操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段;
所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
3.根据权利要求1所述的ORACLE数据库块级CDP备份恢复方法,其特征在于,所述卷层IO包备份步骤,包括:
当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝;
所述增量检查点捕获驱动获取卷层IO请求包的首地址;
所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记;
所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
4.根据权利要求1所述的ORACLE数据库块级CDP备份恢复方法,其特征在于,所述备份数据解析步骤,包括:
备份端具有镜像卷和日志卷,所述镜像卷存放最新版本数据,所述日志卷中存放旧版本数据;
备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻;
将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志;
将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
5.根据权利要求4所述的ORACLE数据库块级CDP备份恢复方法,其特征在于,所述数据恢复步骤,包括:
在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点;
在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中;
将所述镜像卷的拷贝进行挂载,完成数据恢复。
6.一种ORACLE数据库块级CDP备份恢复系统,其特征在于,所述系统,包括:
增量检查点识别驱动安装模块,用于在文件系统上层安装增量检查点识别驱动;
增量检查点捕获驱动安装模块,用于在卷设备驱动上层安装增量检查点捕获驱动,其中所述增量检查点捕获驱动内部创建并维护有增量检查点查询缓存;
文件系统层IO包识别模块,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件中增量检查点字段的IO请求包识别为文件系统层一致点,再将所述文件系统层一致点的首地址写入所述增量检查点查询缓存;
卷层IO包备份模块,用于在文件系统下发IO请求包时,所述增量检查点捕获驱动将卷层IO请求包进行拷贝,并查询所述增量检查点查询缓存,根据查询结果将捕获到卷层IO请求包标记为卷层一致点,再将卷层IO请求包的拷贝发给备份端;
日志创建模块,用于在备份端创建一致性点日志和全局日志;
备份数据解析模块,用于在备份端对接收的卷层IO请求包的拷贝进行解析,得到元数据和备份数据,将元数据写入全局日志,将一致点元数据在全局日志中的位置写入一致性点日志,同时将备份数据写入镜像卷;
数据恢复模块,用于在确定恢复时间目标后,在所述一致性点日志中查询目标一致点,再将数据恢复至目标一致点。
7.根据权利要求6所述的一种ORACLE数据库块级CDP备份恢复系统,其特征在于,所述文件系统层IO包识别模块,包括:
增量检查点识别单元,用于在操作系统下发IO请求包时,所述增量检查点识别驱动将更新控制文件增量检查点字段的IO请求包识别为文件系统层一致点,其中更新控制文件增量检查点字段的IO请求包的写入文件路径为数据库控制文件所在路径、数据偏移和数据长度覆盖数据库控制文件增量检查点字段;
增量检查点记录单元,用于所述增量检查点识别驱动调用所述增量检查点捕获驱动提供的接口,将所述文件系统层一致点的首地址写入所述增量检查点查询缓存,再下发文件系统层IO请求包。
8.根据权利要求6所述的一种ORACLE数据库块级CDP备份恢复系统,其特征在于,所述卷层IO包备份模块,包括:
卷层IO包拷贝单元,用于当文件系统下发卷层IO请求包时,所述增量检查点捕获驱动将所述卷层IO请求包拷贝;
卷层IO包首地址获取单元,用于所述增量检查点捕获驱动获取卷层IO请求包的首地址;
卷层一致点标记单元,用于所述增量检查点捕获驱动通过查询所述增量检查点查询缓存,将首地址与文件系统层一致点首地址相同的卷层IO请求包识别为卷层一致点,并对卷层一致点的拷贝进行标记;
发送单元,所述增量检查点捕获驱动将所述卷层IO请求包的拷贝发往备份端。
9.根据权利要求6所述的一种ORACLE数据库块级CDP备份恢复系统,其特征在于,所述备份数据解析模块,包括:
解析单元,用于备份端对接收的IO请求包的拷贝进行解析,得到元数据和备份数据,其中所述元数据包括备份数据在镜像卷中的偏移、备份数据在镜像卷中的偏移长度和备份数据写入的时刻;
元数据写入单元,用于将所述元数写入全局日志,同时将一致点元数据在全局日志中的位置写入到所述一致性点日志;
备份数据写入单元,用于将备份数据写入镜像卷时,通过写时拷贝将旧数据拷贝到日志卷中,再将备份数据写入镜像卷。
10.根据权利要求9所述的一种ORACLE数据库块级CDP备份恢复系统,其特征在于,所述数据恢复模块,包括:
一致点选择单元,用于在确定恢复时间目标后,遍历所述一致性点日志,选择距离目标时间点最近的一致点;
数据恢复单元,用于在所述全局日志中查找到目标一致点,再结合全局日志中的元数据和存放了旧数据的日志卷,将旧数据按照顺序写入到镜像卷的拷贝,直到将目标一致点的数据写入到所述镜像卷的拷贝中;
挂载单元,用于将所述镜像卷的拷贝进行挂载,完成数据恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310023408.XA CN115827334A (zh) | 2023-01-09 | 2023-01-09 | Oracle数据库块级cdp备份恢复方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310023408.XA CN115827334A (zh) | 2023-01-09 | 2023-01-09 | Oracle数据库块级cdp备份恢复方法及其系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115827334A true CN115827334A (zh) | 2023-03-21 |
Family
ID=85520368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310023408.XA Pending CN115827334A (zh) | 2023-01-09 | 2023-01-09 | Oracle数据库块级cdp备份恢复方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115827334A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851133A (zh) * | 2024-03-07 | 2024-04-09 | 成都云祺科技有限公司 | Xen半虚拟化的无代理实时备份方法、系统及恢复方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899161A (zh) * | 2015-06-12 | 2015-09-09 | 华中科技大学 | 一种基于云存储环境的连续数据保护的缓存方法 |
US9927980B1 (en) * | 2016-03-31 | 2018-03-27 | EMC IP Holding Company LLC | Accessing point in time versions of a logical device in connection with I/O operations |
CN108255641A (zh) * | 2017-12-25 | 2018-07-06 | 南京壹进制信息技术股份有限公司 | 一种基于云平台的cdp容灾方法 |
CN108762984A (zh) * | 2018-05-23 | 2018-11-06 | 杭州宏杉科技股份有限公司 | 一种连续性数据备份的方法及装置 |
CN109669818A (zh) * | 2018-12-20 | 2019-04-23 | 广州鼎甲计算机科技有限公司 | 无本地缓存的连续数据保护方法和系统 |
CN111722962A (zh) * | 2020-06-19 | 2020-09-29 | 艾索信息股份有限公司 | 一种针对cdp数据的存储系统及其方法 |
US20200348842A1 (en) * | 2019-04-30 | 2020-11-05 | Rubrik, Inc. | Systems and methods for continuous data protection |
CN114647624A (zh) * | 2022-05-11 | 2022-06-21 | 成都云祺科技有限公司 | 块级cdp中数据库一致点的捕获方法、系统、存储介质 |
-
2023
- 2023-01-09 CN CN202310023408.XA patent/CN115827334A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104899161A (zh) * | 2015-06-12 | 2015-09-09 | 华中科技大学 | 一种基于云存储环境的连续数据保护的缓存方法 |
US9927980B1 (en) * | 2016-03-31 | 2018-03-27 | EMC IP Holding Company LLC | Accessing point in time versions of a logical device in connection with I/O operations |
CN108255641A (zh) * | 2017-12-25 | 2018-07-06 | 南京壹进制信息技术股份有限公司 | 一种基于云平台的cdp容灾方法 |
CN108762984A (zh) * | 2018-05-23 | 2018-11-06 | 杭州宏杉科技股份有限公司 | 一种连续性数据备份的方法及装置 |
CN109669818A (zh) * | 2018-12-20 | 2019-04-23 | 广州鼎甲计算机科技有限公司 | 无本地缓存的连续数据保护方法和系统 |
US20200348842A1 (en) * | 2019-04-30 | 2020-11-05 | Rubrik, Inc. | Systems and methods for continuous data protection |
CN111722962A (zh) * | 2020-06-19 | 2020-09-29 | 艾索信息股份有限公司 | 一种针对cdp数据的存储系统及其方法 |
CN114647624A (zh) * | 2022-05-11 | 2022-06-21 | 成都云祺科技有限公司 | 块级cdp中数据库一致点的捕获方法、系统、存储介质 |
Non-Patent Citations (1)
Title |
---|
颜州斌等: "一种Oracle远程备份与恢复系统的设计与实现", vol. 10, pages 15 - 20 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117851133A (zh) * | 2024-03-07 | 2024-04-09 | 成都云祺科技有限公司 | Xen半虚拟化的无代理实时备份方法、系统及恢复方法 |
CN117851133B (zh) * | 2024-03-07 | 2024-05-17 | 成都云祺科技有限公司 | Xen半虚拟化的无代理实时备份方法、系统及恢复方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2657859B1 (en) | Ensuring database log recovery consistency | |
Lehman et al. | A recovery algorithm for a high-performance memory-resident database system | |
US9535801B1 (en) | Xcopy in journal based replication | |
US7111136B2 (en) | Method and apparatus for backup and recovery system using storage based journaling | |
US7197520B1 (en) | Two-tier backup mechanism | |
EP2590086B1 (en) | Columnar database using virtual file data objects | |
US8949190B2 (en) | Point-in-time database recovery using log holes | |
US6567928B1 (en) | Method and apparatus for efficiently recovering from a failure in a database that includes unlogged objects | |
US6023710A (en) | System and method for long-term administration of archival storage | |
US7398422B2 (en) | Method and apparatus for data recovery system using storage based journaling | |
US6434681B1 (en) | Snapshot copy facility for a data storage system permitting continued host read/write access | |
EP2951694B1 (en) | Recovering pages of a database | |
US6539402B1 (en) | Using periodic spaces of block ID to improve additional recovery | |
US8868507B2 (en) | Method and apparatus for data recovery using storage based journaling | |
US5850507A (en) | Method and apparatus for improved transaction recovery | |
US7653664B2 (en) | Anchor for database synchronization excluding uncommitted transaction modifications | |
JP5274772B2 (ja) | データ・ストレージ内の時相データを維持するためのシステムおよび方法 | |
US7266574B1 (en) | Identification of updated files for incremental backup | |
EP1470485B1 (en) | Method and system for providing image incremental and disaster recovery | |
US20160350216A1 (en) | Method and apparatus for cache management of transaction processing in persistent memory | |
US20060143241A1 (en) | System and method for scaleable multiplexed transactional log recovery | |
CN115827334A (zh) | Oracle数据库块级cdp备份恢复方法及其系统 | |
US20130013874A1 (en) | Data store page recovery | |
CN114647624B (zh) | 块级cdp中数据库一致点的捕获方法、系统、存储介质 | |
US9411692B2 (en) | Applying write elision |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |