通过举例详细说明了恢复 DB2 分区数据库增量备份映象文件的具体实现步骤。
对于 DB2 分区数据库来说,其非增量备份映象的恢复操作是可以通过仅发出两条恢复命令来完成的,即先恢复
编目分区的备份,再恢复其它分区的备份。但如果要恢复分区数据库的增量备份映象,由于要对恢复的增量备份
映象的时间戳记使用 db2ckrst 这一检测增量备份映象恢复顺序的实用程序进行检测,以获取恢复操作的命令序
列,而各分区的增量备份映象的时间戳记又不可能完全相同,因此对于编目分区外的其它分区,不可能再通过一
条命令来恢复这些分区的增量备份映象了,而必须针对每个分区,分别使用 db2ckrst 获取恢复命令的操作序列
,并根据所取得的命令分分区进行恢复操作。
这里就以一个具有 4 个节点的分区数据库 SAMPLE 为例,说明对于 DB2 分区数据库增量备份进行恢复操作的具
体步骤。
一. DB2 分区数据库的增量备份操作:
1. 检查并修改数据库参数设置:
数据库可进行增量备份的一个必要条件是要启用 TRACKMOD 这一数据库参数。仅当 TRACKMOD 被设为 ON 时才可
执行对数据库进行增量备份的操作。为检测该参数当前的状态,可使用:
db2_all "db2 get db cfg for sample" |grep "TRACKMOD" --(Unix 平台)
db2_all "db2 get db cfg for sample" |find /i "TRACKMOD" --(Windows 平台)
该命令将返回所有分区上 TRACKMOD 的设置。如果输出显示不是所有分区上的设置都为 ON 这一打开状态,可用
下述命令修改此设置为打开状态(假设要修改的分区号为 3):
db2_all "<<+3< db2 update db cfg for sample using trackmod on"
如果整个数据库的 TRACKMODE 参数均未打开,可使用如下命令对所有分区进行修改:
db2_all "db2 update db cfg for sample using trackmod on"
2. 对分区数据库的脱机全备份操作:
当修改了参数的设置后,首先需要对分区数据库进行一次完整的脱机全备份操作,后续的增量备份映象都是建立
在这一备份映象的基础之上的。备份的命令为(这里未使用分区并行操作的备份方式):
db2_all "db2 backup db sample"
备份操作将在各个分区上被执行,备份结束后,在放置备份映象的路径下(此处为当前路径)使用命令 ls,可
查看到上述命令产生的,分别对应于四个分区的备份映象文件,如:
SAMPLE.0.db2v8eee.NODE0000.CATN0000.20040429142824.001
SAMPLE.0.db2v8eee.NODE0001.CATN0000.20040429142843.001
SAMPLE.0.db2v8eee.NODE0002.CATN0000.20040429142857.001
SAMPLE.0.db2v8eee.NODE0003.CATN0000.20040429142912.001
从上述文件名中包含的时间戳记可以看到,各分区上完成备份操作的时间是不同的。
3. 对分区数据库的增量备份操作:
在完成了分区数据库的一次全备份操作的前提下,用户可根据数据库的使用情况,考虑对分区数据库进行多次增
量备份操作(这里仅以一次非并行方式的增量备份为例进行说明),其命令为:
db2_all "db2 backup db sample incremental"
命令执行完成后可得到类似如下的,相应于各个分区的四个增量备份映象文件:
SAMPLE.0.db2v8eee.NODE0000.CATN0000.20040429143406.001
SAMPLE.0.db2v8eee.NODE0001.CATN0000.20040429143419.001
SAMPLE.0.db2v8eee.NODE0002.CATN0000.20040429143433.001
SAMPLE.0.db2v8eee.NODE0003.CATN0000.20040429143447.001
到此步骤为止,就完成了对 DB2 分区数据库的增量备份操作,下面将介绍如何在必要时恢复这些增量备份映象
。
二. DB2 分区数据库增量备份的恢复操作:
用户创建的增量备份映象,会因备份操作的时间点的不同,而产生多套备份映象。为了恢复某个时间点的分区数
据库增量备份映象,用户必须保证在一次恢复操作中使用的各分区的增量备份映象均为同一次备份操作所产生的
。
由于分区数据库的所有编目表都放置在编目分区中,DB2 在备份或恢复时要求独占该分区,因此在对其它分区进
行恢复操作之前,应首先完成该分区的增量备份的恢复操作,然后再依次对其它节点进行恢复。这里假设我们要
恢复上述步骤 3. 中产生的一套增量备份映象文件。
1. 在编目分区上进行增量备份的恢复步骤:
1)获取编目分区号:
用户可利用如下命令确定分区数据库中哪个分区为编目分区,以便首先完成该分区的恢复操作:
db2 list db directory
Database 7 entry:
Database alias = SAMPLE
Database name = SAMPLE
Local database directory = /home/public/db2v8eee
Comment =
Directory entry type = Indirect
Catalog database partition number = 0
从命令输出的最后一行“ Catalog database partition number(目录数据库分区号)”中可知编目分区号为 0。
2)获取恢复操作的命令序列:
与单分区增量备份的恢复步骤相同,用户首先需要使用 db2ckrst 检测增量备份映象恢复操作的命令序列。从步
骤 3 中的增量备份文件的文件名:
SAMPLE.0.db2v8eee.NODE0000.CATN0000.20040429143406.001
:
中可知,编目分区为 0 的增量备份的时间戳为:20040429143406,则使用 db2ckrst 的命令为:
db2_all "<<+0< db2ckrst -d sample -t 20040429143406"
命令执行后,在屏幕上会有类似的如下输出:
Suggested restore order of images using timestamp 20040429143406 for
database sample.
====================================================
restore db sample incremental taken at 20040429143406
restore db sample incremental taken at 20040429142824
restore db sample incremental taken at 20040429143406
====================================================
3)恢复增量备份映象:
按照上述给出的命令完成 0 号编目分区的增量备份映象的恢复操作:
db2_all "<<+0< db2 restore db sample incremental taken at 20040429143406"
db2_all "<<+0< db2 restore db sample incremental taken at 20040429142824"
db2_all "<<+0< db2 restore db sample incremental taken at 20040429143406"
2. 在除编目分区外的其它分区上进行增量备份的恢复步骤:
在完成了编目分区的恢复操作后,便可以类似编目分区恢复操作的顺序对其它分区依次进行增量备份的恢复操作
了,需要注意的是,如上面已经提到的,由于是对增量备份进行恢复,所有无法对其它分区进行并行的恢复操作
。这里以分区 3 为例加以说明:
1)获取恢复操作的命令序列:
3 号分区的增量备份映象文件名为:
SAMPLE.0.db2v8eee.NODE0003.CATN0000.20040429143447.001
利用 db2ckrst 取得恢复操作的命令序列的命令为:
db2_all "<<+3< db2ckrst -d sample -t 20040429143447"
其输出为:
Suggested restore order of images using timestamp 20040429143447 for
database sample.
=====================================================
restore db sample incremental taken at 20040429143447
restore db sample incremental taken at 20040429142912
restore db sample incremental taken at 20040429143447
=====================================================
2)恢复增量备份映象:
依次执行上述输出中步骤中所取得的输出序列,便可完成该分区的恢复操作:
db2_all "<<+3< restore db sample incremental taken at 20040429143447"
db2_all "<<+3< restore db sample incremental taken at 20040429142912"
db2_all "<<+3< restore db sample incremental taken at 20040429143447"
对于其它分区增量备份的恢复,只需依次重复上述步骤进行恢复即可,当最终完成了该分区数据库的增量备份的
恢复操作后,分区数据库中的数据将重新处于完整的,保证了一致点的正常状态,以供用户连接使用。