存储 频道

征文:DB2 V9联机备份还原

在增量模式下联机备份示例数据库DB2TEST1(联机备份、增量备份、差异备份)

DB2 V9引入了自动备份功能。由于大量发生硬件或软件故障,数据库可能会变得不可用。自动数据库备份功能减轻了 DBA 的数据库备份管理任务,它始终会确保在需要时对数据库执行最新的完全备份,需要注意的是,自动备份是完全备份,不是增量备份或差异备份。自动备份的前提是自动数据库备份(AUTO_DB_BACKUP)数据库配置参数和自动维护功能(AUTO_MAINT)数据库配置参数被打开。如果对数据库启用了前滚恢复(归档日志记录),则可以对联机备份或脱机备份启用自动数据库备份功能。否则,只能进行脱机备份。本文对此不做重点介绍,大家如果想深入的了解,可以看IBM的官方文档。
联机全量备份就是对当前数据库做一次完全的备份,备份期间,其他应用程序可以访问数据库,如果想使用联机备份映像文件进行恢复,需要使用联机备份期间相关的日志文件,现在可以在联机备份的时候指定INCLUDE LOGS指定备份映像文件中包含相关的日志文件。通过全量备份,可以把数据库完全恢复到备份时的状况。联机备份和脱机备份不同,脱机备份时,备份实用程序独占连接,其他应用程序不能访问数据库,联机备份时则不然。但利用脱机备份进行还原,对日志文件的需求不是必须的,而利用联机备份映像进行恢复时,对相关的日志文件是一定需要的。
联机增量备份是对当前数据库自从上次成功完全备份后的更新情况全部备份下来,同样,份期间,其他应用程序可以访问数据库。通常,可以使用联机全量备份和联机增量备份相结合的方式,更好的指定备份策略,很多客户在实际的操作过程中,比较少的用到差异备份。一般来说,如果存储空间允许的话,使用联机全量备份加联机增量备份,在手工还原数据库的时候,执行的步骤比较少,只需要还原3次就可以了(用到一个联机全量备份映像和一个联机增量备份映像,还原的次数是备份映像文件的个数加1)。
联机差异备份是对当前数据库自从上次成功备份(不管是全量备份、增量备份还是差异备份)后更新的情况全部备份下来,同样,份期间,其他应用程序可以访问数据库。通常,结合使用差异备份,对存储空间的需求会更小,对备份的频率可以更快,但对数据库的还原操作相应复杂了一些,当然,如果还原时使用自动还原(指定了AUTOMATIC参数的RESTORE),操作也十分简单。
如上面所述,联机增量备份和联机差异备份的区别在于,对连续不断更改的对象进行持续备份时,它们的行为不同。每个连续增量映像都包含了前一个增量映像的完整内容以及自上一次生产完全备份后更改过的或新增的任何数据。差异备份映像只包含自上次生成任何类型的映像后更改过的页。
 
接下来我们将分别对示例数据库 DB2TEST1分别进行联机备份、增量备份和差异备份。首先,我们在DB2CLP窗口对TEST1表新插入两条记录,具体如清单18所示:
 
- - 清单18 .插入测试表两条新的记录
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 4 , ' Danaus ' , ' the forth rows ' )
DB20000I SQL命令成功完成。
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 5 , ' Martin ' , ' the fifth rows ' )
DB20000I SQL命令成功完成。
 
 
命令执行成功,接下来我们在DB2CLP窗口中,发出BACKUP DB ONLINE命令,联机全量备份示例数据库DB2TEST1,具体如清单19所示:
 
- - 清单19 .联机备份示例数据库DB2TEST1
 
C:\> db2 backup db db2test1 online include logs
 
备份成功。此备份映像的时间戳记是:20070929094546
 
 
联机全备成功后,备份映像的时间戳为20070929094546。后面我们做恢复数据库操作的时候将会用到这个备份映像。
 
接下来我们再在DB2CLP窗口连上示例数据库DB2TEST1,在TEST1表新插入两条记录,主要是对示例表通过插入数据的方式,使表产生一些变化。在做增量备份的时候,好捕获这些变化。插入记录的情况具体如清单20所示:
 
- - 清单20 .插入测试表两条新的记录
 
C:\> db2 connect to db2test1
 
   数据库连接信息
 
 数据库服务器         = DB2 / NT 9.1.0
 SQL 授权标识         = RHETTE
 本地数据库别名       = DB2TEST1
 
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 6 , ' Scott ' , ' the sixth rows ' )
DB20000I SQL命令成功完成。
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 7 , ' slave ' , ' the seventh rows ' )
DB20000I SQL命令成功完成。
 
 
命令执行成功。现在我们来增量备份示例数据库DB2TEST1,把数据库最新的修改记录备份下来,在DB2CLP窗口中,发出带INCREMENTAL选项的BACKUP DB命令,具体如清单21所示:
 
- - 清单21 .增量备份示例数据库DB2TEST1
 
