前两天执行redirect restore,这里分享一下它的过程和遇到的一些困难。
1. 首先从生产环境得到image, online 备份的
2. 传送到测试环境后,先用db2 restore db $dbname from $imagepath taken at $timestamp redirect generate script $scriptname产生出脚本。
3. 修改脚本。里面的信息全是在生产环境中的数据库的信息,表空间信息。这里需要改为测试环境的表空间,container。里面注释了db path,LOGTARGET等信息,如果测试环境没有这个数据库,就要自己设定db path,newlogtarget等信息,如果测试环境原本就有这个数据库,那么不要用DBPATH ON, NEWLOGPATH,需要使用原来(或者重新指定的目录)的值,这时要用LOGTARGET指定log的path,ON后面指定数据库路径 。
4.执行脚本的时候,因为生产环境的表空间特别大,造成在测试环境中原本的表空间container不能容纳那么多的表空间,这时候需要用一些额外的硬盘来容纳剩余的表空间。如果restore出错想重新设置参数,可以db2 restore db $dbname abort,然后再restore
5.restore后需要rollforward, 检查image中是否包含log,db2ckbkp -h <backup_name>。如果发现INCLUDE LOGS 为 "1 ",那么说明image中有log,这时候可以用db2 restore db $dbname logs from $imagepath logtarget $logpath
6.最后rollforward成功后就可以使用database了。db2 rollforward db $dbname to end of logs and complete
7、使用包含日志文件的在线备份镜像重建可恢复数据库
当重建一个可恢复数据库时,可以使用数据库备份,也可以使用表空间备份。备份可以是在线的,也可以是离线的。
如果您有一个包含日志文件的在线备份镜像,并且想使用这些日志来前滚数据库,那么可以使用 RESTORE DATABASE 命令的 LOGTARGET 选项从镜像中获取日志。
再次使用 TEST 数据库作为例子,假设备份镜像 TEST.3.DB2.NODE0000.CATN0000.20060517135208.001 是一个包含日志的在线备份镜像。要使用表空间备份和存储在备份镜像中的日志恢复整个数据库:
带 LOGTARGET 选项发出一个 RESTORE DATABASE 命令。在恢复期间,这些日志被提取到 LOGTARGET 指定的位置。
db2 restore db test rebuild with all tablespaces in database taken at 20060517135208
logtarget /logs
带 TO END OF LOGS 选项发出一个 ROLLFORWARD DATABASE 命令,并指定日志的位置:
db2 rollforward db test to end of logs overflow log path (/logs)
注意,OVERFLOW LOG PATH 选项用于指定日志位置。
带 STOP 选项发出一个 ROLLFORWARD DATABASE 命令:
db2 rollforward db test stop
分享到:
评论