`
happyqing
  • 浏览: 3152200 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

原创db2 9.7备份恢复(还原)

    博客分类:
  • db2
阅读更多


linux下与windows下类似
恢复时可能会遇到很多问题,但备份其实是很简单的

 

备份时应该备份数据库和日志,因为前滚时要用到日志。
备份时如果不使用include logs参数的,日志要单独备份
备份时一般采用带include logs参数的较简单

 

一.离线备份
 在默认情况下只能做离线备份
1.断开连接
--db2 connect to sample
--db2 list applications for db sample
db2 force applications all
--db2stop force  
--db2start

 

2.离线备份
db2 backup db sample to D:\backup\db\db2\sample\offline
备份成功。此备份映像的时间戳记是:20141015143312
文件名:SAMPLE.0.DB2.NODE0000.CATN0000.20141015143312.001

离线备份不支持这个参数
include logs
SQL2032N  "iOptions" 参数无效。

 

3.查看备份历史
db2 list history backup all for sample

 

4.恢复
db2 restore db sample from "D:\backup\db\db2\sample\offline" taken at 20141015143312

 

5.前滚
--查看
--db2 rollforward db sample
前滚
db2 rollforward db sample complete

db2 rollforward db sample stop
--db2 rollforward db sample to end of logs
--SQL1268N  由于检索节点 "0" 上的数据库 "SAMPLE" 的日志文件 "S0000000.LOG"
--时发生错误 "1",前滚恢复停止。

 

二.联机备份

做联机备份需要修改参数userexit和logretain
查看现有参数配置
db2 get db cfg for sample

 

db2 update db cfg for sample using userexit on  //启用用户出口  
db2 update db cfg for sample using logretain on  //启用归档日志  
db2 update db cfg for sample using trackmod on  //启用增量备份功能 

 

(需要各个Node都分别做设置,目前只有一个Node)
开启这些参数后,数据库处于backup pending状态,要求做数据库的离线全备份。
做一下离线全备份,参考上面的命令。

 

1.联机全量备份
db2 backup database sample online to D:\backup\db\db2\sample\online include logs
备份成功。此备份映像的时间戳记是:20141015143758 (时间点1)

 

2.联机累计增量备份
备份上一次联机全量备份后的变化部分
db2 backup database sample online incremental to D:\backup\db\db2\sample\incremental include logs
备份成功。此备份映像的时间戳记是:20141015143921(时间点2)

 

3.联机差异增量备份
备份上一次联机备份后的变化部分
db2 backup database sample online incremental delta to D:\backup\db\db2\sample\delta include logs
备份成功。此备份映像的时间戳记是:20141015143955(时间点3)


三.恢复


1.恢复联机全量备份 只到(时间点1)
--db2 drop db sample
db2 restore db sample from "D:\backup\db\db2\sample\online" taken at 20141015143758 logtarget D:\backup\db\db2\sample\backupdblogs
前滚
db2 rollforward db sample to end of logs and complete overflow log path(D:\backup\db\db2\sample\backupdblogs) noretrieve
logtarget 指定log的输出目录,随便指定一个,(单个)恢复前要先清空

 

2.恢复累计增量备份 只到(时间点2)
--db2 drop db sample
db2 restore db sample incremental automatic from "D:\backup\db\db2\sample\incremental" taken at 20141015143921 logtarget D:\backup\db\db2\sample\backupdblogs
恢复时指定了automatic参数,他会自动恢复之前的相关备份(全量备份)
前滚
db2 rollforward db sample to end of logs and complete overflow log path(D:\backup\db\db2\sample\backupdblogs) noretrieve

 

3.恢复差异增量备份 只到(时间点3)
--db2 drop db sample
db2 restore db sample incremental automatic from "D:\backup\db\db2\sample\delta" taken at 20141015143955 logtarget D:\backup\db\db2\sample\backupdblogs
前滚
db2 rollforward db sample to end of logs and complete overflow log path(D:\backup\db\db2\sample\backupdblogs) noretrieve

 

4.不用automatic参数的恢复
恢复时推荐使用automatic参数,简单

查看恢复到某一时间戳的操作(db2推荐顺序)
db2ckrst -d sample -t 20141015143955 -r database
一般是先恢复最新的备份(时间点3)
再恢复(时间点1)
再恢复(时间点2)
再恢复最新的备份(时间点3)

 

删除logtarget目录里的日志
--db2 drop db sample
db2 restore db sample incremental from "D:\backup\db\db2\sample\delta" taken at 20141015143955 logtarget D:\backup\db\db2\sample\backupdblogs


db2 restore db sample incremental from "D:\backup\db\db2\sample\incremental" taken at 20141015143921 logtarget D:\backup\db\db2\sample\backupdblogs


db2 restore db sample incremental from "D:\backup\db\db2\sample\online" taken at 20141015143758 logtarget D:\backup\db\db2\sample\backupdblogs


db2 restore db sample incremental from "D:\backup\db\db2\sample\delta" taken at 20141015143955 logtarget D:\backup\db\db2\sample\backupdblogs

 

其中提示,选是
SQL2580W  警告!将这些日志复原至包含现有日志文件的路径。在复原期间试图覆盖现有日

志文件将导致复原操作失败。
想要继续吗?(y/n) y

 

前滚
db2 rollforward db sample to end of logs and complete overflow log path(D:\backup\db\db2\sample\backupdblogs) noretrieve

 

报错的处理方法
SQL2574N   作为增量式 RESTORE 操作的一部分来复原的备份映像不能比目标映像更新。
按照db2推荐顺序还原

 

db2 rollforward db sample to end of logs and complete
SQL1119N  因为先前复原不完整或者仍在进行,所以不能连接或激活数据库 "SAMPLE"。
SQLSTATE=57019
删除数据库,参考上面的两种恢复方法还原


SQL1268N  由于检索节点 "0" 上的数据库 "SAMPLE" 的日志文件 "S0000001.LOG"
时发生错误 "1",前滚恢复停止。
前滚时需要日志

 

其他
db2 rollforward db sample to 2014-10-15-02.50.40.000000 and stop
db2 rollforward db sample to 2014-10-15-02.50.40.000000 and complete
用db2ckbkp -h 检查下image,并且查看下include log 选项是否是1

 

按照表空间的备份和恢复类似,加子句TABLESPACE ( tablespace-name )即可。表空间级别的备份/恢复操作要求数据库处于归档日志和启用增量备份模式下。

 

本人采用的备份方案
每月1号联机全量备份
其他日期联机累计增量备份
这样恢复简单

 

参考:

DB2备份恢复数据库步骤
http://database.51cto.com/art/200709/56545.htm
DB2离线和在线全备、增量备份及恢复的操作步骤
http://www.chinaunix.net/old_jh/22/99296.html
DB2数据库备份恢复小结 
http://mmz06.blog.163.com/blog/static/12141696201011324632710/ 

 

DB2 V9.7 信息中心

http://www-01.ibm.com/support/knowledgecenter/#!/SSEPGG_9.7.0/com.ibm.db2.luw.kc.doc/welcome.html

 

DB2 rollforward 命令使用详解

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1003wucx/

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics