oracle一种基于全量数据的增量备份方案

2024-12-19

oracle一种基于全量数据的增量备份方案(精选2篇)

oracle一种基于全量数据的增量备份方案 篇1

一种基于全量数据的增量备份方案

1、发明名称

一种基于全量数据的增量数据备份方案 摘要:

本发明公开了一种基于全量数据的增量备份方案,本文中采取的全量数据增量备份方案包括:读取原始数据与数据库当前数据、原始数据与数据库当前数据对比并生成对比结果日志——筛选出增量数据、按照对比结果将增量数据存入数据库临时增量表,最后将增量数据备份至数据库。整个备份过程,使用了MD5(Message Digest Algorithm MD5)信息摘要算法和二分查找算法等IT技术,极大的提高了运行效率。通过本发明可以对海量数据进行高效、可靠、快速的备份,对此类问题的解决具有普遍意义。

开始读取原始数据与数据库当前数据数据比对生成比对结果筛选增量数据增量数据存入数据库临时增量表增量数据备份至数据库结束

2、权利要求书

1.读取原始数据与数据库当前数据:使用MD5(Message Digest Algorithm MD5)信息摘要算法读取原始数据与数据库当前数据,其中数据文件为-CSV格式的文件; 2.数据比对生成比对结果筛选增量数据:原始数据MD5散列值与数据库当前数据的MD5散列值进行全量比对,生成比对结果保存在日志文件中,检索出增量数据; 3.增量数据入数据库临时增量表:按照将通过数据比对筛选出来的增量数据存入数据库临时增量表;

4.增量数据备份至数据库:按照增量表内的数据,通过增加、修改、删除操作更新数据库当前数据,实现原始数据全量备份至数据库;

3、说明书 3.1、技术领域

本申请是一种进行海量数据增量备份的方法。通过本发明可以对海量数据进行高效、可靠、快速的备份,对此类问题的解决具有普遍意义。

3.2、背景技术

目前在有着某种业务关联的分布式数据库和分布式信息系统的各类应用中,常常需要对不同的分布式数据库和信息应用系统中的一些关键数据进行同步,以维护它们之间的数据的一致性。在需要同步的数据量、信息应用系统的独立性、实时性及容错性要求不高的情况下,通常使用数据库同步、ftp、http 下载或者简单的接口调用等方法就可以满足需求。但是,一旦所涉及的数据量达到海量(数以亿计)级别而需要同步的数据仅仅为总数据量的一个很小的子集时,如何快速定位到需要同步的数据也会是一个异常突出的问题,本发明即根据此类问题的要求,通过使用MD5(Message Digest Algorithm MD5)信息摘要算法和二分查找算法等IT技术,解析读取数据,比对数据筛选出增量数据,按照增量数据更新数据,从而实现原始数据全量备份;

4、发明内容

4.1、发明的目的

解决海量数据的增量备份。

4.2、实现的步骤

本方案包括:解析、读取原始数据与数据库当前数据、数据比对生成比对结果筛选增量数据、增量数据入数据库临时增量表、增量备份至数据库。

其中筛选增量数据分为筛选:需要在当前数据库内增加的数据、需要根据原始数据在当前数据库内修改的数据、需要在当前数据库内删除的数据,下文将根据以上三种情况来分类阐述本方案中的“解析、读取原始数据与数据库当前数据、数据比对生成比对结果筛选增量数据”步骤,“增量数据入数据库临时增量表、增量备份至数据库”步骤不再分类阐述。4.2.1、读取原始数据与数据库当前数据

开始读取当前数据库中的一条记录,将主键值与其对应的整条记录的值转化成MD5散列值读取原始数据中的一条记录,将主键值与其对应的整条记录的值转化成MD5散列值否业务主键MD5散列值存入字符串数组YS1,整条记录的MD5散列值存入字符串数组YS1业务主键MD5散列值存入字符串数组TS1,整条记录的MD5散列值存入字符串数组TS1否文件是否读完是是文件是否读完结束

