IBM DB2 UDB 在线备份及恢复实战

  • 为什么要进行在线增量备份?

在线意味者备份的时候,允许其他的连接,而不用停掉数据库

增量意味着,不需要每次备份一个超大的数据库.

同时意味着你可以将数据库恢复到崩溃前的状态,而不是你最后一次备份时的状态,最大可能的减少数据损失.

  • 设置数据库以支持在线增量备份

db2在线增量备份需要采用归档记录类型,而不是循环记录类型,而db2创建的数据库缺省采用循环记录类型,要设置归档记录类型有两种方法:

  • 更改logretain为recovery或者on,
  • 改改userexit为on

   这样db2的日志将不会循环使用,而是不断增多,这样才有可能进行增量备份,并将数据库恢复到崩溃的时间点

db2增量备份需要设置tracemod为on,这样数据库将在物理页上记录更改的部分页,做dirty标记

下面是一个脚本可以将testdb数据库设置为支持在线备份:

connect to testdb;
update db cfg 
using
 logretain on;
update db cfg 
using
 trackmod on;
db2stop force;
db2start;

通常应该再设置mirrorlogpath以备份db2日志镜像:

update db cfg using mirrologpath 你认为安全的路径

 

  • 如何进行在线备份?
backup db testdb online to 备份路径(全备份)

backup db testdb online incremental to 备份路径(增量备份)

backup db testdb online incremental delta to 备份路径(delta备份)

 

恢复

假设我们要进行这样一个任务:

把lw数据库的在线备份恢复到目标机器的F盘中,并且重命名为loanmgr.

1.获得备份文件的详细信息,做好文件准备

建立"F:/db2备份数据"文件夹,直接拷贝在线备份时自动生成的目录结构和文件:
F:/db2备份数据/LW.0/DB2/NODE0000/CATN0000/20070308/085446.001

命令行执行
db2ckbkp -h F:/db2备份数据/LW.0/DB2/NODE0000/CATN0000/20070308/085446.001

得到结果中要注意红色的部分,如果你手头只有一个文件,那么就按照红色标示建立目录结构和文件重命名

 The proper image path would be:
LW.0/DB2/NODE0000/CATN0000/20070308/085446.001

 
2.准备还原lw数据库到新数据库loanmgr(loanmgr不要预先建立)

restore db lw from F:/db2备份数据 taken at 20070308085446 to f into loanmgr redirect

结果

SQL1277N  复原已检测到一个或多个表空间容器不可存取,或者已将它们的状态设置为“必
须定义存储器”。
DB20000I  RESTORE DATABASE 命令成功完成。

 

set tablespace containers for 0 using (path 'e:/db2/ts0');
set tablespace containers for 1 using (path 'e:/db2/ts1');
  

 

3.建立tablespace 复制上面的命令,并改其中的红色数字,直到执行到"表空间标识无效"之类的错误.就把表空间准备好了.
 
 使用list tablespaces查看当前表空间状况,检验一下.

开始恢复,这个过程才真正开始往表空间中写入数据:

restore db lw continue

特别注意的是这里写的是源数据库的名称,而不是目标数据库的名称.结果:

DB20000I  RESTORE DATABASE 命令成功完成。


 
4.前滚

执行

get db cfg for loanmgr

 得到结果中注意:

 日志文件路径                        = F:/DB2/NODE0000/SQL00001/SQLOGDIR/
 溢出日志路径                     (OVERFLOWLOGPATH) =
 镜像日志路径                (MIRRORLOGPATH) = e:/Db2MirrorLogPath/NODE0000/
 第一活动日志文件                                        = S0001216.LOG

 将日志文件群拷贝到红色路径中,这些日志应该包含S0001216.LOG之后的所有文件,接着 

rollforward db testdb to end of logs and complete

全部完成..

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值