一种保证数据库一致性的CDP备份与恢复方法与流程

文档序号:14714490发布日期:2018-06-16 01:04阅读:554来源:国知局
一种保证数据库一致性的CDP备份与恢复方法与流程

本发明涉及数据备份和恢复技术领域,具体涉及一种保证数据库一致性的CDP备份与恢复方法。



背景技术:

CDP(continual data protection连续性数据保护)是一套方法,它可以捕获或跟踪数据的变化,并将其独立存放在生产数据之外,以确保数据可以恢复到过去的任意时间点。持续数据保护系统可以基于块、文件或应用实现,可以为恢复对象提供足够细的恢复粒度,实现几乎无限多的恢复时间点。

CDP产品主要包括基于文件级CDP备份、基于应用级CDP备份。

IO复制技术被业界广泛用于CDP产品开发,在一定程度上促进了CDP行业的发展;IO复制技术主要包括文件(系统)IO和磁盘卷IO;基于IO级复制的CDP产品能够应用在多种IT环境中,在一定程度上具有良好的适应性;但在应对数据库应用方面却存在不足,特别是数据的一致性,一直是困扰业界的技术难题。

数据库的最小存储单元一般称为数据块,基本都是固定大小,例如oracle的数据块大小默认是8k。在绝大多数情况下,每条IO记录都会包含完整结构的数据块,恢复后的数据库基本上满足了数据一致性;但这是弱一致性,只满足了数据块级的一致性,而数据库事务对象的逻辑结构一致性并没有达到。

更多的时候,CDP开发者并不关心一个或多个IO记录对应的事务行为,以及是否包含有效数据,这种逻辑一致性的检测往往被忽视了;这就是为什么还原之后的数据库虽然正常启动了,但在运行中却出现了其他的问题,例如:数据对象损坏、无法插入数据、实例无法启动、部分数据丢失等。

基于IO复制的CDP产品大都采用了IO过滤驱动技术,IO过滤驱动技术要求开发专门的IO过滤驱动程序,安装在操作系统上用来捕获并复制应用的IO记录;随着数据库的事务运行,IO记录不断产生,利用这些IO记录可以将数据库恢复到任意一个IO时间点状态。虽然达到了减少RPO(恢复点目标)的效果,可在某些情况下会引起数据库内部的问题,例如导致数据库打不开。一般可以尝试用其它IO记录恢复,但这无疑增加了恢复窗口,而且由于不了解有效事务数据的一致性时间点,而随意使用了任意时间还原IO记录,容易引起数据对象的逻辑组织不完整,导致对象无法使用;这种情况就是没有考虑数据库逻辑一致性问题。

数据库的事务行为会产生IO记录,作为事务行为的物理存在形式。每个IO记录由一个或多个数据块构成,IO记录数据长度是数据块大小的整数倍,可以方便地进行切分,有利于分析。

数据库的物理存储结构往往比较复杂,例如Oracle包括数据文件、控制文件、日志文件等,每种类型文件的数据块结构都不同;如果对这些文件的IO记录全部分析,那将是一项艰巨而复杂的工作。数据库事务行为一般都记录在事务日志里面,例如Oracle的redolog、MySQL的binlog等;事务日志文件中的每条记录表示一个事务行为,包括DML、DDL、DCL等操作。日志记录存在于一个或多个连续的数据块中,如附图1所示,事务日志文件由4个数据块构成,包含5个记录。事务日志的一致性决定了数据库整体的一致性,所以分析事务日志文件的IO记录。目前业界已经开放了多种数据库的事务日志的内部结构资料,大致来自技术论坛、数据库厂商、开源项目。利用分析事务日志的IO记录来确定数据库一致性状态,这是完全可行性的。



技术实现要素:

为解决现有技术中的不足,本发明提供一种保证数据库一致性的CDP备份与恢复方法,解决了现有基于IO复制的CDP技术很难保证数据库恢复后的逻辑一致性问题。

为了实现上述目标,本发明采用如下技术方案:一种保证数据库一致性的CDP备份方法,其特征在于:包括步骤:

1)配置IO过滤驱动,配置需要捕获的文件列表,将数据库文件添加到文件列表中;

2)IO过滤驱动根据文件列表捕获数据库文件产生的IO记录并且分析IO记录是否具有一致性,生成IO记录集,将IO记录集存入备份存储中;

3)将数据库文件做完全备份,完成CDP的初始备份;

4)初始备份结束后,将备份集写入备份存储中。

前述的一种保证数据库一致性的CDP备份方法,其特征是:所述步骤2)中IO过滤驱动根据文件列表捕获数据库文件产生的IO记录并且分析IO记录是否具有一致性;生成IO记录集,将IO记录集存入备份存储中,具体步骤包括:

