场景2:通过表空间备份快速重建数据库,恢复重要数据
通过上面的例子,我们知道 DB2 V9 现在支持通过不同时间做的不同表空间的备份来重建和恢复整个数据库,这个强大的新特性无疑给我们考虑备份 / 恢复策略时带来了很多新的启发。
下面我们将进一步对这个特性进行探讨。让再我们回到上一个例子,我们假设 TEST 数据库是一个重要的记录在线交易的数据库,其中,USERSPACE1 和 USERSPACE2 表空间存放了在线交易所需要的全部重要数据,而 USERSPACE3 表空间存放的则是部分历史数据,主要用于历史查询,数据量较大,而其重要性相对较低。
恢复表空间 USERSPACE1 和 USERSPACE2 的数据
一旦我们的数据库系统发生故障,如果我们需要恢复全部 3 个表空间,则由于 USERSPACE3 数据量较大,导致恢复速度缓慢。我们所希望的是,首先能够快速恢复 USERSPACE1 和 USERSPACE2 表空间的数据,快速恢复在线交易;然后我们再在合适的时机,恢复 USERSPACE3 表空间的历史数据。下面,让我们看看如何实现我们的想法。
第一步,通过发出 RESTORE DATABASE 命令和 REBUILD 选项,告诉 DB2 首先恢复 USERSPACE1 和 USERSPACE2 表空间。
清单7 :恢复表空间 USERSPACE1 和 USERSPACE2 方法一
db2 restore db test rebuild with tablespace (SYSCATSPACE,USERSPACE1,USERSPACE2)
taken at 20060516135136
尽管我们希望只恢复 USERSPACE1 和 USERSPACE2 表空间,但 SYSCATSPACE 系统表空间是必须的,否则 DB2 无法正常工作。上述命令中指定的“目标影像”TEST.3.DB2.NODE0000.CATN0000.20060516135136.001 包含了 USERSPACE2 和 USERSPACE3 表空间的备份。这是我们所有备份影像中最近的包含 USERSPACE2 和 USERSPACE3 表空间备份的影像。需要注意的是,尽管 20060517135208 才是时间最近的一个备份影像,但它不包括 USERSPACE1, USERSPACE2, 或 SYSCATSPACE 表空间备份,因此我们不会用它来进行恢复。
以下的命令可以达到同样的效果。
清单8: 恢复表空间 USERSPACE1 和 USERSPACE2方法二
第二步,执行 ROLLFORWARD DATABASE 命令和 TO END OF LOGS 选项来前滚数据库到最近的一个同步时间点。
清单9:前滚数据库
db2 rollforward db test to end of logs
第三步,发出 ROLLFORWARD DATABASE 命令和 STOP 选项来停止前滚 。
清单10:停止数据库前滚
db2 rollforward db test stop
当然,你也可以选择将数据库前滚到某个时间点,而不是日志的末尾,但该时间点必须是你备份影像时间点之后的某个时间点。上述命令执行完毕后,数据库就可以正常使用,而且 USERSPACE1 和 USERSPACE2 也可以正常访问了。USERSPACE3 仍然处于 RESTORE PENDING 状态,你可以选择迟一点的某个时间来恢复它。
恢复表空间 USERSPACE3的数据
第一步,执行 RESTORE DATABASE 命令来恢复表空间 USERSPACE3 的数据。
清单11 :恢复表空间USERSPACE3
db2 restore db test tablespace (USERSPACE3) taken at 20060517135208
第二部,执行 ROLLFORWARD DATABASE 和 TO END OF LOGS 选项来前滚 USERSPACE3 表空间。
清单12 :前滚表空间 USERSPACE3
db2 rollforward db test to end of logs tablespace (USERSPACE3)
第三步, 发出 ROLLFORWARD DATABASE 命令和 STOP 选项结束 USERSPACE3 的前滚。
清单13:结束表空间 USERSPACE3 的前滚
db2 rollforward db test stop
现在,TEST 数据库的所有 4 个表空间都可以正常使用了。
通过上面的两个例子,我们学习了如何通过部分或全部表空间级的备份来重建和恢复整个数据库,或根据数据的重要性和优先级来分步重建和恢复数据库。
这个特性可以有效的减小我们数据备份的时间,我们可以按照不同频率来有选择的备份不同重要性的表空间,而不是整个数据库。这个特性同样可以缩短我们进行系统恢复的时间,我们可以根据数据的重要性,分步来恢复数据库,而不需要一次恢复整个数据库。最后,值得提醒的是,为了使用这个很好的特性,数据库的日志和 SYSCATSPACE 系统表空间的备份仍然是至关重要不可缺少的。