技术领域
[0001] 本
发明涉及数据库备份和恢复技术领域,尤其涉及一种基于海量数据的数据库备份及恢复方法和系统。
背景技术
[0002] 对于Oracle数据库而言,传统的数据库备份和恢复方案有数据导出、数据热备份2种主要方式。
[0003] 1、通过数据导出方式备份数据
[0004] 如图1所示,其利用自带EXP/EXPDP工具导出数据来实现数据备份,适用于数据量少、更新
频率小、数据安全性要求不高的情况。恢复方式则从导出数据中直接将需要恢复的对象(分区)重新导入到数据库中即可。
[0005] 2、数据库热备份
[0006] 这种方式较常见,如图2所示,其要求数据库以归档的方式运行,通过Rman工具实现,还可以实现数据的增量备份,可有效地节省磁盘空间。恢复时,以最后一次全库备份+最后一次全库备份之后的增量备份+归档日志来操作。
[0007] 以上两种传统的备份、恢复方案,在业务数据量不大的情况,都能达到不错的效果。当数据量达到一定程度时,这些传统的备份和恢复方案,将显得效率低下、甚至
力不从心。
发明内容
[0009] 鉴于现有技术的不足,本发明目的在于提供一种基于海量数据的数据库备份及恢复方法和系统。旨在解决现有技术的备份和恢复方案在应对海量数据时效率低下的问题。
[0010] 本发明的技术方案如下:
[0011] 一种基于海量数据的数据库备份及恢复方法,其中,包括以下步骤:
[0012] 进行数据库备份时:
[0013] S1、将每个表分区和分区索引创建到单独的表空间上,并将需要备份的表分区以及分区索引所在表空间设置为只读;
[0014] S2、将需要导出的分区和分区索引与一个临时表和索引进行分区交换;
[0015] S3、对需要备份的临时表和索引以导出表空间的方式备份;
[0016] S4、复制表空间文件,并与导出的文件一起保存,同时删除表空间;
[0017] 进行数据库恢复时:
[0018] 把待还原的表空间文件复制到对应的路径下,将导出的元数据文件重新导回数据库中,然后将导入的临时表通过分区交换方式把数据库和索引交换到原表中,即完成数据恢复。
[0019] 所述的基于海量数据的数据库备份及恢复方法,其中,在进行数据库备份时,还包括步骤S5、将导出的数据文件归档,并存储在存储介质、磁盘柜或磁带机中。
[0020] 一种基于海量数据的数据库备份及恢复系统,其中,包括:
[0021] 数据库备份系统,其进一步包括:
[0022] 设置单元,用于将每个表分区和分区索引创建到单独的表空间上,并将需要备份的表分区以及分区索引所在表空间设置为只读;
[0023] 分区交换单元,用于将需要导出的分区和分区索引与一个临时表和索引进行分区交换;
[0024] 备份单元,用于对需要备份的临时表和索引以导出表空间的方式备份;
[0025] 保存单元,用于复制表空间文件,并与导出的文件一起保存,同时删除表空间;
[0026] 数据库恢复系统,其用于把待还原的表空间文件复制到对应的路径下,将导出的元数据文件重新导回数据库中,然后将导入的临时表通过分区交换方式把数据库和索引交换到原表中,完成数据恢复。
[0027] 所述的基于海量数据的数据库备份及恢复系统,其中,所述数据库备份系统还包括归档单元,用于将导出的数据文件归档,并存储在存储介质、磁盘柜或磁带机中。
[0028] 有益效果:
[0029] 本
申请的基于海量数据的数据库备份及恢复方法和系统,通过以传递表空间的方式备份表空间数据,从根本上解决了海量数据备份和恢复效率低下、易出错等问题。本发明已成功运用在实际生产环境中,经实践证明,发现其处理效率比传统备份和恢复方法提升了80%,同时很好地保证数据的完整性和安全性。
附图说明
[0030] 图1为现有技术中通过数据导出方式备份数据的示意图。
[0031] 图2为现有技术中通过数据库热备份方式备份数据的示意图。
[0032] 图3为本发明的基于海量数据的数据库备份及恢复方法中数据库备份方法的
流程图。
[0033] 图4为本发明的基于海量数据的数据库备份及恢复方法中数据库备份方法的较佳
实施例的示意图。
具体实施方式
[0034] 本发明提供一种基于海量数据的数据库备份及恢复方法和系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0035] 为了方便描述,我们将本方案分成两部分:数据库备份和数据库恢复。
[0036] 请参阅图1,其为本发明的基于海量数据的数据库备份及恢复方法中数据库备份方法的流程图。如图所示,所述基于海量数据的数据库备份及恢复方法中进行数据库备份时包括以下步骤:
[0037] S1、将每个表分区和分区索引创建到单独的表空间上,并将需要备份的表分区以及分区索引所在表空间设置为只读;
[0038] S2、将需要导出的分区和分区索引与一个临时表和索引进行分区交换;
[0039] S3、对需要备份的临时表和索引以导出表空间的方式备份;
[0040] S4、复制表空间文件,并与导出的文件一起保存,同时删除表空间。
[0041] 下面分别针对上述步骤进行详细描述:
[0042] 所述步骤S1为将每个表分区和分区索引创建到单独的表空间上,并将需要备份的表分区以及分区索引所在表空间设置为只读。这里需要强调的是,在进行数据备份时,必须进行表分区。也就是说,以传递表空间的方式进行数据备份,通常来说,需要结合表分区技术一起使用的。因为表空间导出的前提就是将表空间的状态设置为只读(Read Only),如果表空间上存储的是非分区表,通常很难将整个表设置成只读,所以是不可行的。
[0043] 所述步骤S2为将需要导出的分区和分区索引与一个临时表和索引进行分区交换。其解决分区表的默认表空间没有包含在传递的表空间和表分区还有其他分区,没有在要传递的表空间上这2大约束,直接实现对分区的表空间进行移植,在本实施例中,如图3所示,其具体方法如下:
[0044] (1)、创建一个须备份的表空间(TS_SALES_2012_1)、分区(SALES_2012_1)和索引(IND_SALES_2012_1)。
[0045] (2)、创建一个临时表(TMP_SALES_DATA)。
[0046] (3)、在临时表上创建索引(IND_TMP_SALES_DATA)。
[0047] (4)、将需要导出的分区数据和分区索引与临时表进行分区交换。
[0048] (5)、将临时表和索引所在的表空间导出。
[0049] 所述步骤S3为对需要备份的临时表和索引以导出表空间的方式备份。相比于传统的数据备份方式(仅仅采用一个逻辑数据
抽取的过程,数据库需要按照导出的条件通过数据搜索的方式将数据搜索到,然后导出到磁盘上),本方案而以传递空间的方式导出数据,实际上只导出了表空间的一些元数据(metadata)信息,也就是数据机构类信息,剩下的工作就是直接将表空间数据文件复制到介质上,和导出的元数据信息放在一起保存即可。
[0050] 所述步骤S4为复制表空间文件,并与导出的文件一起保存,同时删除表空间。比如对于过期的表空间,备份完毕后删除,以释放空间。
[0051] 进一步地,在进行数据库备份时,还包括步骤S5、将导出的数据文件归档,并存储在存储介质、磁盘柜或磁带机中。
[0052] 以传递表空间的方式进行备份数据,是在长期的项目实践中总结出来的一套有效、高效的海量数据库备份/恢复方案,因此具有很高的实战指导作用。它通过传递表空间或者表导出的方式将数据库中的数据导出来,然后将这些文件归档到存储介质上。
[0053] 在进行数据恢复时,只需把待还原的表空间文件复制到对应的路径下,将导出的元数据文件重新导回数据库中,然后将导入的临时表通过分区交换方式把数据库和索引交换到原表中,即完成数据恢复。
[0054] 本发明还提供了一种基于海量数据的数据库备份及恢复系统,其包括:
[0055] 数据库备份系统,其进一步包括:
[0056] 设置单元,用于将每个表分区和分区索引创建到单独的表空间上,并将需要备份的表分区以及分区索引所在表空间设置为只读;
[0057] 分区交换单元,用于将需要导出的分区和分区索引与一个临时表和索引进行分区交换;
[0058] 备份单元,用于对需要备份的临时表和索引以导出表空间的方式备份;
[0059] 保存单元,用于复制表空间文件,并与导出的文件一起保存,同时删除表空间;
[0060] 数据库恢复系统,其用于把待还原的表空间文件复制到对应的路径下,将导出的元数据文件重新导回数据库中,然后将导入的临时表通过分区交换方式把数据库和索引交换到原表中,完成数据恢复。
[0061] 进一步地,所述的基于海量数据的数据库备份及恢复系统中,所述数据库备份系统还包括归档单元,用于将导出的数据文件归档,并存储在存储介质、磁盘柜或磁带机中。
[0062] 上述模
块的功能都已经在上述方法中进行了详细介绍,这里就不再冗述了。
[0063] 综上所述,本发明的基于海量数据的数据库备份及恢复方法和系统,通过以传递表空间的方式备份表空间数据,从根本上解决了海量数据备份和恢复效率低下、易出错等问题。本发明已成功运用在实际生产环境中,经实践证明,发现其处理效率比传统备份和恢复方法提升了80%,同时很好地保证数据的完整性和安全性。
[0064] 应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附
权利要求的保护范围。