(1)IO过滤驱动开始捕获数据库文件IO记录;

(2)判断当前捕获的IO记录是否是事务日志文件,如果是则转步骤(3),如果不是则将该IO记录标记成普通,生成IO记录集,最后将IO记录集存入备份存储,转步骤(1)继续捕获IO记录;

(3)如果当前IO记录是事务日志文件,将其按事务日志文件块大小进行切分成数据块,并将切分后的数据块放入数据块列表;

(4)遍历数据块列表分析数据块内部的事务日志记录信息,解析事务日志文件数据块的内部结构,判断当前数据块包含的最后一条事务日志记录数据是否是完整的;

(5)如果完整,则当前的数据块具有一致性,先记录该数据块信息,然后继续遍历数据块列表;如果不完整,则当前数据块是非一致性的,继续遍历数据块列表;

(6)在遍历数据块列表结束之后,根据记录的数据块信息标记当前IO记录;如果存在一致性的数据块则标记当前IO记录类型为一致性,并且设置一致性数据块的偏移位置,否则标记类型为普通;最后生成IO记录集;

(7)遍历结束后,将IO记录集写入备份存储,转步骤(1)继续捕获IO记录。

前述的一种保证数据库一致性的CDP备份方法,其特征是:所述IO记录集包括:IO记录集头部信息和IO记录数据,IO记录集头部信息包括记录集总长、类型、时间戳、一致性数据块的偏移位置;

所述记录集总长为IO记录集头部信息与IO记录数据长度的总和;

所述类型分为普通或一致性;如果当前IO记录包含一致性的数据块,那么此IO记录的类型就是一致性,反之则是普通;

所述时间戳为IO记录捕获的时间,用来实现指定时间点恢复;

所述一致性数据块的偏移位置为IO记录数据中一致性数据块的偏移位置,只有类型为一致性,此偏移位置才是有效的,在恢复的时候通过这个偏移位置,查找一致性的数据块。

一种保证数据库一致性的CDP恢复方法,其特征是:包括步骤:

1)IO过滤驱动停止对IO记录的捕获;

2)停止数据库的运行;

3)恢复初始备份集,从备份存储中读取初始备份集,并进行恢复;

4)使用IO记录集恢复文件;

5)重新启动数据库、IO过滤驱动,恢复完成。

前述的一种保证数据库一致性的CDP恢复方法,其特征是:所述步骤4)使用IO记录集恢复文件,包括步骤:

(1)从备份存储中遍历读取IO记录集;

(2)判断当前IO记录集是否为事务日志文件,如果不是事务日志文件,则直接用这个IO记录集恢复文件,然后转步骤(1)继续遍历IO记录集;

(3)如果当前IO记录集是事务日志文件,判断当前IO记录集类型是否是一致性的,如果不是则直接用这个IO记录集恢复,然后转步骤(1)继续遍历IO记录集;

(4)如果当前IO记录集的类型是一致性的,判断头部的时间戳字段是否达到指定的恢复时间点,如果没有达到则直接用这个IO记录集恢复,然后转步骤(1)继续遍历IO记录集;如果到达指定的恢复时间点,则恢复到这个IO记录集的一致性数据块的偏移位置;

(5)遍历下一个IO记录集,直至所有IO记录恢复完成。

前述的一种保证数据库一致性的CDP恢复方法,其特征是:所述IO记录集包括:IO记录集头部信息和IO记录数据,IO记录集头部信息包括记录集总长、类型、时间戳、一致性数据块的偏移位置;

所述记录集总长为IO记录集头部信息与IO记录数据长度的总和;

所述类型分为普通或一致性;如果当前IO记录包含一致性的数据块,那么此IO记录的类型就是一致性,反之则是普通;

所述时间戳为IO记录捕获的时间,用来实现指定时间点恢复;

所述一致性数据块的偏移位置为IO记录数据中一致性数据块的偏移位置,只有类型为一致性,此偏移位置才是有效的,在恢复的时候通过这个偏移位置,查找一致性的数据块

本发明所达到的有益效果:本发明通过分析事务日志的IO记录来确定数据库一致性状态,优化了传统基于IO复制技术的CDP产品的数据库一致性方法,在性能上、准确率上、有效性上都有显著的提高。

附图说明

图1是事务日志文件的IO记录组成结构示意图;

图2是本发明CDP备份流程图;

图3是本发明IO捕获分析流程图;

图4是IO记录集的组成结构示意图;

图5是本发明CDP恢复流程图;

图6是本发明IO记录恢复流程图。

具体实施方式

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

为了保证数据库CDP恢复后的一致性,需要在IO捕获过程中分析IO记录并找到具有满足一致性条件的数据块,目的是为了在CDP恢复过程根据这些一致性的数据块去确定有效的截止IO记录。数据块一致性的条件是数据块中必须包含完整的事务日志记录。IO记录是由数据块构成,由数据库进程产生,数据块共有两种组织方式:

