- 博客分类:
linux下与windows下类似 恢复时可能会遇到很多问题,但备份其实是很简单的
备份时应该备份数据库和日志,因为前滚时要用到日志。
备份时如果不使用include logs参数的,日志要单独备份 备份时一般采用带include logs参数的较简单
一.离线备份
在默认情况下只能做离线备份1.断开连接 --db2 connect to sample --db2 list applications for db sampledb2 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 sampledb2 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) noretrievelogtarget 指定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备份恢复数据库步骤
DB2离线和在线全备、增量备份及恢复的操作步骤 DB2数据库备份恢复小结
DB2 V9.7 信息中心
DB2 rollforward 命令使用详解