数据库备份方案
数据库备份,是在数据丢失的情况下,能及时恢复重要数据,防止数据丢失的一种重要手段。一个合理的数据库备份方案,应该能够在数据丢失时,有效地恢复重要数据,同时需要考虑技术实现难度和有效地利用资源。
1.1. 准备工作
在制订数据备份方案前,我们首先对要对现实情况做一个具体的调查,这样制订出来的方案才是合理且有效的。一般,我们需要了解如下内容:
l 数据丢失的允许程度?
l 允许的故障处理时间?
l 业务处理的频繁程度?
l 服务器的工作负荷?
l 可接受的备份/恢复处理技术难度?
l 数据库的大小?
l 数据库大小的增长速度?
l 那些表中的数据变化是频繁的,那些表中的数据是相对固定的?
l 那些表中的数据是很重要的,不允许丢失的,那些表中的数据是允许丢失一部分的?
l 什么时候大量使用数据库,导致频繁的插入和更新操作?
l 现有的数据库备份资源(磁盘、磁带、光盘)有哪些?
l 有无可能为数据库备份投入新的设备或资金?
1.2. 备份方法
了解现状后,我们再看看SQL Server提供给我们的备份方法,SQL Server一共给我们提高了四种数据库备份的方法:
1.2.1. 完全备份
这种备份会备份数据库中所有的数据。因此,它生成的备份文件大小和备份时间是由数据库中,数据的容量决定的。还原的时候,可以直接从备份文件还原到备份时的状态,不需要其他文件的支持,还原过程最简单;
1.2.2. 差异备份
备份自上次完全备份后,发生了更改的数据。差异备份是备份发生了更改的数据,因此在做差异备份前,必须至少有一次完全备份。而还原的时候,也必须先还原差异备份前一次的完全备份,才能在此基础上进行差异备份数据的还原。这种备份生成的备份文件大小和备份需要的时间,取决于自上次完全备份后,数据库的数据变化情况,相对于完全备份来说,它生成的备份文件较小,备份时间较短,对SQL Server服务性能的影响也较小;但它的还原过程相对麻烦一点,必须对应它之前的完全备份才能成功还原;
1.2.3. 日志备份
备份是自上次备份后对数据库执行的所有事务的一系列记录,这个上次备份,可以是完全备份、差异备份、日志备份,但日志备份前,至少有一次完全备份。还原的时候,必须先还原完全备份,再还原差异备份(如果有的话),再按照日志备份的先后顺序,依次还原各次日志备份的内容;这种备份生成的备份文件最小,需要的时间也最短,对SQL Server服务性能的影响也最小,适宜于经常备份。但是很显然地,它的还原过程是最麻烦的,不但要对应它之前做的完全备份和差异备份(如果有的话),还要注意还原的顺序;
1.2.4. 文件和文件组备份
可以备份和还原数据库中的个别文件或文件组。这种备份方法平常使用的机率比较少,常常用于对重要数据的备份。它要求在数据库设计时,就做好考虑,把需要单独做特别备份的表进行分组,给它们分配不同的文件组(表只能放在文件组上,不能放在具体的文件上,一个文件组可以是一个文件或多个文件),这样才能在做备份的时候,单独备份这些数据。这种的备份的处理技术难度相对来说比较高,不但要掌握备份/还原的方法,还必须对数据库结构和数据库中的各表数据情况掌握得比较好。
1.3. 备份方案制订策略
有了上面的资料,我们就可以根据我们的实际情况来选择合适的备份方法了。一般的,我们在制订备份方案的时候,可以按照下面的策略:
l 数据库备份能保障在数据丢失的情况下,能恢复重要数据,因此,在数据库中的数据发生变化后,要及时对重要的数据进行备份。
l 数据备份,要求不能影响业务处理的正常进行,因此,数据备份要采用多种备份方法并用,将完全备份这类占用服务资源高的备份设置在业务处理的空闲时间段,而将日志备份这类占用服务资源少的备份方法应用在业务处理的高峰,但却需要及时备份的时候;
l 充分考虑故障出现时,业务处理可以接受的停机时间,不同的备份方法,需要的还原时间不同,因此,在照顾备份对业务处理影响的同时,要考虑还原的时间,不能因为完全备份对业务处理影响很大,就几个月才做一次,这样的话,在还原的时候花费的时间就很长了;
l 考虑公司的技术力量,尽量避免采用超过公司掌握的技术程序的备份处理方法;
l 用效利用备份资源,要根据公司目前具备的备份资源,合理地使用上述四种备份方法进行备份,同时要考虑过期备份文件的清除和备份资源的再利用问题;
l 要考虑灾难性数据丢失造成的影响。对于重要的数据,要将数据库备份到多种介质和多个地方,这样一处备份损坏了,还有其他的备份可用。
1.4. 备份方案的实施
数据库备份是一个周期性的工作,因此我们应该让SQL Server按照我们制订的备份方案,自动地完成各种备份,而不要我们手工来进行日常的备份处理。
在SQL Server中,要定时执行某项操作,是由SQL Agent服务来完成的,因此,要让我们的备份方案能自动完成的话,首先我们要把SQL Agent服务设置为自动启动(需要注意的是,win98/winme这类的操作系统是无法设置SQLSERVERAGENT自动启动的),设置方法:
我的电脑à控制面板à管理工具à服务à鼠标右键SQLSERVERAGENT
à属性à启动类型à选择“自动启动”à确定
在SQL Server中,我们可以通过下面几种方法来定义我们的数据库备份:
1. 数据库维护计划:这里可以定义完全备份和日志备份的自动备份作业。定义方法:
企业管理器à管理à右键数据库维护计划à新建维护计划
à[下一步]à选择你要备份的数据库
à[下一步]à直到“指定数据库备份计划”这项
à然后按照向导提示进行设置就行了
2. 数据库备份:这里可以根据我们的备份方式制订各种数据库备份作业。定义方法:
企业管理器à鼠标右键你要备份的数据库à所有任务à备份数据库
à在[备份]项中选择数据库和备份方式
à在[目的 ]à[备份到]项中,按[添加]按钮,添加备份文件
à在[调度]项中,勾选“调度”,并点…按钮设置备份的时间安排
à确定
3. 作业:上述两种方法,最终设置的结果都是一个作业(JOB)调度,因此,我们也可以通过直接创建作业,由作业定时调用备份处理的语句来实现自动备份。定义方法:
企业管理器àSQL Server代理à右键作业à新建作业
à[常规]项中输入作业名称
à[步骤]项à新建à输入步骤名
à[类型]中选择"Transact-SQL 脚本(TSQL)"
à[命令]中输入备份处理的SQL语句
à[调度]项中,设置你的备份时间计划
具体的SQL备份语句,参考SQL联机丛书上的相关部分,这里不做说明。
在当今的发达的信息领域,体现价值的珍贵性的不是计算机软件,也不是计算机硬件,而是计算机内的各种宝贵数据。但是各种因素像人为错误,硬盘损坏,电脑病毒或者各种停电,自然灾害都有可能使得数据的使用变得不牢靠。建立合理的数据备份系统,以保障数据的安全,对于每个企业至关重要。
有专门研究数据的机构作出研究报告表明,每损失10MB的数据,就会造成部门损失达3万元人民币,而且如果丢失的关键数据在10天之内仍然得不到恢复的话,企业就会出现危机,甚至有可能出现严重后果。所以随着计算机系统越来越成为企业不可或缺的数据载体,如何利用数据备份来保证数据安全成为目前一个重要的研究和应用领域。
两大基础方案完成数据库备份
数据本身由于其运行环境和使用过程中出现的各种故障,使整个数据的完整性和许多因素相关。主要包括计算机本身软硬件的故障,使用过程中的误操作和各种计算机病毒的破坏。还有各种不可预测的自然因素也会造成数据的损坏和丢失。
其实目前企业数据库的备份方案主要有如下两种:
第一种为物理备份,该方法实现数据库的完整恢复,但数据库必须运行在归档模式下(业务数据库在非归档模式下运行),且需要大容量的外部存储设备,例如磁带库;
第二种备份方案为逻辑备份,业务数据库采用此种方案,此方法不需要数据库运行在归档模式下,不但备份简单,而且可以不需要外部存储设备。
绝大多数数据库软件都是采用这两种基本方案的备份,只是在备份的策略和技巧上各有侧重,并且在各种数据库辅助软件的帮助下可以实现定时备份,异地备份,增量压缩备份以及自动备份,帮助企业在数据管理上更好的适应应用的需要。
制定备份方案需要考虑的因素
一般的数据库备份过程中需要考虑如下因素:
(1)数据本身的重要程度;
(2)数据的更新和改变频繁程度;
(3)备份硬件的配置;
(4)备份过程中所需要的时间以及对服务器资源占用的实际需求情况。
(5) 而且数据库备份方案中,还需要考虑到要对业务处理的影响尽可能地小,要把需要长时间完成的备份过程放在业务处理的空闲时间进行。对于重要的数据,要保证在极端情况下的损失都可以正常恢复。对备份硬件的使用要合理,既不盲目地浪费备份硬件,也不让备份硬件空闲。
针对这些特点,我们一起来看看常见的数据库软件的特点,这些数据库包括ORACLE,SQL SERVER,SYBASE,INFORMIX和MYSQL。通过分析这些数据库的备份策略,帮助企业学习如何选择各自的数据库备份方案。
ORACLE数据库备份方案和特点
Oracle数据库的备份方式主要有三种:逻辑备份、物理备份和RMAN备份。物理备份比较简单,也容易理解,主要是逻辑备份和RMAN备份过程。
逻辑备份是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。Oracle提供的逻辑备份工具是exp。逻辑备份最大的优越性在于备份时占用资源少,在备份与恢复时对数据库系统资源影响最小。另外对于个别表,但并非整个表空间或数据库的恢复也非常方便,且可以在不同的数据库上进行恢复。备份方案灵活,可以根据需要选择性的备份表、表空间、某用户的对象信息或全库备份。
逻辑备份的恢复过程可以采用lmp工具来对数据库进行恢复。如果确认整个oracle数据库已经损坏,就需要重建服务器,所有数据库培植必须设置成和原有库的信息一致,如实例名、数据库名、数据库字符集、表空间名等。然后将原有的exp文件copy到新系统,然后执行lmp的全库恢复操作。
如果只是某个用户对象出现问题,可以针对此用户进行用户对象的恢复,先将此用户删除。然后新建此用户。注意用户权限与原来一致,然后执行lmp进行恢复操作。对于某个表的恢复,也按这种方式操作。
RMAN是指Recovery Manager,是Oracle恢复管理器工具。通过它,可以对数据库进行备份与恢复操作。RMAN备份有很多方式,可以对数据库进行脱机、联机的物理备份,也可以对数据库进行增量备份。
在实际过程中用得比较多的是RMAN增量备份。其过程是首先注册备份数据库,先建立一个RMAN库,并将要备份的数据库注册到RMAN库中,然后建立RMAN增量备份脚本,最后就可以执行备份操作了。我们可以根据实际情况对数据库执行各级备份,也可以通过建立系统shell脚本调用执行,通过crontab定时调度,执行数据库的备份。
SQL SERVER数据库备份方案
为了保证SQL Server 数据的安全,数据库管理员应定期备份数据库,在不同情况下应采用不同备份数据库备份策略,一方面维持数据的安全性,另一方面也可保持SQL Server 能顺畅运行。尽最大的努力减少由于数据的损坏对客户造成的损失。SQL Server中有几种常用的备份方法:
(1)备份整个数据库中的所有数据,若将整个数据库的内容都备份下来,需很多的存储空间来存放备份数据,但其好处是在还原数据库时,也只要将整个数据库从一份数据库备份还原到 SQL SERVER 中就可以了。用这个备份文件就可以恢复整个数据库到备份的时间截止的内容。这种备份生成的备份文件最大,需要的时间最长,如果数据库规模比较大,可能对实际业务有很大的影响。完整备份是其他备份的基础,在做其他备份之前,必须得做此种方式的备份。
(2)备份自上次完全备份后,数据库所做的改变。在差异备份前,必须有一次完全备份,而还原时,也必须先恢复完全备份,然后再在完全备份的基础上恢复差异备份,不能用它单独恢复数据库。差异备份生成的文件比完全备份小,需要的时间比较短,所以此方式最适合作为经常性的备份方式。
(3)事务日志(Transaction Log)只备份事务记录文件的内容,由于事务日志文件只会记录我们在前一次数据库备份或事务日志记录备份之后,对数据库所做的变动过程,也就是只记录某一段时间的数据库变动情况,因此在做事务记录备份之前,必须做一次“完全”的数据库备份。
(4)文件和文件组方式。如果数据库的内容分散存储于多个文件或文件组,而且数据库已非常大,大到进行一次完整的数据库备份会有时间和存储空间上的问题。这时就可以使用此方式来备份数据库的部分文件或文件组。由于每次只备份部分的文件或文件组,因此需做数次不同的备份才能完成整个数据库的备份。才用此方式备份也有个好处,就是当毁坏的数据只是数据库中的某个文件或文件组时,也只要还原坏的文件或文件组备份就可以了。
还有一个比较重要的问题是系统数据库的备份与还原是很多用户在定义数据库备份方案中容易忽略的,系统数据库中虽然不保存业务数据,但它保存了很多SQL Server的设置,如果不备份系统数据库,那么在服务器发生故障导致系统损坏时,重新配置所有的SQL Server设置将是一个非常艰巨的任务。
SYBASE数据库备份特点
Sybase数据库产品从1987年问世以来,以客户机/服务器(client/server)工作模式、分布处理的基础体系结构、完善的安全保密性能、高速快捷的运行方式、多平台跨操作系统的特点在许多领域都有广泛的应用。
针对Sybase系统的备份方案,在实际应用中一般使用如下两种方法:
(1) 使用Sybase的Backup Server(备份服务器),做Dump备份
(2) 转储数据库(Dump database),就是为整个数据库(包括数据、表结构、触发器、游标、存储过程、事务日志等)做一次物理备份。转储数据库时,系统自动执行一次checkpoint,将日志和数据从缓冲区拷贝到硬盘,把已被分配的页(日志和数据)转储到设备。
如果备份到硬盘的文件上,可以不预先估算备份文件的大小,只要硬盘有足够的存储空间就可以。如果是备份到磁带上,那么就要估算一下备份后的大小,如果数据库的备份文件超过了这个尺寸,就要考虑多文件转储,使用stripe参数。
这种数据备份方式是将整个数据库的运行环境完整的复制一份,在使用load命令恢复时,只能恢复到同样大小的数据库中(数据和日志的大小都只能和原来完全一致),这种方法的优点是数据库完整无误,缺点是不能直接查看备份内容。
(3) 对数据结构和数据记录做两次备份
(4) 在一般情况下,生产机的数据库都比较庞大,而实验机则相对较小,难以在实验环境中以load命令恢复工作机的内容。所以我们可以将数据结构和数据记录做两次备份。
(5) 我们还可以利用做bcp备份脚本的方法进行数据库碎片整理。
Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。
在使用过程中,业务繁忙时出现死锁(dead lock),数据库的输入/输出资源被大量占用,业务处理速度慢。我们可以清空数据库中的所有表,删除所有表的索引和主键,然后导入数据,接着添加索引和主键,重新更新数据库状态。上述操作都是针对数据库中的所有用户表进行的,利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易行。
下篇,我们将向各位介绍另外两种数据库的备份方案,以及其备份方案的特点,同时还会向大家介绍,制定备份方案的原则,以及如何制定一份合理的备份方案。
本文上篇我们已经介绍过了Oracle,SQL和Sybase数据库备份方案和特点,本文接续上篇,继续介绍另外两种数据库的备份方案,同时重点向大家介绍了如何制定一份合理的数据库备份方案,以及维护数据库备份方案所需要注意的事项。
INFORMIX数据库备份方案
Informix数据库能提供建立数据档案管理的所有数据的数据备份,以及记录备份数据库服务器的变化和档案建立以来数据变化的能力。这些变化的记录存储在逻辑日志中,管理员可以同时建立数据档案和逻辑日志备份磁盘。数据档案也可以用增量的方式建立,这样可以减少建立备份档案所需的时间。
当存储介质发生故障后,将导致当前数据被破坏或者不能存取数据,这时可以利用数据档案和逻辑日志的备份进行数据库的恢复。Online恢复系统保证备份数据是一致的。Archive档案是Online管理的全部或者部分数据的拷贝,一次建档操作建立的档案是online数据的一个瞬间快照,在物理和逻辑上是一致的。online数据档案可以在磁带或磁盘上建立。档案数据应保存在与计算机设施分开的安全地方。
逻辑日志备份,逻辑日志文件存储online 的变化信息,包括online系统的包括配置上的变化和数据库的改变记录,如:对数据库表的建立,数据记录的插入insert、删除delete、修改update等。逻辑日志实际上是对online操作活动(包括事务记录)的一个跟踪记录,为了保证数据的一致性,在恢复档案数据后可以使用这些记录将online恢复到发生故障时的最后的一个结束的事务。
逻辑日志备份操作与 online 建立操作是两种不同性质的后备方法,两者结合可以有效地为数据库建立一个完整的后备存储。
MYSQL数据库备份方案
MYSQL备份数据库主要有两个方法,一个是用MYSQLdump程序,另一个是直接拷贝数据库文件,各有其优缺点。
MYSQLdump与MySQL服务器是协同操作,可以生成能够移植到其它机器的文本文件,甚至那些有不同硬件结构的机器上。而直接拷贝方法在服务器外部进行,直接拷贝的文件不能移植到其它机器上,并且必须采取措施保证没有客户正在修改即将拷贝的表。当然在速度上MYSQLdump比直接拷贝要慢些。
不管使用哪种备份方法,如果需要恢复数据库,必须让服务器执行更新日志。当系统崩溃后需要恢复数据时,更新日志可以帮助恢复。这样在用备份文件恢复数据到备份时的状态后,我们可以通过运行更新日志中的查询再次运用备份后面的修改,这时可以将数据库中的表恢复到崩溃发生时的状态。当然我们也需要备份这些更新日志。
使用mysqldump备份和拷贝数据库时,mysqldump产生的输出可用作mysql的输入来重建数据库。 我们还可以将整个数据库导出到一个单独的文本文件中。在恢复期间,通常按数据库为基础提取更新日志内容,对单个表没有提取更新的选择。
如果使用直接拷贝数据库的备份和拷贝方法,可以使用这些cp、tar或cpio实用程序。当直接拷贝时,我们必须要保证表不在被使用。如果在拷贝过程中,服务器修改了拷贝中的表的内容,则备份失败。保证拷贝完整性的最好方法是关闭服务器,拷贝文件,然后重启服务器。如果不想关闭服务器,要在执行表检查的同时锁定服务器。如果服务器在运行,相同的制约也适用于拷贝文件。
恢复过程包括备份文件和更新日志。备份文件可以将表恢复到实施备份时的状态,更新日志包含了用于进行这些修改的查询。恢复过程根据我们需要恢复的信息多少而不同。实际上,恢复整个数据库比单个表跟容易,因为对于数据库运用更新日志比对单个表运用要容易的多。
五大原则制定数据库备份方案
根据这些数据库备份方案的分析,我们可以发现,如果需要做出一份合理的备份方案,我们应该遵循如下的原则:
首先在业务处理空闲的时候做完全备份,备份时间的间隔设置可以根据本身的数据量和数据重要的程度来设置,比如可以一个月做一次完全备份。然后在业务处理比较空闲的时候做差异备份,比如我们可以一周备份一次。
然后我们还需要经常做日志备份,如果数据很重要,而数据的变化频度又非常快,可以设置5分钟甚至更短的时间备份一次,这个主要由我们的数据重要的程度和允许丢失数据的时间长短来确定。
对于备份硬件的配置,除了备份到磁盘,还应该考虑备份到磁带机或是其他服务器,并且定期要将备份的数据刻录到光盘做永久备份,这样还可以腾出刻录的空间给新的备份用,减少备份设备的开销。
最后我们还要考虑到对于重要的数据,要将备份文件保存到多种介质和多个地点,这样某一处备份文件损坏了的话,我们还可以有其他的备份文件可用。
我们还需要考虑到还原作业的进行。比如有多少时间以及在那些时段可进行备份;数据库变动的频率如何;数据库大小;而且当数据库出现问题时,用户愿意等待多久让数据库还原完毕;应采用何种备份方式,做怎样的硬件搭配;要使用哪种存储介质。这样基本上可以做出一份比较合理的备份方案。
制定数据库备份方案
我们可以选择一些常用的备份方案来适应我们的各种数据库的备份需要。可以有如下的一些备份组合:
(1)完全数据库备份配合事务日志备份
对于数据库数据比较大,但每天的变动的内容小,可考虑采用此方式。可定期做一次完整的数据库备份,例如:每周或每月做一次“完全”数据库备份。然后再以比较短的周期,如每天或每两天做一次事务日志备份。这样平时备份工作负担比较轻,发生意外时,可将数据还原到最近一次备份的状态。
(2)完全数据库备份配合差异式备份
此方式是将前一种方式中的事务日志备份方式改成差异式备份。其优点是在做还原时,只需在做完最近一次数据库备份的还原后,再用前一天的差异备份来还原就可以了,不像使用事务记录备份时,需要按天还原。但是这种方式在一段长时间间隔内,每次做差异备份所需的时间和空间都会增加。
(3)三种备份方式的综合使用
由于事务记录备份和差异备份各有其优缺点,因此我们可以将两种方法结合起来使用。对于数据信息非常重要,每一到两小时备份一次,可能的损失只是一到两个小时的数据。
(4)当数据库过大,有不易备份的问题时,可以采用文件或文件组备份方式,可考虑将数据库分开存于不同的文件和文件组中,然后以文件和文件组的方式将整个数据库分数次备份。此外,如果数据库中只有部分表经常变动,另一部分很少变动,也可考虑将这两部分存于不同的文件和文件组中,然后用不同的备份频率来备份其内容。采用此方式备份数据的缺点是必须经过多次操作才能将备份过程完成。
(5) 使用备用服务器
这种方法是利用备份服务器,对原服务器做双机备份。先在原服务器上做完全的备份,再把此备份放到备份服务器上做还原,使两边的数据同步,以后可以定期对原数据库做事务日志备份,把事务日志放到备份服务器上还原。当原服务器出现问题既可使用备份服务器接上网络提供服务。
维护数据库备份系统
在实际工作中,除了对数据库制订一定的备份策略,我们还应该在日常的维护中进行各种常规的检查工序,保证数据库的正常运行。
首先数据库管理员应当每日察看数据库的备份报告,出现问题及时检查备份文件,保障每日数据库服务器的备份正常运行。
当主数据库服务器出现数据库错误时,应检查数据库的工作状态。如果工作不正常应及时将最新的备份数据覆盖当前数据库的损坏数据,并重新启动机器,检验数据库系统是否能够自行恢复运行。
如果重新启动后数据库系统不能正常运行,则数据库系统文件被破坏,应启用紧急恢复方案。如果主数据库服务器出现硬件故障时,应在1小时内更新备份数据库为最新数据,并启动备份数据库服务器,将备份数据库服务器升级为主数据库服务器。
对于损坏的主数据库服务器应重新安装数据库,并启用紧急恢复方案。如果是备份数据库服务器出现数据库错误时,应检查数据库的工作状态,及时将最新的备份数据覆盖当前数据库的损坏数据,并重新启动机器,检验数据库系统是否能够自行恢复运行。
基本上每周保证三次将备份数据转移到外部存储设备中,使备份资料可以异地保存。
一 前言
如同社会总会有不公平、人总会犯错误、程序总会有BUG一样,数据库出现问题是不
可避免的,好的备份是项目成功应用的关键。
从独立的硬盘保存备份文件、主机与从机同步(DATA GUARD)到多实例单数据库的
负载平衡(RAC),按照不同的需求对应不同级别的技术,但其根本就是数据的冗余,用人力和物力来提高数据可用性。
强烈推荐备份到其他物理存储设备上,如另一块硬盘,以保证出现介质故障时可以顺利恢复。
二 备份恢复工具简介
1,常用的imp/exp工具
我们常用的imp/exp工具是由Oracle提供的用于在客户端把数据导出到dmp文件,进行数据转移和保存的方法,是逻辑备份。在11gR2中已经废弃exp,保留imp,相关操作由数据汞(Data Pump)的impdp/expdp代替。
优点为:
1, 使用简单。
2, 可以指定导出某个逻辑对象(整个数据库或用户或表)
缺点为:
1, 不能进行完全恢复(Complete Recovery)
2, 只能备份数据文件(Data File)
3, 全库导出对数据库压力较大
4, 占用空间较大
2,恢复管理器(RMAN)
由Oracle提供的专业的备份与恢复工具,是物理备份。
优点为:
1, 可以进行完全恢复与不完全恢复
2, 可以备份所有数据库文件(控制文件,服务器参数文件,归档日志文件,数据文件)
3, 具有功能强大的控制能力和脚本编写语言
4, 支持在线热备份
5, 支持多级增量备份
6, 支持并行备份,恢复
7, 减少备份数据量(压缩、块级备份)
8, 可将文件备份到磁盘或磁带
9, 支持在线块级别恢复
10,可以限制速率,减少备份中对系统的造成的影响
11,等等。。。
三 配置RMAN
1,配置归档(ARCHIVELOG)模式
数据库在装载(MOUNT)模式下执行下列操作开启归档模式
SQL> ALTER DATABASE ARCHIVELOG;
将数据库置于归档模式可防止重做日志在归档之前被覆盖。
如果处于非归档(NOARCHIVELOG)模式,数据库只能恢复到上一次备份的时间,到当前时间的之间的数据变更都会丢失。
2,配置控制文件自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN的相关信息保存在控制文件中(非CATALOG模式),如果控制文件丢失而又没有备份的话,会给数据库的恢复造成很大困难
3,配置控制文件记录保持时间
SQL> ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=45;
设置RMAN备份信息保存在控制文件中的时间,要大于等于保留策略的恢复窗口。
4,配置保留策略的恢复窗口
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;
备份文件超过这个日期时RMAN会标记为已不用(OBSOLETE):
RMAN> REPORT OBSOLETE;
数据库中的文件超过这个日期时RMAN会报告需要备份:
RMAN> REPORT NEED BACKUP;
5,设定默认保存备份文件的路径
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D: /BACKUP/%U'
6,启用快速增量备份
在9i中,RMAN进行增量备份要扫描所有数据文件,找出发生变更的数据块,然后进行备份。
在10g中,增加了一个新特性---块更改跟踪(Block Change Tracking),会把发生变更的数据块记录在一个跟踪文件内,这样就避免了增量备份时对数据库的全面扫描。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE 'D:/BACKUP/BLOCK_CHANGE_TRACKING.TRC';
7,配置RMAN使用优化(OPTIMIZATION)模式
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
开启优化模式RMAN会自动跳过满足某些条件的文件,实验表明,优化模式可以提高10%左右的性能
8,配置RMAN使用压缩备份集
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
在10g中RMAN增加了一个新特性---压缩备份集,能够使备份集减少到原来的1/5或1/6,代价是增加10%左右的CPU消耗,可以根据实际情况选择使用。
条件允许的话(多物理硬盘、多CPU)还可以用上面命令设定并行备份
四 多级备份策略
采用多级备份是为了减少了恢复所需要的时间和减少每天备份所需要的时间,而又保证系统有很好的恢复性。但是在恢复时间和备份时间要有一个权衡。比如只要开始的一个全备份和备份所有产生的归档文件就可以保证把数据库恢复到最新的状态,但是一般来说实际上并不会这么进行(因为在恢复时将需要很长很长的时间),多级备份就是为了解决这样的问题。以下是一种建议的方案。
每个月做一次零级备份
每个星期做一次一级增量备份
每天做一次一级差异备份
当需要时(如不到二十四个小时归档文件系统就要满了)备份归档文件
1,零级备份脚本
RMAN> RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK;
ALLOCATE CHANNEL 'DEV2' TYPE DISK ;
ALLOCATE CHANNEL 'DEV3' TYPE DISK ;
BACKUP INCREMENTAL LEVEL 0 TAG 'LV0' FORMAT 'D:/ORACLE/BACKUP/%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
DELETE NOPROMPT OBSOLETE;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}
2,一级增量备份脚本
RMAN> RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK ;
ALLOCATE CHANNEL 'DEV2' TYPE DISK ;
ALLOCATE CHANNEL 'DEV3' TYPE DISK ;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE TAG 'LV1C' FORMAT 'D:/ORACLE/BACKUP/%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}
3,一级差异备份脚本
RMAN> RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK ;
ALLOCATE CHANNEL 'DEV2' TYPE DISK ;
ALLOCATE CHANNEL 'DEV3' TYPE DISK ;
BACKUP INCREMENTAL LEVEL 1 TAG 'LV1D' FORMAT 'D:/ORACLE/BACKUP/%U' DATABASE PLUS ARCHIVELOG DELETE ALL INPUT;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}
4,归档文件备份脚本
RMAN> RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK ;
ALLOCATE CHANNEL 'DEV2' TYPE DISK ;
ALLOCATE CHANNEL 'DEV3' TYPE DISK ;
BACKUP FILESPERSET 3 ARCHIVELOG ALL DELETE INPUT;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}
则每天所需要备份的数据量只有一天的改变量。而做恢复时最多只要恢复当月的一个零级备份+三个一级增量备份+6个一级差异备份+当天的归档文件。如果不能接受这样的恢复时间,就只能够减少零级备份之间的时间间隔(如可以每个星期做一个零级备份,这样恢复时最多只需要恢复一个星期的数据量)。对于负载极低的系统甚至可以半年做一次零级备份
五 管理RMAN
通过RMAN的REPORT,LIST,CROSSCHECK,DELETE命令可以对RMAN进行管理。
1,如果手动删除了备份文件的话,需要执行交叉检验让RMAN进行同步。
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
交叉检验后RMAN会把已经被手动删除的备份文件的状态设置为过期(EXPIRED)。
2,报告已不用(OBSOLETE)和过期(EXPIRED)的备份文件。
RMAN> REPORT OBSOLETE;
RMAN> LIST EXPIRED BACKUP;
3,删除已不用(OBSOLETE)和过期(EXPIRED)的备份文件。
RMAN> DELETE OBSOLETE;
RMAN> DELETE EXPIRED BACKUP;
六 使用RMAN进行恢复
RMAN 的整个恢复过程可以分为还原(RESTORE)与恢复(RECOVER),他们在含义上是有很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复。
数据库的的恢复比较复杂,有许多不同的情况,必须在了解ORACLE数据库结构的条件下用不同的方法进行处理。下面只列出最普通的恢复情况。
恢复整个数据库之前必须让数据库处于状态的状态(MOUNT)状态。
SQL> STARTUP MOUNT;
然后执行RMAN命令进行还原和恢复。
1,完全恢复
1.1,恢复整个数据库
RMAN>
RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK;
ALLOCATE CHANNEL 'DEV2' TYPE DISK;
ALLOCATE CHANNEL 'DEV3' TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}
1.2,恢复指定表空间或数据文件
在恢复该表空间之前让该表空间处于脱机的状态(OFFLINE状态)。
SQL> ALTER TABLESPACE TBS OFFLINE;
然后通过RMN进行恢复。
RMAN>
RUN {
ALLOCATE CHANNEL 'DEV1' TYPE DISK ;
ALLOCATE CHANNEL 'DEV2' TYPE DISK ;
ALLOCATE CHANNEL 'DEV3' TYPE DISK ;
RESTORE TABLESPACE TBS ;
RECOVER TABLESPACE TBS ;
RELEASE CHANNEL DEV1 ;
RELEASE CHANNEL DEV2 ;
RELEASE CHANNEL DEV3 ;
}
2,不完全恢复
不完全恢复情况比较复杂,大致分一下四类。
1, 基于时间的恢复(Time-based recovery)
2, 基于撤销的恢复(Cancel-based recovery)
3, 基于改变的恢复(Change-based recovery)
4, 日志序列恢复(Log sequence recovery)
3,块级别的恢复
RMAN可以在线对逻辑损坏的数据块进行恢复而不影响数据库的运行。
RMAN> BLOCKRECOVER DATAFILE 6 BLOCK 3;
七 使用FLASHBACK进行快速恢复
发生以下类型的错误时,通常需要使用备份执行恢复:
• 介质故障:因数据库文件的物理问题而导致无法读写该文件
• 用户错误:数据库中的数据被误更改或误删除
使用RMAN进行介质故障恢复,使用FLASHBACK进行用户错误恢复。
1,9i中的FLASHBACK:
查询数据库的SCN变化情况
SQL> SELECT NAME,FIRST_CHANGE# FSCN,NEXT_CHANGE# NSCN,FIRST_TIME FROM V$$ARCHIVED_LOG;
获得当前SCN
SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FSCN FROM DUAL;
创建恢复表,选择恢复到合适的SCN
SQL> INSERT INTO TB_RECOVER SELECT * FROM TB AS OF SCN 1999999999;
2,10g中的FLASHBACK:
10g的FLASHBACK进行了增强和修改,通过回闪,用户可以完成许多不可能恢复的
工作,目前 10g 的回闪包括以下特性;
1,oracle falshback Database.
该特性允许 oracle 通过 Flashback database 语句,将数据库会滚到前一个时间点或者
scn 上,而不需要作时间点的恢复工作!
2,oracle falshback table.
该特性允许 oracle通过 flashback table 语句,将表会滚到前一个时间点或者 scn 上。
3,oracle falshback drop.
该特性允许 oracle把恢复 drop掉的 table 或者索引。
4,oracle falshback version query.
该特性可以得到特定的表在某一个时间段内的任何修改记录!
5,oracle falshback transaction query
该特性可以限制用户在某一个事务级别上检查数据库的修改操作,适用于诊断问题、分
析性能、审计事务。
八 其他高可用性方案(High Availability)简介
• Data Guard:提供一组全面的服务,可用于创建、维护、管理并监控一个或多个备用数据库
• Oracle Real Application Clusters (RAC):用于从多个实例访问单个数据库
• Oracle Streams:可以传播并管理数据流中的数据、事务处理和事件