C:\> DB2 BACKUP DB DB2TEST1 ONLINE INCREMENTAL INCLUDE LOGS
 
备份成功。此备份映像的时间戳记是:20070929094818
 
 
增量备份成功完成,备份映像的时间戳是20070929094818。
增量备份映像是自从上次最新的、成功的完全备份操作以来,更改过的所有数据库数据的副本。也称为累积备份映像,因为进行的一系列增量备份中的每一个都会有上次增量备份映像的内容。增量备份映像的前身通常是同一对象最新的、成功的完全备份。 我们本次增量备份的前身是是我们上次的联机全备,备份映像时间戳是20070929094546。在此增量备份中,记录了刚才我们插入的两条记录,ID为6和7。
 
下面我们再在DB2CLP窗口连上示例数据库DB2TEST1,在TEST1表新插入两条记录,具体如清单22所示:
 
- - 清单22 .插入测试表两条新的记录
 
C:\> db2 connect to db2test1
 
   数据库连接信息
 
 数据库服务器         = DB2 / NT 9.1.0
 SQL 授权标识         = RHETTE
 本地数据库别名       = DB2TEST1
 
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 8 , ' New York ' , ' the eighth rows ' )
DB20000I SQL命令成功完成。
 
C:\> DB2 INSERT INTO TEST1 VALUES ( 9 , ' Houston ' , ' the ninth rows ' )
DB20000I SQL命令成功完成。
 
 
命令成功完成,现在我们来差异备份示例数据库DB2TEST1,把数据库最新的修改记录备份下来,在DB2CLP窗口中发出带INCREMENTAL DELTA选项的BACKUP DB命令,具体如清单23所示:
 
- - 清单23 .增量备份示例数据库DB2TEST1
 
C:\> DB2 BACKUP DB DB2TEST1 ONLINE INCREMENTALDELTA INCLUDE LOGS
 
备份成功。此备份映像的时间戳记是:20070929095249
 
 
备份成功。此备份映像的时间戳记是:20070929095249。
差异备份映像或增量差异备份映像是自从上次相关表空间的成功备份(包括完整、增量或差异备份)以来,已更改过的所有数据库数据的副本。也称为差异备份映像或非累积备份映像。差异备份映像的前身是最新的成功备份,包括差异备份映像中每个表空间的备份。本次差异备份映像的前身是上次的增量备份,其时间戳是20070929094818。里面包含我们刚才插入的两条记录,ID分别是8和9。
 
 
如果想查看数据库的历史备份还原情况,可以使用带有LIST HISTORY BACKUP ALL命令,对于备份映像信息来说,类型N代表在线全备,O代表在线增量备,E代表在线差异备份, 类型F代表脱机全备,I代表脱机增量备份,D代表脱机差异备份。
下面我们在DB2CLP窗口中,用LIST HISTORY命令查看备份历史情况,在返回结果中能看到我们联机备份映像(时间戳20070929094546)中包含了日志S0000008.LOG。联机增量备份映像(时间戳20070929094818)中包含了日志S0000010.LOG。联机差异备份映像(时间戳20070929095249)中包含了日志S0000012.LOG。具体如清单24所示:
 
- - 清单24 .查看备份历史记录
 
C:\> db2 list history backup all for db2test1
 
                    列示 db2test1 的历史记录文件
 
匹配的文件条目数 = 11
. . . . . . . . . . . . . .
 
 Op 对象时间戳记+序列     类型设备最早日志    当前日志     备份标识
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 B D 20070929094546001   N    D S0000008.LOG S0000008.LOG
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 包含 3 表空间:
 
 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    注释:DB2 BACKUP DB2TEST1 ONLINE
 开始时间:20070929094546
   结束时间:20070929094550
     状态:A
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 EID20 位置:C:
 
 
 Op 对象时间戳记+序列     类型设备最早日志    当前日志     备份标识
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  B D 20070929094818001   O    D S0000010.LOG S0000010.LOG
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 包含 3 表空间:
 
 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    注释:DB2 BACKUP DB2TEST1 ONLINE
 开始时间:20070929094818
   结束时间:20070929094819
     状态:A
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 EID 23 位置:C :
 
 
 Op 对象时间戳记+序列     类型设备最早日志    当前日志     备份标识
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 B D 20070929095249001   E    D S0000012.LOG S0000012.LOG
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 包含 3 表空间:
 
 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    注释:DB2 BACKUP DB2TEST1 ONLINE
 开始时间:20070929095249
   结束时间:20070929095250
     状态:A
  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 EID26 位置:C :
 
 
 
       至此,我们对示例数据库DB2TEST1启用了增量跟踪(TRACKMOD配置参数打开),分别做了联机全量备份、联机增量备份和联机差异备份,在备份之前,都分别插入了不同的值。下面我们将分别讲述使用手工和自动两种不同方式恢复示例数据库DB2TEST1,以及中间需要注意的事项
0
相关文章