1)数据块包含的最后一条事务日志记录数据是完整的,如图1中的数据块1、2、4;

2)数据块包含的最后一条事务日志记录数据是不完整的,剩余部分在下一个数据块中,如图1中的数据块3,其中的事务日志记录4的前部分在数据块3中,后部分在数据块4中。

满足组织方式1),可认为数据块是具有一致性的。

数据库在运行过程中会对文件进行写操作,数据库文件主要包括数据文件、日志文件,这些文件的IO记录都是要被捕获的。

如图2所示,一种保证数据库一致性的CDP备份方法,具体步骤包括:

1)配置IO过滤驱动,配置需要捕获的文件列表,将数据库文件添加到文件列表中;

2)IO过滤驱动根据文件列表捕获数据库文件产生的IO记录并且分析IO记录是否具有一致性,生成IO记录集,将IO记录集存入备份存储;数据库文件产生的IO记录相当于实时增量备份;IO捕获首先开始,然后执行初始备份;

3)将数据库文件做完全备份,完成CDP的初始备份;

4)初始备份结束后,将备份集写入备份存储中。

如图3所示,所述步骤2)中IO过滤驱动根据文件列表捕获数据库文件产生的IO记录并且分析IO记录是否具有一致性,生成IO记录集,将IO记录集存入备份存储,具体步骤包括:

1)IO过滤驱动开始捕获数据库文件IO记录;

2)判断当前捕获的IO记录是否是事务日志文件,如果是则转步骤3),如果不是则将该IO记录标记成普通,生成IO记录集,最后将IO记录集存入备份存储,转步骤1)继续捕获IO记录;

3)如果当前IO记录是事务日志文件,将其按事务日志文件块大小进行切分成数据块,并将切分后的数据块放入数据块列表;

4)遍历数据块列表分析数据块内部的事务日志记录信息,解析事务日志文件数据块的内部结构,判断当前数据块包含的最后一条事务日志记录数据是否是完整;

5)如果完整,则当前的数据块具有一致性,先记录该数据块信息,然后继续遍历数据块列表;如果不完整,则当前数据块是非一致性的,继续遍历数据块列表;

6)在遍历数据块列表结束之后,根据记录的数据块信息标记当前IO记录;如果存在一致性的数据块则标记当前IO记录类型为一致性,并且设置一致性数据块的偏移位置,否则标记类型为普通;最后生成IO记录集;

7)遍历结束后,将IO记录集写入备份存储,转步骤1)继续捕获IO记录。

如图4所示,所述IO记录集包括:IO记录集头部信息和IO记录数据,IO记录集头部信息包括记录集总长、类型、时间戳、一致性数据块的偏移位置,IO记录集头部字段说明如下:

记录集总长:IO记录集头部信息与IO记录数据长度的总和;

类型:普通或一致性;如果当前IO记录包含一致性的数据块,那么此IO记录的类型就是一致性,反之则是普通。

时间戳:IO记录捕获的时间,用来实现指定时间点恢复。

一致性数据块的偏移位置:IO记录数据中一致性数据块的偏移位置,只有类型为一致性,此偏移位置才是有效的,在恢复的时候通过这个偏移位置,查找一致性的数据块。

如图5所示,一种保证数据库一致性的CDP恢复方法,包括步骤:

1)IO过滤驱动停止对IO记录的捕获;

2)停止数据库的运行;

3)恢复初始备份集,从备份存储中读取初始备份集,并进行恢复;

4)使用IO记录集恢复文件;

5)重新启动数据库、IO过滤驱动,恢复完成。

如图6所示,所述步骤4)使用IO记录集恢复文件,包括步骤:

1)从备份存储中遍历读取IO记录集;

2)判断当前IO记录集是否为事务日志文件,如果不是事务日志文件,则直接用这个IO记录集恢复文件,然后转步骤1)继续遍历IO记录集;

3)如果当前IO记录集是事务日志文件,判断当前IO记录集类型是否是一致性的,如果不是则直接用这个IO记录集恢复,然后转步骤1)继续遍历IO记录集;

4)如果当前IO记录集的类型是一致性的,判断头部的时间戳字段是否达到指定的恢复时间点,如果没有达到则直接用这个IO记录集恢复,然后转步骤1)继续遍历IO记录集;如果到达指定的恢复时间点,则恢复到这个IO记录集的一致性数据块的偏移位置;

5)遍历下一个IO记录集,直至所有IO记录恢复完成。

本发明通过分析事务日志的IO记录来确定数据库一致性状态,优化了传统基于IO复制技术的CDP产品的数据库一致性方法,在性能上、准确率上、有效性上都有显著的提高。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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