上图为读原始数据与数据库当前数据流程图,详细步骤如下:首先根据业务确定资源对象的业务主键,依次读取当前数据库中的每一条记录,抽取其业务主键值和整条记录的值,通过MD5(Message Digest Algorithm MD5)信息摘要算法将业务主键值与其对应的整条记录的值转化成MD5散列值,分别存入到字符串数组YS1和YS2中。

采用上述同样的数据读取方式,将原始CSV格式的数据文件,依次读出并通过MD5算法转化成MD5散列值,分别存入字符串数组TS1和TS2。4.2.2、数据比对生成比对结果-筛选增量数据

为了提高全量比对效率,系统采用多进程、多线程操作系统,将参与全量比对的对象随机分配在5个不同的线程队列中,相比于单线程全量比对操作系统,效率提高5倍;

数据比对进行需两次比对,第一次比对筛选出增加的数据、修改的数据,第二次比对筛选出删除的数据,两次比对详细描述如下。

4.2.2.1、筛选出增加的数据、修改的数据

开始YS1和YS2字符串数组排序读取原始数据中的一条记录,将主键值与其对应的整条记录的值转化成MD5散列值主键值在YS1中查找存在整条记录值在YS2中查找存在不存在在LOG文件中记录该条记录实际值并标识位A否不存在在LOG文件中记录该条记录实际值并标识位M数据是否读完结束 上图为筛选增加数据、修改数据的流程图,详细描述如下: 首先将字符串数组YS1和YS2排序,依次使用原始数据一条记录的业务主键MD5散列值在YS1中使用二分查找算法查找,分以下情况:

 若不存在,则说明该条原始数据为新增的数据,并在LOG文件中记录原始数据中该条据的实际值,以A(add)进行标记;

 若存在,则使用原始数据中该记录的整条记录的MD5散列值--TS2在YS2中折半查找:若不存在,则说明该条数据为需要在当前数据库中除业务主键外其他信息需要修改的数据,并在LOG文件中记录原始数据中该条据的实际值,以M(modify)进行标记;

若原始数据该条记录的业务主键MD5散列值、整条记录MD5散列值,即存在于YS1又存在于YS2中,则说明该条记录无变化,无需更新。

4.2.2.2、筛选出删除的数据

开始将TS1排序读取当前数据库的一条记录,将字符串转换成MD5散列值否主键值在TS1中查找存在在LOG文件中记录该条记录实际值并标识位D不存在数据是否读完结束 上图为筛选删除数据的流程图,详细描述如下:

首先将字符串数组TS1和TS2排序,依次使用数据库一条记录的业务主键MD5散列值在TS1中使用二分查找算法查找,若不存在则说明该条数据为需要在当前数据库中删除的数据,并在LOG文件中记录当前数据库中该条据的实际值,以D(delete)进行标记;

4.2.3、增量数据入数据库临时增量表

当前数据库执行存储过程,将比对过程生成的LOG文件中的数据读入到数据库临时增量表中,按照LOG文件中的标识码在临时增量表中的每条记录后面添加一个属性值其中:LOG文件中‘A’对应临时增量表中‘I’(insert 新增的数据)、LOG文件中‘M’ 对应临时增量表中‘U’(update更新的数据)、LOG文件中‘D’ 对应临时增量表中‘D’(delete删除的数据);

4.2.4、增量备份至数据库

当前数据库执行存储过程,读取数据库临时增量表中一条记录,标识码在当前数据库相对应的表中做增删改操作,如下:

 若临时增量表中标识码为‘I’则在当前数据库相对应的表中插入该条记录;  若临时增量表中标识码为‘D’则在当前数据库相对应的表中删除该条记录;  若临时增量表中标识码为‘U’则在当前数据库相对应的表中先删除当前数据库该条记录,再把原始数据中与该条记录的业务主键值相等的记录插入到数据库中; 按照以上操作实现全量数据增量备份。

5、附录

5.1、MD5(Message Digest Algorithm MD5)信息摘要算法

