联机全量备份数据库DB2TEST1
我们可以使用带ONLINE选项的BACKUP命令,可以联机备份数据库,前提是我们使用了归档日志模式。由于联机备份期间,业务系统还可以插入、更新、删除数据,所以只用全量联机备份映像没有完成恢复数据库操作,至少还需要联机备份期间的日志以便进行前滚恢复,如果此时日志没有被妥善保存,比如被删除或损坏,那么前滚操作将无法完成。所以,为了妥善保存利用联机备份映像还原数据库时所需的日志文件,为成功恢复提供保护,我们可以在联机备份时使用INCLUDE LOGS选项,指定在备份映像中包括复原和恢复数据库所需的日志文件。也就是说,如果使用联机备份映像进行恢复时,无需单独查找所需的日志文件以保证联机备份的一致性,在联机备份中已经存在了所需的日志文件。当执行BACKUP DB命令时指定INCLUDE LOGS选项,BACKUP实用程序将截断当前活动日志文件并将必要的日志扩展数据库集合复制到备份映像中。
下面我们来看一下BACKUP命令的语法,具体如清单7所示:
- - 清单7 .备份数据库语法
>> - BACKUP--+-DATABASE-+--database-alias- - - - - - - - - - - - - - - - - -- - - - - - - - - - - - >
' – DB - - - - - - - -- - - '
> -- +- - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - -- - - - - - - >
' – USER – username -- + - - - - - - - - - + - '
' – USING – password- '
> -- + - - - - - - - - - - -- - - - - - - - - - - - - - - - - - + -- + - - - - - -- - - + - - - - - - - - - >
| . - , - - - - - - . | ' – ONLINE - '
| V | |
'– TABLESPACE-- (---- tablespace-name-+-- )- '
> -- +- - - - - - - - - - - - - - - - +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >
'– INCREMENTAL--+- - +- '
'- DELTA- '
> -- + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - -+ - - >
+ -USE--+-TSM--+-- + - - - - - - - - - - - - - - - - - - - - + -- + - - - - - - - - - - - - - - + - - -- - +
| '-XBSA-' '-OPTIONS--+-"options-string"-+-' '-OPEN--num-sessions--SESSIONS-' |
| ' -@ -- file-name- - - ' |
| . - , - - - - . |
| V | |
+ -TO ---- + -dir-+-+ - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - +
| ' -dev- ' |
'-LOAD--library-name--+ - - - - - - - - - - - - - - - - - - - +--+ - - - - - - - - - - - - - - - - - + - '
'-OPTIONS--+-"options-string"-+-' '-OPEN--num-sessions--SESSIONS-'
' -@-- file-name --- '
> -- + - - - - - - - - - - - - - -- - - - + -- + - - - - - - - - - - - - - - - - + - - - - - - - - - - - >
' – WITH --num-buffers--BUFFERS- ' ' -BUFFER--buffer-size- '
> -- + - - - - - - - - - - - - -- - - - + - - - - - - - - -- - - - - - - - - - - - - - - - >
' – PARALLELISM – n - '
> -- + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - >
' – COMPRESS -- + - - - - - - - - - - - - - -- - - + -- + - - - - - - - - -- - - - + - '
' -COMPRLIB—name-- + - - - + - ' ' -COMPROPTS--string- '
' – EXCLUDE - '
.-EXCLUDE LOGS-.
> -- + - - - - - - - - - - - - - - - - - - - - - - - - - + -- + - - - - - - - -- - - - - - - - - + - >
' -UTIL_IMPACT_PRIORITY -- + - - - - - - - - + - ' ' -INCLUDE LOGS- '
' – priority - '
> -- + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ><
' - WITHOUT PROMPTING - '
如清单7所示,备份数据库最简单的命令就是
BACKUP DB 数据库名
如果联机备份,可以使用ONLINE选项,想包含联机备份期间需要的日志可以使用INCLUDE LOGS选项。可以把数据库备份到磁盘或者磁带上,如果存储管理软件使用的TSM,可以直接在备份命令中使用USE TSM选项,如果使用的第三方存储管理软件,可以使用LOAD选项指定第三方供应商的DLL。
接下来我们新打开一个DB2CLP窗口,连上数据库,发出带ONLINE选项的BACKUP DB命令,联机全量备份示例数据库DB2TEST1,具体如清单8所示:
- - 清单8 .联机备份示例数据库DB2TEST1
C:\> db2 connect to db2test1
数据库连接信息
SQL 授权标识 = RHETTE
本地数据库别名 = DB2TEST1
C:\> db2 backup db db2test1 online include logs
备份成功。此备份映像的时间戳记是:20070928223032
在联机备份数据库期间(备份没有完成之前),我们继续对示例数据库DB2TEST1进行操作,在原来的DB2CLP窗口中对TEST1表新插入一条记录,具体如清单9所示:
- - 清单9 .插入测试表一条新的记录
C:\> DB2 INSERT INTO TEST1 VALUES ( 3 , ' SCA ' , ' the third rows ' )
DB20000I SQL命令成功完成。
联机全量备份执行成功,此备份映像的时间戳记是:20070928223032。想查看示例数据库DB2TEST1的备份和还原历史情况,可以使用LIST HISTORY BACKUP ALL命令,对于备份情况返回值来说,其类型N代表在线全备,O代表在线增量备,E代表在线差异备份,类型F代表脱机全备,I代表脱机增量备份,D代表脱机差异备份。
下面我们在DB2CLP窗口中,发出LIST HISTORY BACKUP ALL命令,返回两条记录,第一条记录是我们第一次脱机第一次全备,第二条是我们刚才联机全量备份,且联机备份映像中包含了日志S0000001.LOG,具体如清单10所示:
- - 清单10 .查看备份历史记录
C:\> DB2 LIST HISTORY BACKUP ALL FOR DB2TEST1
列示 DB2TEST1 的历史记录文件
匹配的文件条目数 = 2
Op 对象时间戳记+序列 类型设备最早日志 当前日志 备份标识
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
B D 20070928212852001 F D S0000000.LOG S0000000.LOG
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
包含 3 表空间:
00001 SYSCATSPACE
00002 USERSPACE1
00003 SYSTOOLSPACE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
注释:DB2 BACKUP DB2TEST1 OFFLINE
开始时间:20070928212852
结束时间:20070928212856
状态:A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EID:2 位置:C:
Op 对象时间戳记+序列 类型设备最早日志 当前日志 备份标识
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
B D 20070928223032001 N D S0000001.LOG S0000001.LOG
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
包含 3 表空间:
00001 SYSCATSPACE
00002 USERSPACE1
00003 SYSTOOLSPACE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
注释:DB2 BACKUP DB2TEST1 ONLINE
开始时间:20070928223032
结束时间:20070928223037
状态:A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EID:5 位置:C:
联机备份如果采用TSM,其命令可以如下:
db2 backup db db2test1 online use tsm open 4 sessions include logs
其中,USE TSM是关键字,表示备份映像将通过TSM保存到磁带机上,OPEN 4 SESSIONS表示,此次备份打开4个SESSION,表现为备份映像(假如正常情况下只备份映像能放在一个文件中)将使用4个备份映像文件存储。如果想使用TSM,在需要预先配置好TSM环境,这样数据库管理器才能使用TSM选项:
必须安装和配置可用的 TSM客户机和服务器。另外,必须在每台DB2服务器上安装 TSM客户机 API。
设置TSM客户机API使用的环境变量:DSMI_DIR、DSMI_CONFIG、DSMI_LOG。
设置TIVOLI客户机与TSM服务器交互所使用的密码。具体见DB2官方文档。
另外,使用TIVOLI STORAGE MANAGER时还需要注意,对于多个备份映像使用同一个数据库别名的情况,时间戳记和序号就成为标准名称中的专有部分。需要查询TSM以确定要使用的备份版本。如果执行联机备份操作并指定了USETSM选项和INCLUDELOGS选项,则当两个进程尝试同时写同一台磁带机时,就会发生死锁。如果正在将磁带机用作日志和备份映像的存储设备,则需要为TSM定义两个独立的磁带池,一个用于存储备份映像,另一个用于存储归档日志。
如果实现第三方备份软件,比如EMC LEGATO,备份命令可以如下:
db2 backup db db2test1 online load /usr/lib/libnsrdb2.o open 4 sessions include logs
LOAD选项后面跟的是EMC LEGATO的DLL文件,OPEN 4 SESSIONS表示,此次备份打开4个SESSION,表现为备份映像(假如正常情况下只备份映像能放在一个文件中)将使用4个备份映像文件存储。
当执行备份操作时,DB2将自动为缓冲区个数、缓冲区大小和并行性设置选择非常好的值。此类值根据可用实用程序堆内存量、可用处理器数和数据库配置而定。目的是最大程度上减少完成备份操作所需的时间。除非为下列BACKUPDATABASE命令参数显式地输入某个值,否则DB2将为其选择一个值:
WITH缓冲区个数BUFFERS
PARALLELISMn
BUFFER缓冲区大小
如果未指定缓冲区数和缓冲区大小而导致DB2设置这些值,对大型数据库的影响应该是最低的。但是,对于小型数据库来说,会导致备份映像大幅增大。即使写入磁盘的最后一个数据缓冲区只包含很少数据,也会将整个缓冲区写入映像。在小型数据库中,这表示相当一部分的映像可能是空的。还可以选择执行以下任何操作来缩短完成一次备份操作所需的时间:
指定表空间备份。
使用指定了TABLESPACE选项的BACKUPDATABASE命令,可以备份(继而恢复)部分数据库。这样便于对表数据、索引和单独表空间中的长型字段或大对象(LOB)数据进行管理。
增大BACKUPDATABASE命令上PARALLELISM参数的值,以使它反映正在备份的表空间数。
PARALLELISM参数定义在压缩备份操作期间从数据库读取数据和压缩数据时,已启动的进程或线程数。将每个进程或线程分配给特定表空间,因此,为PARALLELISM参数指定的值大于要备份的表空间数并无益处。备份完此表空间后,它会请求另一个表空间。但是应注意:每个进程或线程都需要内存CPU开销。
增加备份缓冲区大小。
理想的备份缓冲区大小是表空间扩展数据块大小的倍数加一页。如果有多个扩展数据块大小不同的表空间,则将值指定为扩展数据块大小的公倍数加一页。
增加缓冲区的数量。
使用的缓冲区至少是备份目标(或会话)的两倍,以确保备份目标设备无需等待数据。
使用多个目标设备。