免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 30265 | 回复: 8

DB2 DB2备份恢复数据库步骤(自己测试通过) [复制链接]

论坛徽章:
0
发表于 2007-06-08 14:23 |显示全部楼层
刚刚接触DB2的数据库,自己整理了一下备份的步骤,分享出来。有不对的地方请大家指正!!

一、设置归档参数:

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

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

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

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

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

6、db2stop force

7、db2start

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

二、备份在线数据库

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

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

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

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

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

三、恢复在线数据库

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

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

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

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

论坛徽章:
0
发表于 2007-06-09 16:50 |显示全部楼层
有一点不认同:“先恢复完全备份,然后在恢复增量备份”
对于增量恢复,你的做法正好反了,你这样做的话,会收到SQL2574N的错误信息。
在db2ckrst里面已经清楚的告诉你恢复的顺序。

论坛徽章:
0
发表于 2007-06-13 09:46 |显示全部楼层
谢谢,版主,我是刚刚弄db2 ,对她的结构还不是很熟悉,也没有注意提示信息,但是按照上面的做法,我确实恢复了数据库,而且我在增量备份里面添加的表也恢复了,我会在测试一下,有时间把结果贴出来的。

下面是我测试备份镜像中包日志的备份和恢复的步骤,请大家看看,有什么地方需要改正的:

注:/home/db2inst1/on_back/      #为备份文件位置
    /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/     #为<db_name>数据库的log位置,通过db2 get db cfg for <db_name>得到。



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

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

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

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

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

论坛徽章:
0
发表于 2007-06-13 14:33 |显示全部楼层
在“10”中已把数据库drop了,“20”中如何做online backup呢?

论坛徽章:
0
发表于 2007-06-13 15:37 |显示全部楼层
原帖由 huyuhui001 于 2007-6-13 14:33 发表
在“10”中已把数据库drop了,“20”中如何做online backup呢?

哈哈,版主太严谨了吧

论坛徽章:
0
发表于 2007-06-13 17:39 |显示全部楼层
哈哈,避免误导新人。

论坛徽章:
0
发表于 2007-06-13 18:00 |显示全部楼层
不好意思,是我的步骤写的反了,我是把原来的数据库给drop掉,又重新创建了一个库。谢谢提醒,改正!!!
注:/home/db2inst1/on_back/      #为备份文件位置
    /home/db2inst1/db2inst1/NODE0000/SQL00001/SQLOGDIR/     #为<db_name>数据库的log位置,通过db2 get db cfg for <db_name>得到。

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

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

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

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

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

论坛徽章:
0
发表于 2007-09-15 17:09 |显示全部楼层
不错,回去照着做一遍!

论坛徽章:
0
发表于 2007-09-17 16:24 |显示全部楼层
突然想确认一下楼主的DB2版本,好像8.2之后,Userexit不需要设置就可以在线备份了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP