ITPub博客

首页 > 数据库 > 数据库开发技术 > DB2在线备份与恢复

DB2在线备份与恢复

原创 数据库开发技术 作者:like052629 时间:2014-11-28 14:20:28 0 删除 编辑

默认情况为循环日志,也就是无法进行日志归档或在线备份,若需要进行在线备份,需修改为归档日志模式。

对于v9.5以后的版本,貌似只需要修改  
First log archive method                 (LOGARCHMETH1) = DISK:/home/db2inst1/db2data/  这一个参数即可实现在线归档。
db2 update db cfg for db2name using logarchmeth1 'disk:/home/db2inst1/db2data'

LOGARCHMETH1这个即设置归档的方式,可以指定DISK、TSM等参数。
修改该参数后需要重启数据库才可生效。

[db2inst1@localhost backup]$ db2stop force
11/25/2013 22:17:02    0  0  SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.
[db2inst1@localhost backup]$ db2start
11/25/2013 22:17:07    0  0  SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.
[db2inst1@localhost backup]$ db2 connect to sample
SQL1116N  A connection to or activation of database "SAMPLE" cannot be made 
because of BACKUP PENDING.  SQLSTATE=57019
发现重启后还是不能连接,这时数据库状态为BACKUP PENDING,需要做一个备份,记住是离线备份。
db2 backup db sample to 
离线备份完成后,即可连接成功。
db2 archive log for db sample--测试日志归档是否成功,执行完毕后到/home/db2inst1/db2data/db2inst1/EPS目录查看是否有归档日志生成。

 
对于较低版本修改为在线归档的方法(此2个参数是必须修改的,对于高版本,也可继续使用):         

1. db2 update db cfg for sample using userexit on;--启用用户出口

2. db2 update db cfg using logretain on;--启用归档日志

3. db2 update db cfg using trackmod on;--启用增量备份功能

在线备份:
修改为归档模式后,数据库不可连接,为backup pending状态,需进行一次脱机备份后才可继续使用。
db2 force application all;
db2 backup db sample to --脱机备份

db2 backup db sample online to --在线备份(不包含日志)

db2 backup db sample online to  include logs--在线备份(包含归档日志)

db2 archive log for db sample--切换归档日志

还原:

包含归档日志的还原,首先需要将log恢复出来

db2 restore db db sample from /home/db2inst1/db2data taken at 20141104092152 logtarget /home/db2inst1/dbsample_log/

   db2 "rollforward db sampleto end of logs and stop overflow log path(/home/db2inst1/dbsample_log/)"--日志回滚 

恢复1:
db2 restore db  [数据库名]   [taken at 2011**** ]
db2 rollforward db  [数据库名]   to end of logs and complete 


恢复2:
db2 restore db  [数据库名]   [taken at 2011**** ]
db2 rollforward db  [数据库名]   to end of logs and complete overflow log path(/dbfiles/logarchive)


恢复3:
db2 restore db  [数据库名]  [taken at 2011****] logtarget /dbfile/logarchive
db2 rollforward db [数据库名] to end of logs and complete overflow log path(/dbfiles/logarchive)

end of logs的作用是让DB2在执行备份操作后应用所有指定位置的可用的日志文件
在前滚处理期间,DB2如果在当前日志路径中没有发现日志文件,则搜索overflow log path选项指定的路径,并使用这个位置的日志文件
执行sample数据库前滚,可以使用下列语句:
rollforward database sample to end of logs and complete
rollforward database sample to timestamp and complete
rollforward database sample to timestamp using local time and complete

这几种恢复后的数据有什么差别吗?

1和2的区别在于,1使用默认的日志路径进行前滚,2指定了/dbfiles/logarchive为日志的路径
2和3的区别在于,3多了logtarget /dbfile/logarchive,这个子句只有在备份时(db2 backup db test online to /home/db2inst1/on_back/ include logs)指定了include logs才可以用,把你备份出来的文件里包含的日志文件释放到/dbfile/logarchive目录下 

####

db2 归档日志的相关信息保存在恢复历史文件中,可以通过db2 list history 命令查看

db2 list history archive log all for eps;

清除这些信息,需要使用db2 prune history命令。该命令会清楚指定时间戳及以前的所有条目(不只是归档日志)。默认情况下,系统不会清除最近一次数据库

全备之后的归档日志信息:db2 prune history 20100103235553 

db2 list history backup all for eps

通过使用 and delete 参数,可以在清理条目的同时删除对应的归档日志文件。

db2 prune history 20100103235608 and delete 

对于全备之后生成的归档日志文件,不会自动清除,如果想强制清除,可以使用with force option参数。

db2 prune logfile命令可以清除活动目录下的在线归档日志文件,但对离线归档日志文件无效。

#####

 
从v8.2开始提供recover database,新的recover database命令结合了restore database 和 rollforward database命令的功能,简单来说recover=restore+rollforward,使用此命令时,根据恢复历史文件中的信息使数据库恢复到一个指定的时间,它自动选择最佳适用备份镜像来执行恢复操作。
recover db sample
recover db sample to 2015-03-10-11.00.00 using local time
第一行,db2从可用最近备份镜像恢复sample数据库,并将前滚到日志的最后
第二行,db2将sample数据库恢复到时间时间点2015-03-10-11.00.00,这是按照当地时间指定的

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28258625/viewspace-1350214/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-11-18

  • 博文量
    120
  • 访问量
    551556