您好,欢迎访问三七文档
数据库恢复的几种方式一、崩溃恢复1.工作原理从数据库日志控制文件中获取不一致起点信息,并根据日志内容对所有在不一致起点后成功提交事务进行再应用,而对其他未完成的事务进行回滚,从而把数据库带回可用、一致状态。2.执行方式(假设数据库已处于不可用、不一致状态)A.自动-数据库参数AUTORESTART=ON(缺省)。应用程序连接将导致数据库重新启动而完成崩溃恢复。B.手动-数据库参数AUTORESTART=OFF。这时需要手动执行重起数据库命令restartdatabase。如果在崩溃前数据库I/O已处于写暂停状态(通常用在镜像分离操作前)时,可以用指定选项writeresume来移除数据库中表空间的写暂停状态。二、完全恢复(版本恢复)1、工作原理Tips:全备份和版本恢复的执行时间可能很长,这需要您在做备份和恢复计划的时候,必须充分考虑这个因素。2、执行方式–根据日志设置方式的不同有以下两种:A.循环日志withoutrollingforward选项来清除数据库的ROLLFORWARDPENDING状备份和恢复都必须离线进行。执行DB2命令(backup/database)来进行全备份和版本恢复。B.归档日志备份可以在线,而恢复必须离线进行。在执行DB2命令(restore)进行恢复的时候,需指定态。三、数据库前滚恢复(时间点恢复)1、工作原理2、执行方式数据库前滚恢复需要启用归档日志并建立数据库备份。数据库前滚恢复必须离线进行。在执行不带withoutrollingforward选项的DB2命令restore后,数据库处于前滚暂挂状态(ROLLFORWARDPENDING),这时执行前滚恢复命令rollforward将使数据库恢复至备份后的某一特定时间点或者日志末尾。Tips:1.表空间的前滚恢复将在部分恢复里进行介绍。2.必须保留备份后到特定时间点之间所有的日志文件。四、表空间恢复(部分恢复)1、工作原理原理请参考前面的前滚恢复,区别是备份和恢复的对象是表空间。2、主要特点A.相对数据库备份,表空间备份和恢复在时间上占有优势,并且方法灵活。B.在大型数据库系统中,常规数据、索引、长字符数据、LOB型数据通常放在不用的表空间里,为了确保数据的一致性需要对所有关联的表空间同时进行备份和恢复。C.系统编目表空间的备份和恢复必须离线进行,并且必须前滚至日志的末尾。而其他的表空间都可在线进行,并且可以前滚至某个特定时间点。D.通过设定注册表变量DB2_COLLECT_TS_REC_INFO=ON,前滚命令将跳过不需要的日志来缩短恢复时间。E.即使对象表空间不同,备份和恢复也不能同时进行。3、执行方式A.利用DB2命令backup对所有关联表空间进行同时备份。B.恢复时,利用DB2命令restore对所有关联表空间进行同时恢复,恢复完成时,表空间处于前滚暂挂状态(ROLLFORWARDPENDING)。C.利用DB2命令rollforward对表空间进行前滚恢复。增量备份–DB2提供了两种以全备份为基础的增量备份模式1.INCREMENTAL模式–最近一次全备份后所有更新数据的备份2.DELTA模式–最近一次备份(包括全备份和增量备份)后所有更新数据的备份一、循环日志下的版本恢复最简单最基本的一个例子-循环日志下的离线备份和恢复。要点:做了动作后,别忘了做检查来验证动作的正确性。认真、细心是DBA最基本的素质。很多时候能救命的并不是多高级的技术。操作过程:1.用户登录:login(user:db2inst1)2.创建数据库test1:db2createdbtest13.连接:$db2connecttotest14.备份数据库设定&确认日志模式$db2getdbcfg/opt/db2/backup/db.cfg.bak:备份数据库设定$db2terminate$db2getdbcfg:确认日志模式Userexitforloggingenabled(USEREXIT)=OFFLogretainforrecoveryenabled(LOGRETAIN)=OFFFirstlogarchivemethod(LOGARCHMETH1)=OFFSecondlogarchivemethod(LOGARCHMETH2)=OFF5.全备份$db2backupdbtest1to/opt/db2/backup/……Backupsuccessful.Thetimestampforthisbackupimageis:201104080201156.检查备份镜像文件$db2ckbkp-h/opt/db2/backup/TEST1.0.db2inst1.NODE0000.CATN0000.20110408020115.001……ImageVerificationComplete-successful.7.查看恢复历史记录$db2listhistoryallfortest18.进行误删除备份表数据:$db2exportto/home/db2inst1/file01.delofdelselect*fromtab1==18rows删除表数据:$db2deletefromtab1确认:$db2selectcount(*)fromtab1==0row9.恢复和结果确认恢复数据库:$db2connectreset:首先断开数据库的连接$db2restoredbtest1from/opt/db2/backup/takenat20110408020115:进行恢复确认$db2exportto/home/db2inst1/file02.delofdelselect*fromtab1$difffile01.delfile02.del:恢复前后进行数据比较二、循环日志下的数据库重定向可以利用备份镜像重定向功能建立新的数据库1.重定向恢复$db2backupdbtest1to/opt/db2/backup/:备份test1数据库Backupsuccessful.Thetimestampforthisbackupimageis:20110408024143$db2restoredbtest1from/opt/db2/backuptakenat20110408024143intosalesredirectwithoutrollingforward:利用test1备份镜像重定向功能建立sales数据库。……DB20000ITheRESTOREDATABASEcommandcompletedsuccessfully.因为是数据库是自动存储,不需要指定容器。确认容器的状态:此时表空间处在恢复暂挂(Restorepending)下,需要进一步进行恢复处理。$db2listtablespacesTablespacesforCurrentDatabaseTablespaceID=0Name=SYSCATSPACEType=DatabasemanagedspaceContents=Allpermanentdata.Regulartablespace.State=0x2000100Detailedexplanation:RestorependingStoragemaybedefined:此时表空间处在恢复暂挂状态……2.继续恢复操作$db2restoredbtest1continueDB20000ITheRESTOREDATABASEcommandcompletedsuccessfully.$db2listtablespaces……Name=SYSCATSPACEState=0x0000Detailedexplanation:Normal:此时表空间为正常状态……▲表空间显示为正常状态时,数据库可以使用。▲以上两步完成了循环日志下的数据库重定向。三、数据库的归档日志设置和数据库前滚恢复1.设置归档日志:可以有多种设置方法,具体参考InfoCenter$db2connecttotest1$db2updatedbcfgusingLOGARCHMETH1logretain2.设置成归档日志后的备份设置成归档日志后的数据库处在备份暂挂(BACKUPPENDING)状态,需要进行数据库的全备$db2connectreset$db2backupdbtest1to/opt/db2/backup/备份后数据库恢复正常。归档数据库的配置建议大家使用LOGARCHMETH1,此参数指定已归档日志的主要目标的介质类型,不要继续使用LOGRETAIN或USEREXIT参数。LOGARCHMETH1参数缺省值为OFF,取值范围可以是logretain、userexit、disk、tsm或vendor,各自的含义如下:OFF指定不使用日志归档方法。如果LOGARCHMETH1和LOGARCHMETH2都设置为OFF,那么认为数据库正在使用循环日志记录,且不可前滚恢复。这是缺省值。LOGRETAIN此值仅可用于LOGARCHMETH1,且等价于将LOGRETAIN配置参数设置为RECOVERY。如果指定此值,将自动更新LOGRETAIN配置参数。USEREXIT此值仅对LOGARCHMETH1有效,且等价于将USEREXIT配置参数设置为ON。如果指定此值,将自动更新USEREXIT配置参数。DISK此值后必须紧跟冒号(:),然后是现有标准路径名,日志文件将在其中归档。例如,如果将LOGARCHMETH1设置为DISK:/u/dbuser/archived_logs,那么将归档日志文件放入名为/u/dbuser/archived_logs的目录。注:如果正在归档至磁带,可以使用db2tapemgr实用程序来存储和检索日志文件。TSM如果指定不带任何附加配置参数,此值指示应该使用缺省管理类,将日志文件归档在本地TSM服务器上。如果此值后紧跟冒号(:)和TSM管理类,那么使用指定的管理类来归档日志文件。VENDOR指定将使用供应商库来归档日志文件。此值后必须紧跟冒号(:)和库的名称。库中提供的API必须使用备份并复原供应商产品的API。注:如果将LOGARCHMETH1或LOGARCHMETH2设置为OFF以外的值,那么必须配置数据库以进行前滚恢复。如果更新USEREXIT或LOGRETAIN配置参数,将自动更新LOGARCHMETH1,反之亦然。然而,如果您要使用USEREXIT或LOGRETAIN,必须将LOGARCHMETH2设置为OFF。更改成功后,断开示例数据库DB2TEST1所有应用程序连接:db2forceapplicationsall断开后,进行数据库的全备。自动数据库备份(AUTO_DB_BACKUP)参数四、在线备份和数据库时间点恢复1.启动了归档日志后进行在线备份(例中同时在备份文件中包含了日志)$db2backupdbtest1onlineto/opt/db2/backup/includelogsBackupsuccessful.Thetimestampforthisbackupimageis:201104080338242.检查备份日志显示了在线备份的Timestamp,这个是最小的恢复时间点$db2listhistorybackupallfortest1ListHistoryFilefortest1OpObjTimestamp+SequenceTypeDevEarliestLogCurrentLogBackupID--------------------------------------------------------------------BD20110408033824001NDS0000002.LOGS0000002.LOG----------------------------------------------------------------------------Contains3tablespace(s):00001SYSCATSPACE00002USERSPACE10
本文标题:实战备份与恢复
链接地址:https://www.777doc.com/doc-4407683 .html