所谓MD5,即“Message-Digest Algorithm 5(信息-摘要算法)”,它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前“压缩”成一种保密的格式,关键之处在于——这种“压缩”是不可逆的。

MD5信息-摘要算法,用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的 MD5信息摘要。

5.2、二分查找算法

折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果xa[n/2],则我们只要在数组a的右 半部继续搜索x。

二分查找的基本思想是:(设R[low..high]是当前的查找区间)

(1)首先确定该区间的中点位置:

(2)然后将待查的K值与R[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找,具体方法如下:

①若R[mid].key>K,则由表的有序性可知R[mid..n].keys均大于K,因此若表中存在关键字等于K的结点,则该结点必定是在位置mid左边的子表R[1..mid-1]中,故新的查找区间是左子表R[1..mid-1]。②类似地,若R[mid].key

因此,从初始的查找区间R[1..n]开始,每经过一次与当前查找区间的中点位置上的结点关键字的比较,就可确定查找是否成功,不成功则当前的查找区间就缩小一半。这一过程重复直至找到关键字为K的结点,或者直至当前的查找区间为空(即查找失败)时为止。

oracle一种基于全量数据的增量备份方案 篇2

Oracle的备份方法与方案设计与其归档方式有直接关系, 因为如果选择了通过日志进行数据库恢复的备份方法, 则必须让oracle运行在归档模式下[1]。对于oracle而言, 每一个实例至少有两个日志文件组, 该文件中记录了全部的数据库修改信息。当一个日志文件组被填满后, 如果运行在归档模式下, 那么将会发生日志切换, 形成归档日志, 也即历史日志被保存在截止上, 相反如果在非归档模式下, 历史日志文件将被覆盖, 不会产生归档日志。显然为了保证oracle的安全, 应将其设置为归档模式。数据库的归档与否可以用archive log list命令查看。

二、oracle数据库的备份方式分类

Oracle数据库备份大致分为以下几种模式:

1、物理备份数据库

即对oracle的操作系统文件及备份, 包括数据文件、日志文件、控制文件和参数文件, 它可以利用操作系统本身的工具将这些文件复制到磁盘、磁带。 (一) 完全脱机备份 (冷备份) , 即将oracle关闭后进行的备份。显然此类备份是到关闭oracle为止, 数据库是同步的, 它不需要恢复。将这些文件拷贝到其他电脑上, 进行一定得设置 (如参数、路径) 后可以直接使用。备份方法是通过select*from dba_data_files (v$logfile、v$controlfile) 确认数据文件、日志文件、控制文件路径, 然后关闭oracle, 对文件进行复制备份。 (二) 部分联机备份 (热备份) , 它是在oracle运行时, 对部分表空间、各类文件进行备份。显然, 此时备份后的文件如果要再使用, 由于oracle不同步, 需要恢复。其备份方法如下: (1) 设置备份对象为备份状态, alter tabalespace表空间名begin backup, 该oracle对象的检验点号将停止修改, 文件被冻结。 (2) 使用操作系统命令, 备份该表空间下面的数据文件、日志文件、控制文件等。 (3) 恢复oracle对象为正常状态, 命令为alter tabalespace表空间名end backup。 (三) 部分脱机备份 (热备份) 。其备份与恢复的原理与部分联机备份大致相似, 区别就在于在备份之前需要将oracle备份对象置为脱机状态:alter tabalespace表空间名offline, 然后利用操作系统命令进行备份, 最后alter tabalespace表空间名online。 (四) 控制文件和参数文件的备份。参数文件是关于oracle的配置文件, 无论联机脱机, 其都不需要恢复, 但是控制因为是与数据文件、日志文件等保持同步的, 因此如果采用联机备份, 必须进行恢复。其备份方法为:alter database backup controlfile to‘目标路径及文件名’。相对于冷备份, 脱机备份有以下优点:备份时间短, oracle不用关闭;可达到秒级恢复 (即恢复到某一时间点上) ;在归档环境下, 恢复迅速。

2、逻辑备份数据库

逻辑备份时利用oracle提供的操作系统工具export将数据库中的数据卸出成一个二进制的操作系统文件, 然后用import命令装入。物理备份是针对操作系统文件的备份, 而逻辑备份只备份oracle的逻辑对象, 如表、视图、触发器、函数、存储过程、序列、包以及包体等。其备份的特点在于:备份的信息不包含操作系统信息, 这使卸出的数据可以在不同平台之间传输;按时间保存表结构和数据, 即卸出时按表的创建时间卸出, 载入时按卸出顺序进行;允许卸出指定的数据库对象, 如某个表、某个视图等, 而这是用物理备份时无法完成的;可以将数据库在不同的服务器之间转移等[2]。其备份方法如下: (1) 操作系统符号下输入’exp’命令, 输入要导出的用户名和密码 (如果是非本机数据库还需要连接字符串) 。 (2) 选择导出输入文件的保存路径以及提取缓冲区大小。 (3) 选择导出方式, 即U (用户) 、T (表) 、E (整个数据库) 。对于信息系统而言, 其数据都保存在数据库里面的一个用户里面, 因此多选择U进行oracle备份。在这种模式下, 会将该用户的所有实体, 如表定义、表数据、表授权、索引、完整性约束、触发器、资源文件、角色、日志、存储过程等全部导出。如果只导出某个表, 则可以选择T方式。另外需要指出的是, exp命令可以只导出逻辑实体, 不导出表数据, 即卸出一个没有数据的数据库对象, 这对于重建信息系统, 但又不能修改程序和数据库的系统而言非常有用。 (4) imp装入, 即将卸出的逻辑对象装入数据库。其也是在操作系统命令下, 选择装入模式即可。

三、oracle数据库的备份策略

所谓的数据库备份策略, 就是一种或多种的数据库备份方法的组合。好的备份策略既要保证数据库的安全稳定, 不间断运行, 又要保证备份工作量不是太大[3]。常用的备份策略有以下几种: (一) 联机备份、脱机备份和逻辑备份相结合。前两者依赖于介质和操作系统的稳定, 一旦物理备份损坏, 就很难进行数据库恢复。此时可以重新创建数据库, 然后用逻辑备份。 (二) 尽可能在备份完成之后, 检查备份是否成功、有效。对于exp的备份文件可以用imp进行检测, 对控制文件和数据文件用DBV检查。 (三) 采取多级备份方式。这需要根据信息系统的规模、使用人数、安全级别等多种因素综合考虑, 如采用以下多级别备份方式:每半年做1个数据库的全备份 (采用冷备份方式备份所有的文件) ;每1个月做1次零级备份;每个星期做1次1级备份;每天做1次2级备份等。几级备份是一个相对概念。备份命令如下:零级备份, backup incremental level 0 database;一级累计增量备份, backup incremental level 1 cumulative database;一级差异增量备份, backup incremental level1 database。同时备份介质最好使用大容量的磁带或磁带库, 且备份的磁带需要注意其保护方法。 (四) 采用定时进行联机备份和逻辑备份的方法。如逻辑备份, 可以设置在晚上业务量较少的时候进行。脚本文件如下:

通过以上方式可以实现备份文件的定期覆盖, 避免备份文件数量过多, 浪费空间。当然也可以采用采取自动物理数据库备份的方式。假设某公司针对其信息系统采取以下备份策略:周日0级, 周三1级, 其他五天都为2级, 那么差异增量只需要使用周日的0级和星周三的一级以及周四周五的二级就可以恢复。而累积增量则需要周日的0级、周三的1级、周五的二级即可。针对公司信息系统规模的大小和其他实际情况, 可以将以上的备份周期适当延长, 以月为单位进行数据库备份。

参考文献

[1]张自辉:《ORACLE数据库的备份方法和策略》, 《吉首大学学报》 (自然科学版) , 2009, 30 (1) 。

[2]孙风栋、闫海珍:《Oracle10g数据库系统性能优化与调整》, 《计算机技术与发展》, 2009, 19 (2) 。

上一篇:信息技术课程教学的ITtools3.0辅助平台下一篇:国际班面试自我介绍