1、DB2备份恢复介绍1、离线全备份 1)、首先确保没有用户使用DB2: $db2listapplicationsfordbsample 2)、停掉数据库并重新启动,以便断掉所有连接: db2stopforce db2start 3)、执行备份命令:(使用TSM作为备份的介质) db2backupdbsampleusetsm 备份成功,将会返回一个时间戳。 4)、检查备份成功: Db2listhistorybackupallforsample,可以看到多了这个备份的纪录。 Db2adutlquery命令也可以看到返回值。 5)、备注: 首先对主节点(catalog表空间在的节点)执行备份命令,再对
2、另外的节点也做这个操作。 2、 在线备份: 1)、首先打开一下支持在线备份的数据库配置参数: db2updatedbcfgforsampleusinguserexiton启用用户出口 db2updatedbcfgforsampleusinglogretainon启用归档日志 开启这些参数后,数据库处于backuppending状态,要求做数据库的离线全备份。做一下离线全备份,参考上面的命令。 2)、在线备份命令如下: db2backupdbsampleonlineusetsm 备份成功,返回一个时间戳。 3)、同样可以用db2adutl和db2listhistory察看备份纪录。 4)、备注:
3、 同样,对每个节点都做这个操作。 3、 在线增量备份 1)、在开启了必须的三个参数的情况下,做增量备份: db2backupdbsampleonlineincrementalusetsm 备份成功,返回一个时间戳。 2)、同样可以用db2adutl和db2listhistory察看备份纪录。 3)、还有一种delta的备份: db2backupdbsampleonlineincrementaldeltausetsm 这两种备份的区别,类似OracleExports的Incremental和Cumulative方式,db2的incremental对应oracle的cumulative方式,而db
4、2的delta方式则对应oracle的incremental方式。 4)、备注: 同样,对每个节点都做这个操作。 4、 恢复数据库 1)、手工drop数据库,模拟灾难恢复的情况,执行如下操作: db2dropdbsample 2)、恢复备份历史纪录(每次backup,不论类型,都会备份历史纪录文件)。这里的时间戳应该是最新的: db2restoredbsamplehistoryfileusetsmtakenat20030102223107buffer100 3)、使用db2的恢复帮助工具: db2ckrst-dsample-t20030101224424-rdatabase 命令返回建议的必需
5、的恢复操作命令。 4)、按照帮助工具的提示,先做版本恢复,恢复命令如下: db2restoredbsampleincrementalusetsmtakenat20030101224424buffer100 同样先做主节点的恢复,再做其他节点的恢复操作。 5)、这时数据库处于rollforward-pendingstate的状态,需要做rollforward操作: db2rollforwarddbsampleto2003-01-12-13.27.25.000000onallnodesandstop 前滚到同一个时间点。这个操作要在主节点来做。 5、有关说明: 1)、恢复操作也有online和offline的,区别如同backup的操作。 2)、按照表空间的备份和恢复类似,加子句TABLESPACE(tablespace-name即可。表空间级别的备份/恢复操作要求数据库处于归档日志和启用增量备份模式下。 3)、恢复的例子中只做了版本恢复。若还有更新的全备份和增量备份的image,可以依次做恢复(注意使用db2ckrst的建议恢复次序和次数)后,再做rollforward.