备份恢复DB2数据库步骤

备份恢复DB2数据库步骤

一、设置归档参数:

  1、db2 update db cfg for using mirrorlogpath /home/db2inst1/mirror_log/ //mirror log

  2、db2 get db cfg for //确认是否成功

  3、db2 update db cfg for using userexit on //启用用户出口

  4、db2 update db cfg for using logretain on //启用归档日志

  5、db2 update db cfg for using trackmod on //启用增量备份功能

  6、db2stop force

  7、db2start

  8、db2 backup db to /home/db2inst1/off_back //开始上面参数后,数据库处于backup pending状态,要求做数据库的离线备份,否则会提示SQL1116N错误。

  二、备份在线数据库

  9、db2 backup db online to /home/db2inst1/on_back/ //在线备份

  10、db2 backup db online incremental to /home/db2inst1/on_back/ //在线做增量备份

  11、db2 list history backup all for //查看备份记录

  12、db2 get db cfg for //查看log所在位置,cp到一个安全目录,供rollforward使用。

  13、db2stop force;db2start;db2 drop db //手工drop数据库,模拟灾难恢复的情况

  三、恢复在线数据库

  14、db2ckrst -d -t 20070608032820 -r database //帮助工具提示恢复

  15、db2 restore db incremental from /home/db2inst1/on_back taken at 20070608032820 //恢复数据文件

  先恢复完全备份,然后在恢复增量备份,不能自动寻找完全备份文件。

  16、db2 rollforward database to end of logs and complete overflow log path '(/home/db2inst1/log)' //前滚日志

  有一点不认同:“先恢复完全备份,然后在恢复增量备份”

  对于增量恢复,你的做法正好反了,你这样做的话,会收到SQL2574N的错误信息。

  在db2ckrst里面已经清楚的告诉你恢复的顺序。

  下面是测试备份镜像中包日志的备份和恢复的步骤:

  注:/home/db2inst1/on_back/ #为备份文件位置

  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ #为数据库的log位置,通过db2 get db cfg for 得到。

  10、 db2stop force;db2start;db2 drop db #模仿灾难发上,drop数据库。

  20、 db2 backup db online to /home/db2inst1/on_back/ include logs #备份带日志的镜像文件

  21、 db2 backup db online incremental to /home/db2inst1/on_back/ include logs #备份带日志的增量镜像文件

  30、 db2 RESTORE db incremental automatic FROM /home/db2inst1/on_back/ taken at 20070612070526 LOGTARGET /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ #恢复时间戳在20070612070526的数据镜像和日志文件

  40、 db2 rollforward database to end of logs and complete //回滚log日志

  在“10”中已把数据库drop了,“20”中如何做online backup呢?

  注:/home/db2inst1/on_back/ #为备份文件位置

  /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ #为数据库的log位置,通过db2 get db cfg for 得到。

  10、 db2 backup db online to /home/db2inst1/on_back/ include logs #备份带日志的镜像文件

  20、 db2 backup db online incremental to /home/db2inst1/on_back/ include logs #备份带日志的增量镜像文件

  30、db2stop force;db2start;db2 drop db #模仿灾难发上,drop数据库。

  40、 db2 RESTORE db incremental automatic FROM /home/db2inst1/on_back/ taken at 20070612070526 LOGTARGET /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/ #恢复时间戳在20070612070526的数据镜像和日志文件

  50、 db2 rollforward database to end of logs and complete //回滚log日志

备份

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

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

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

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

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

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

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

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

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

下面是一个脚本可以设置这些:

    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备份)
    

恢复

必备条件
一个备份文件,一个归档日志群

1.获得备份文件的详细信息,主要提取数据库名和时间戳
db2ckbkp -h c:/142329.001

2.根据上面的信息,在某个目录下(如c:/db2test建立
TEST.0/DB2/NODE0000/CATN0000/20060426子目录
其中的Test要换成第1步获得的数据库名,20060426要换成第一步获得的时间戳的前8位日期
最终要将备份文件放到这样的目录里
c:/db2test/TEST.0/DB2/NODE0000/CATN0000/20060426/142329.001

3.开始还原
选择1:
db2ckrst -d test2 -r database -t 20050529210521 来获得恢复序列
选择2:
restore db lw2004 from c:/db2test taken at 20060426142329 to e redirect ;
注意上面命令中的c:/db2test 必须是第2步中具有db2备份文件结构的目录

会提示"表空间的问题",无视.
4.建立tablespace
set tablespace containers for 0 using (path 'e:/db2/ts0');
set tablespace containers for 1 using (path 'e:/db2/ts1');

复制上面的命令,并改其中的数字,直到执行到"表空间标识无效"之类的错误.

使用listspaces查看当前表空间状况,检验一下

5.前滚
首先应该使用get db cfg for lw2004命令
并获得
日志文件路径                                            = E:/DB2/NODE0000/SQL00001/SQLOGDIR/

将准备好的日志文件群拷贝到得到的路径中,然后执行
rollforward db testdb to end of logs and complete

over.

注:任何时候无法进行下去,都可以重新连接到DB2服务器,因为中间任何一步如果执行有问题,connect to 命令会报错的
drop db lw2004删除数据库后,重头再来.
如果drop db lw2004 也报错,就
db2stop force 强制关闭数据库服务,再
db2start 开启,再来.

2006-4-27 0:03成功将公司数据库导入到笔记本上.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值