Cheney.Yu

博客园 首页 联系 订阅 管理

刚刚接触DB2,对DB2的备份恢复机制不是太熟悉,相关的资料又太少,只好自己慢慢摸索了。

需求

对生产库进行在线压缩备份,备份中包含归档日志,定期将生产库备份恢复到测试环境,确保测试环境采用最新的生产数据。

备注:生产环境与测试环境中,数据文件存储路径不一致,在恢复过程中应注意。

环境

OS:

$ oslevel -s
6100-06-06-1140

数据库:

$ pwd
/opt/IBM/db2/V9.8FP5/install

$ ./db2ls

Install Path Level Fix Pack Special Install Number Install Date Installer UID
---------------------------------------------------------------------------------------------------------------------
/opt/IBM/db2/V9.8 9.8.0.4 4 12 Mon Jun 4 16:19:38 2012 +0800 0
/opt/IBM/db2/V9.8FP5 9.8.0.5 5 Fri Jul 13 15:22:55 2012 +0800 0

 

$ db2instance -list
ID TYPE STATE HOME_HOST CURRENT_HOST ALERT PARTITION_NUMBER LOGICAL_PORT NETNAME
-- ---- ----- --------- ------------ ----- ---------------- ------------ -------
0 MEMBER STARTED SXYCDBM0 SXYCDBM0 NO 0 0 SXYCDBM0-ib0
1 MEMBER STARTED SXYCDBM1 SXYCDBM1 NO 0 0 SXYCDBM1-ib0
128 CF PRIMARY SXYCDBF0 SXYCDBF0 NO - 0 SXYCDBF0-ib0,SXYCDBF0-ib1
129 CF PEER SXYCDBF1 SXYCDBF1 NO - 0 SXYCDBF1-ib0,SXYCDBF1-ib1

HOSTNAME STATE INSTANCE_STOPPED ALERT
-------- ----- ---------------- -----
SXYCDBF1 ACTIVE NO NO
SXYCDBF0 ACTIVE NO NO
SXYCDBM1 ACTIVE NO NO
SXYCDBM0 ACTIVE NO NO

备注:这是一个2个Member和2个CF的pureScale环境。

 

备份:

$ db2 backup db $DBNM online to /db2fs/db2backup/backup compress INCLUDE LOGS

Backup successful. The timestamp for this backup image is : 20120731182910

备注:在线、压缩备份,备份image中包含备份期间产生的所有归档日志

可以使用以下脚本来获取数据库的各种文件的存储路径DBPATH、LOGPATH、DB_STORAGE_PATH

db2 "select substr(type,1,20) as type, substr(path,1,80) as path from sysibmadm.dbpaths order by type"

 

恢复

将生产库的备份集ftp到测试环境,开始恢复数据库

1. 还原数据文件

db2 restore db $DBNM from /db2fs/db2backup/yuch/20120731 on /db2fs/sxdata DBPATH ON /db2fs/sxlog NEWLOGPATH /db2fs/sxlog/db2sdin1/SX2/DBPARTITION0000/LOGSTREAM0000/

备注:

测试环境的数据库存储路径、数据文件存储路径,以及在线日志的存储路径与生产环境不一致,在恢复过程中需要修改路径。

/db2fs/sxdata为DB_STORAGE_PATH,即数据库存储路径

/db2fs/sxlog为DBPATH,即数据文件的存储路径

/db2fs/sxlog/db2sdin1为NEWLOGPATH,即在线日志存储路径

 

2.还原归档日志文件

db2 restore db $DBNM logs from /db2fs/db2backup/yuch/20120731 logtarget /db2fs/db2backup/archive_log/sx2/db2sdin1/SX2

备注:

将备份集中的归档日志还原到指定目录

logtarget即新指定的归档日志路径

 

3.前滚数据库到备份结束时间点

$ db2 "rollforward db sx2 to end of logs and stop overflow log path (/db2fs/db2backup/archive_log/sx2)"

Rollforward Status

Input database alias = sx2
Number of members have returned status = 2

Member ID Rollforward Next log Log files processed Last committed transaction
status to be read
----------- -------------------------- ------------------- ------------------------- --------------------------
0 not pending S0000095.LOG-S0000095.LOG 2012-07-31-03.22.53.000000 UTC
1 not pending S0000313.LOG-S0000313.LOG 2012-07-31-03.22.53.000000 UTC

DB20000I The ROLLFORWARD command completed successfully.

备注:在DB2中,rollforward操作类似于Oracle的recover操作,整个过程就是把备份期间产生的归档日志都应用到数据库中。

rollforward命令中需要指定归档日志的目录。

至此测试环境数据库恢复完毕。

 

posted on 2012-09-09 16:29  Cheney.Yu  阅读(316)  评论(0编辑  收藏  举报