DB2备份

DB2备份  

 

 

1、 离线全备份

1)        首先确保没有用户使用DB2:

db2 list applications for db sample

2)        停掉数据库并重新启动,以便断掉所有连接:

db2stop force

db2start

3)        执行备份命令:(使用TSM作为备份的介质)

  db2 backup db sample use tsm

         备份成功,将会返回一个时间戳。

4)        检查备份成功:

db2 list history backup all for sample ,可以看到多了这个备份的纪录。

         db2adutl query命令也可以看到返回值。

5)        备注:

         首先对主节点(catalog表空间在的节点)执行备份命令,再对另外的节点也做这个操作。

2、 在线备份:

1)        首先打开一下支持在线备份的数据库配置参数:

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都分别做设置)

开启这些参数后,数据库处于backup pending状态,要求做数据库的离线全备份

做一次离线全备份,也只有做了离线全备份,离线备份的命令参考第一步的内容,数据库才能继续使用。参考上面的命令。

2)        在线备份命令如下

db2 backup  db sample to /home/db2inst1/db2backup  online use tsm

备份成功,返回一个时间戳。

3)        同样可以用db2adutl db2 list history察看备份纪录。

4)        备注:同样,对每个节点都做这个操作。

3、 线增量备份

1)        在开启了必须的三个参数的情况下,做增量备份:

db2 backup db sample online incremental use tsm

备份成功,返回一个时间戳

2)        同样可以用db2adutl db2 list history察看备份纪录。

3)        还有一种delta的备份:

db2 backup db sample online

incremental delta use tsm

4)        这两种备份的区别,类似Oracle ExportsIncrementalCumulative方式,db2incremental对应oraclecumulative方式,而db2delta方式则对应oracleincremental方式。

5)        备注:同样,对每个节点都做这个操作。

4、 还原数据库

1)        开始还原,先断开现有数据库连接

db2 "disconnect all"

2)        先新建一个数据库作为覆盖还原的目标数据库

db2 "create db sample on d: using codeset gbk territory cn"

3)        将源数据库aic_jx_320070726131128做的备份覆盖还原到aic_jx_4,并且使用重定向(注意:20070726131128需要根据实际备份日期进行修改

db2 "restore db sample_1 from D:/DB2DBBACKUP taken at 20070726131128 to d:into aic_jx_4 replace existing redirect"

4)        针对源数据库的表空间存储进行重定向设定,可以调整使用FILEDMS类型表空间的大小 

db2 "set tablespace containers for 2 using (file 'userspace1.dat' 128000 )"

db2 "set tablespace containers for 3 USING (FILE 'indexspace1.dat'128000)"

db2 "set tablespace containers for 4 USING (FILE 'userspace2.dat'64000)"

db2 "set tablespace containers for 5 USING (FILE 'cdspace2.dat'16384)"

db2 "set tablespace containers for 6 USING (path 'SQLT0002.0')"

db2 "set tablespace containers for 7 USING (path 'SYSTOOLSPACE')"

db2 "set tablespace containers for 8 USING (path 'TEMPUSESPACE1')"

db2 "set tablespace containers for 9 USING (path 'USERSPACE3')"

db2 "set tablespace containers for 10 USING (path 'aic_jx_user_tmp')"

db2 "set tablespace containers for 11 USING (path 'aic_jx_large_T')"

db2 "set tablespace containers for 12 USING (path 'aic_jx_large_U')"

(具体表空间的多少,应该和源数据库一致)

5)        开始还原过程

db2 "restore db aic_jx_3 continue"

6)        还原结束激活数据库

db2 "activate db aic_jx_4"

一些辅助的命令

db2 "get db cfg for aic_jx_4"

db2 "update db cfg for aic_jx_4 using locklist 50"

db2 "list utilities show detail"

5、 恢复数据库

1)        手工drop数据库,模拟灾难恢复的情况,执行如下操作:

db2 drop db sample

2)        恢复备份历史纪录(每次backup,不论类型,都会备份历史纪录文件)。这里的时间戳应该是最新的:

db2 restore db sample history file use tsm

taken at 20030102223107 buffer 100

3)        使用db2的恢复帮助工具:

db2ckrst -d sample -t 20030101224424 -r database

命令返回建议的必需的恢复操作命令。

4)        按照帮助工具的提示,先做版本恢复,恢复命令如下:

db2 restore db sample incremental use tsm taken at 20030101224424 buffer 100 

同样先做主节点的恢复,再做其他节点的恢复操作。

5)        这时数据库处于rollforward-pending state的状态,需要做roll forward 操作:

db2 rollforward db sample to 2003-01-12 - 13.27.25 .000000 on all nodes and stop

前滚到同一个时间点。这个操作要在主节点来做。

6、 关于数据库备份选择的时间等:

1)        在数据库维护的过程中,数据库的备份对于在灾难面前对数据的恢复是至关重要的,可以说,没有备份,就没有恢复的可能。

2)        但备份,我们要考虑几个事情:

a)         数据库本身的大小,

b)        备份的周期。

c)        数据库越大,需要的备份设备越大,备份的时间越长。

3)        一般可建议的做法:

a)         每周做一次完全备份

b)        没天做一次增量备份

c)        做这些备份的动作用Linux本身的服务来完成

7、 关于DB2的归档日志问题:

1)        第一活动日志文件(First active log file)=S0000091.LOG

2)        每个日志文件的大小和日志文件的多少的设置原则:

a)        日志文件能够保存每两次数据库完全备份间的修改

b)        维护日志的时候,把那些无用的日志给删除掉。

c)         进行了日志相关的参数修改后,需要进行数据库的重启,数据库重启,如果设置的日志比较大的话,重启的时间可能比较长,也许会操作4个小时。

8、 说明:

1)        恢复操作也有onlineoffline,区别等同backup的操作。

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

3)        恢复的例子中只做了版本恢复。若还有更新的全备份和增量备份的image,可以依次做恢复(请注意使用db2ckrst的建议恢复次序和次数)之后,最后做roll forward.

 

db2 rollforward db sample to end of logs

ROLLFORWARD DATABASE  sample  COMPLETE

or

db2 rollforward db sample to end of logs and complete

把原数据库中的日志复制过来,拷贝到服务器的一个目录下,执行下面的命令:

db2  rollforward database TFD to end of logs and complete OVERFLOW LOG PATH (log-directory)

在还原完成之后,在

Connect to TFD 时候显示说缓冲池有错误,这个应该是还原上去的的库和原来存在的库不一样的情况,这个时候,可通过下面的方式来解决

force application all

db2set DB2_OVERRIDE_BPF=10000

db2stop

db2start

再连接

Connect to TFD,应该可以成功了。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值