【DB2备份】通过veritas netbackup备份软件对db2数据库的进行备份与恢复测试
以下通过veritas netbackup备份软件对db2数据库的进行备份与恢复测试
服务端:
10.88.0.150 主机名:tsmserve, 系统:windows ,软件版本:nbu 6.5客户端:
10.88.0.220 主机名:p520, 系统:aix6.1, 数据库:db2 v910.88.0.221 主机名:linux02 ,系统:Linux ,数据库:db2 v9
一、安装nbu服务端程序,IBM3582带库驱动程序。
二、安装IBM3582带库驱动程序
# lsdev -Cc tape
rmt0 Available 04-08-00-0,0 LVD SCSI 4mm Tape Drive
rmt1 Available 07-08-01 IBM 3580 Ultrium Tape Drive (FCP)
smc0 Available 07-08-01 IBM 3582 Library Medium Changer (FCP)
三、设置主机名,安装NBU ics media server及client及ovpass驱动,DB2模块。1、安装NBU2、设置环境变量export PATH=$PATH:/usr/openv/volmgr/bin;/usr/openv/netbackup/bin:/usr/openv/netbackup/admincmd:/usr/op
env/netbackup/bin/goodies:.3 安装ovpass 驱动
/usr/openv/volmgr/bin/driver/install_ovpassmkdev -c media_changer -s fcp -t ovpass -p fscsi0 -w 0x202e8,0x1 (scsi_id,lun)
四、配置NUB服务端,配置SAN方式备份。
在nbu端增加media server: p520 linux02
五、在linux as 5上安装nbu,带库等。我这里可以继续在linux上安装,配置为san方式。[root@linux02 ~]# lsscsi -g
[0:0:0:0] disk DGC RAID 5 0219 /dev/sda /dev/sg0
[0:0:1:0] tape IBM ULT3580-TD3 73P5 /dev/st0 /dev/sg1
[0:0:1:1] mediumx IBM ULT3582-TL 310B - /dev/sg2
[root@linux02 proc]# cat /sys/class/fc_host/host0/fabric_name
0x100000051e020e38
lspci
13:01.0 Fibre Channel: Emulex Corporation LP9000 Fibre Channel Host Adapter (rev 01)
------------------------------------------------------------
Device Name : "/dev/nst0"
Passthru Name: "/dev/sg1"
Volume Header: ""
Port: -1; Bus: -1; Target: -1; LUN: -1
Inquiry : "IBM ULT3580-TD3 73P5"
Vendor ID : "IBM "
Product ID : "ULT3580-TD3 "
Product Rev: "73P5"
Serial Number: "1210109511"
WWN : ""
WWN Id Type : 0
Device Identifier: "IBM ULT3580-TD3 1210109511"
Device Type : SDT_TAPE
NetBackup Drive Type: Not Found(6)
Removable : Yes
Device Supports: SCSI-3
Flags : 0x0
Reason: 0x0
------------------------------------------------------------
Device Name : "/dev/sg2"
Passthru Name: "/dev/sg2"
Volume Header: ""
Port: -1; Bus: -1; Target: -1; LUN: -1
Inquiry : "IBM ULT3582-TL 310B"
Vendor ID : "IBM "
Product ID : "ULT3582-TL "
Product Rev: "310B"
Serial Number: "0000013016521000"
WWN : ""
WWN Id Type : 0
Device Identifier: "IBM ULT3582-TL 0000013016521000"
Device Type : SDT_CHANGER
NetBackup Robot Type: Not Found(6)
Removable : Yes
Device Supports: SCSI-2
Number of Drives : 1
Number of Slots : 22
Number of Media Access Ports: 1
Flags : 0x0
Reason: 0x0
[root@linux02 bin]# ./tpconfig -l
EMM interface initialization failed, status = 92
[root@linux02 bin]# ./tpconfig -l
Device Robot Drive Robot Drive Device Second
Type Num Index Type DrNum Status Comment Name Path Device Path
[root@linux02 bin]# ./tpautoconf -t
TPAC60 IBM ULT3580-TD3 73P5 1210109511 -1 -1 -1 -1 /dev/nst0 - -
[root@linux02 bin]# ./tpautoconf -r
TPAC60 IBM ULT3582-TL 310B 0000013016521000 -1 -1 -1 -1 /dev/sg2 - -
[root@linux02 bin]# ./vmoprcmd
HOST STATUS
Host Name Version Host Status
========================================= ======= ===========
tsmserve 656000 ACTIVE
p520 656000 ACTIVE-DISK
linux02 650000 ACTIVE
PENDING REQUESTS
DRIVE STATUS
Drive Name Label Ready RecMID ExtMID Wr.Enbl. Type
Host DrivePath Status
=============================================================================
IBM.ULT3580-TD3.000 No No No hcart3
tsmserve {2,1,0,0} SCAN-TLD
linux02 /dev/nst0 TLD
[root@linux02 bin]# ./tpautoconf -r
TPAC60 IBM ULT3582-TL 310B 0000013016521000 -1 -1 -1 -1 /dev/sg2 - -
[root@linux02 bin]# ./tpconfig -l
Device Robot Drive Robot Drive Device Second
Type Num Index Type DrNum Status Comment Name Path Device Path
robot 0 - TLD - - - - tsmserve
drive - 0 hcart3 1 UP - IBM.ULT3580-TD3.000 /dev/nst0
[root@linux02 bin]# ./tpconfig -d
Id DriveName Type Residence
Drive Path Status
****************************************************************************
0 IBM.ULT3580-TD3.000 hcart3 TLD(0) DRIVE=1
/dev/nst0 UP
Currently defined robotics are:
TLD(0) robot control host = tsmserve
EMM Server = tsmserve
六、安装DB2
[db2inst1@ibmdb2 ~]$ db2level -l
DB21085I Instance "db2inst1" uses "32" bits and DB2 code release "SQL09056"
with level identifier "06070107".
Informational tokens are "DB2 v9.5.0.6", "s100918", "IP23208", and Fix Pack "6a".
Product is installed at "/opt/ibm/db2/V9.5".
下面我们来创建一个示例表test1
db2 => connect to test1
Database Connection Information
Database server = DB2/LINUX 9.5.6
SQL authorization ID = DB2INST1
Local database alias = TEST1
db2 => create table test1(id int,name varchar(10), note varchar(50))
DB20000I The SQL command completed successfully.
db2 => insert into test1 values (1,'wang','the first rows')
DB20000I The SQL command completed successfully.
db2 => insert into test1 values (2,'ding','the second rows')
DB20000I The SQL command completed successfully.
db2 => select * from test1
ID NAME NOTE
----------- ---------- --------------------------------------------------
1 wang the first rows
2 ding the second rows
2 record(s) selected.
七、配置DB2链接Netbackup。
1、# cd /usr/openv/netbackup/bin
2、运行db2_config:
./db2_config
则输入 n,至此链接完成。 Please specify the DB2 instance home path name:
/home/db2inst1 Do you have other DB2 instances? (y/n) [n]
n
Linking /home/db2inst1/sqllib/adm/db2uext2 to /usr/openv/netbackup/bin/db2uext2.
Copying /usr/openv/netbackup/ext/db_ext/db2/scripts/db2.conf to /home/db2inst1/db2.conf.
八、准备db2备份脚本
复制/usr/openv/netbackup/ext/db_ext/db2/scripts/db2_backup到数据库主目录(/home/db2inst1),
并用chmod命令将文件属性改为775,使用chown命令将文件所属组改为db2inst1。
更改相关参数:
MY_LIB=/usr/openv/netbackup/bin/nbdb2.so
MY_DB2=test1
CMD_LINE="db2 BACKUP DATABASE $MY_DB2 online $MY_SCHED LOAD $MY_LIB OPEN 4 SESSIONS BUFFER 1024"
MY_USER=db2inst1
九、创建db2备份策略
1、创建名为DB2_BACKUP策略(不使用向导):
2、在 “日程表(Schedules)”选项卡上,
将默认的 “应用程序备份 (Default-Application-Backup)”修改为“应用程序备份(Default-Application-Data)”日程表 不需要改
(此日程表必须包括其间 DB2 可以调用用户出口程序的 “所有”时间段),
并且新建一个名称为DB2_FULL的策略。
3、在 “客户机(Clients)”选项卡上,添加要备份的客户机;
4、在 “备份选择(Backup Selections)”选项卡中添加需要备份的归档日志路径(/home/db2inst1/db2_backup):
十、设置数据库归档
配置DB2进入归档日志模式主要是靠Logarchmeth1和Logarchmeth2两个参数(注:Logretain参数在DB2 V8以上版本已经被Logarchmeth1取代)
Logarchmeth1和Logarchmeth2配置可能有如下几种组合
1、Logarchmeth1设置为LOGRETAIN,Logarchmeth2只能设置为OFF
归档日志位置就是DB2数据库日志的位置,需要人工干预归档日志的转移和空间维护工作
2、Logarchmeth1设置为USEREXIT,Logarchmeth2只能设置为OFF
归档日志的管理交由USEREXIT来处理,通过设置编译USEREXIT可以实现相对复杂一些的归档管理方式
3、Logarchmeth1设置为
归档日志的工作将会自动进行,需要归档日志将会被自动归档到
4、Logarchmeth1设置为
归档日志的工作将会自动进行,需要归档日志将会被自动归档到
备注:
1)、
2)、设置Logarchmeth1和Logarchmeth2后,数据库会进入backup pending状态,必须进行一次脱机备份,数据才会进入recovery模式并且正常工作。
5、开启归档模式(采用USEREXIT)
用了用户出口之后,就允许前滚恢复。当启用了USEREXIT配置参数时,会调用用户出口来归档日志文件,并将它们移到活动日志路径以外的位置。
1)、设置参数userexit、logretain等参数
$ db2 update db cfg for test1 using userexit on
$ db2 update db cfg for test1 using logretain on
$ db2 update db cfg for test1 using trackmod on // 打开增量备份
$ db2 update db cfg for test1 using newlogpath /home/db2inst1/archlog //设置归档日志文件存放路径
$ db2 update db cfg for test1 using logfilsiz 25600
注:Logfilsiz 为日志文件大小,算法为 4KB * logfilsiz,此处指定25600计算出来为100MB;
该参数确定了每个已配置日志的页数量。
一页的大小是 4 KB。每个主日志的大小(页数量)对数据库性能有直接影响。
当将数据库配置成保留日志,每当写满一个日志时,就会发出一个分配和初始化一个新日志的请求。增加日志大小会减少为分配和初始化新日志所需的请求数量。日志大小越大,格式化每个新日志所花费的时间就越多。格式化新日志对于连接到数据库的应用程序是透明的,而且也不会影响数据库性能。请根据需要进行修改。
2)、停止应用使所有更改参数生效
$ db2 force application all
db2stop
db2start
3)、做离线备份,否则数据是backup pending状态的,无法联结
$ db2 backup db test1 to /home/db2inst1/backup
4)、再次查看当前的数据库状态
$ db2 get db cfg
十一、设置db2归档日志备份策略
采用用户出口程序ARCFUNC COPY方式备份 (测试ok)。
1、创建名为DB2LOG_ARC1策略
1)、策略类型选择 “MS-Windows-NT”(Windows平台) 或 “Standard”(非Windows平台):
2)、在 “日程表(Schedules)”选项卡上,创建一个 “用户归档 (USER_ARCHIVE)”
日程表(此日程表必须包括其间 DB2 可以调用用户出口程序的 “所有”时间段):
3)、在 “客户机(Clients)”选项卡上,添加要备份的客户机;
4)、在 “备份选择(Backup Selections)”选项卡中添加需要备份的归档日志路径:/home/db2inst1/archlog/TEST1/NODE0000
2、创建名为DB2LOG_ARC_START策略
1)、策略类型选择DB2:
2)、在 “日程表(Schedules)”选项卡上,创建一个 “自动完全备份 (DB2LOG_FULL)”日程表(日程表指定需要定时运行的时间段):
3)、在 “客户机(Clients)”选项卡上,添加要备份的客户机;
4)、在 “备份选择(Backup Selections)”选项卡中添加备份脚本(例如:/home/db2inst1/db2_archivelog_startbackup.sh):
db2_archivelog_startbackup.sh脚本内容如下:
---------------------------------------------------------------------
#!/bin/sh
# $Header: db2_archivelog_startbackup.sh,V1.0 2010/06/06 by reny $
/usr/openv/netbackup/bin/bparchive -p DB2LOG_ARC1 -s USER_ARCHIVE -t 0 /home/db2inst1/archlog/TEST1/NODE0000
---------------------------------------------------------------------
注:此策略(DB2LOG_ARC_START)只是为了调用并发起DB2LOG_ARC备份策略(采用用户归档,只能通过调用发起备份)。
[db2inst1@linux02 ~]$ more db2_archivelog_startbackup.sh
---------------------------------------------------------------------
#!/bin/sh
# $Header: db2_archivelog_startbackup.sh,V1.0 2010/06/06 by reny $
/usr/openv/netbackup/bin/bparchive -p DB2LOG_ARC -s USER_ARCHIVE -t 0 /home/db2inst1/archlog/TEST1/NODE0000
---------------------------------------------------------------------
[db2inst1@linux02 ~]$ /usr/openv/netbackup/bin/bparchive
Specify either a listfile or a list of files on the command line.
USAGE: bparchive [-p policy] [-s schedule] [-k "keyword phrase"]
[-L progress_log [-en]] [-S master_server...]
[-t policy_type] [-w [hh:mm:ss]]
-f listfile | filenames
EXIT STATUS 144: invalid command usage
3、修改db2.conf文件,记得更改权限
修改DB2 HOME (/home/db2inst1)目录下db2.conf文件,如此文件不存在,请从/usr/openv/netbackup/ext/db_ext/db2/scripts中拷贝此文件到DB2 HOME目录下。
修改后内容如下:
-------------------------------------------------------------------------------
# $Header: db2.conf,v 1.5 2007/04/12 14:05:29 $
#
# ***************************************************************************
# * $Copyright: Copyright 1993 - 2007 Symantec Corporation, All Rights Reserved $ *
# ***************************************************************************
#
# The following settings are used by NetBackup to backup/restore a DB2 database.
#
# Reminders:
# 1) The specified policy must have a type of "DB2".
# 2) The specified schedule must be defined for this policy.
# 3) The DB2 database host must be entered as a client for this policy.
#
DATABASE test1 //修改
OBJECTTYPE DATABASE
POLICY DB2_BACKUP //修改
SCHEDULE Default-Application-Backup
ENDOPER
DATABASE test1 //修改
OBJECTTYPE ARCHIVE
POLICY DB2LOG_ARCH1
SCHEDULE User
#ARCFUNC SAVE
ARCFUNC COPY //修改
ARCDIR /home/db2inst1/archlog //修改
RETDIR /home/db2inst1/archlog //修改
ENDOPER
4、进行备份测试
1)、手动在MasterServer端发起数据库备份(DB2_BACKUP),验证数据是否可成功完成备份;
2)、在DB2客户端手动切换归档日志(或者往某个表中连续插入多条记录使其自动产生归档),
查看生成的归档日志文件是否已拷贝到ARCDIR(/home/db2inst1/arclog/TESTDB/NODE0000)目录下;
3)、手动在MasterServer端发起备份(DB2LOG_ARC_START),
验证是否会自动调用DB2LOG_ARC备份策略备份ARCDIR(/home/db2inst1/arclog/TESTDB/NODE0000)目录下文件,并且备份成功完成后会对其进行删除操作。
备:DB2切换日志:$ db2 archive log for db test1
-------------------------------------------------------------------------------
十二、设置db2归档日志备份策略
采用用户出口程序ARCFUNC SAVE方式备份(结果ok)
1、创建名为DB2LOG_ARC策略
1)、策略类型选择 “MS-Windows-NT”(Windows平台) 或 “Standard”(非Windows平台):去掉collect选项。
2)、在 “日程表(Schedules)”选项卡上,创建一个 “用户备份 (USER_BACKUP)”
日程表(此日程表必须包括其间 DB2 可以调用用户出口程序的 “所有”时间段):
3)、在 “客户机(Clients)”选项卡上,添加要备份的客户机;
4)、不需要任何 “备份选择(Backup Selections)”列表(为空)。
2、修改db2.conf文件
修改DB2 HOME (/home/db2inst1)目录下db2.conf文件,如此文件不存在,请从/usr/openv/netbackup/ext/db_ext/db2/scripts中拷贝此文件到DB2 HOME目录下。
内容为:
修改后内容如下:
-------------------------------------------------------------------------------
# $Header: db2.conf,v 1.5 2007/04/12 14:05:29 $
#
# ***************************************************************************
# * $Copyright: Copyright 1993 - 2007 Symantec Corporation, All Rights Reserved $ *
# ***************************************************************************
#
# The following settings are used by NetBackup to backup/restore a DB2 database.
#
# Reminders:
# 1) The specified policy must have a type of "DB2".
# 2) The specified schedule must be defined for this policy.
# 3) The DB2 database host must be entered as a client for this policy.
#
DATABASE test1 //修改
OBJECTTYPE DATABASE
POLICY DB2_BACKUP //修改
SCHEDULE Default-Application-Backup
ENDOPER
#
# The following settings are used by NetBackup to backup/restore DB2 log files.
#
DATABASE test1 //修改
OBJECTTYPE ARCHIVE
POLICY DB2LOG_ARC //修改
SCHEDULE User
ARCFUNC SAVE
ENDOPER
-------------------------
3、进行备份测试
1)、手动在MasterServer端发起数据库备份(DB2_BACKUP),验证数据是否可成功完成备份;
2)、在DB2客户端手动切换归档日志(或者往某个表中连续插入多条记录使其自动产生归档),查看NBU MasterServer活动监视器中是否有归档日志备份作业发起。
备:DB2切换日志:$ db2 archive log for db test1
C:\Documents and Settings\Administrator>bplist -C linux02 -S tsmserve -t 18 -R /
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.4
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.3
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.2
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.1
十三、DB2备份方法比较及总结
1、采用VENDOR方式备份
使用LOGARCHMETH1 = "VENDOR:..." 参数,DB2 版本必须为 8.2 或以上,
如果使用NBU直接写入磁带,必须保证随时有空闲驱动器;如果每天归档日志非常多会导致频繁发起备份作业。恢复时可以直接作rollforward操作,无须将日志导入磁盘。
2、采用DISK方式备份
使用LOGARCHMETH1 = "DISK:..." 参数,DB2 版本必须为 8.2 或以上,首先将日志归档到磁盘,再通过NBU以文件形式备份到指定介质,使用此方法必须保证有相应的磁盘空间存放归档日志。
恢复时须先将日志恢复到客户机再作rollforward操作。
3、采用用户出口程序ARCFUNC SAVE方式备份
ARCFUNC SAVE方式为日志产生自动备份,对于归档日志生成后先存放于DB2客户机目录中(必须有相应的空间),当下一日志产生时前一个日志将自动通过NBU备份到指定介质。恢复时可以直接作rollforward操作,无须将日志导入磁盘。
4、采用用户出口程序ARCFUNC COPY方式备份
对于日志备份当日志产生时自动COPY到指定目录,所以必须有空间存放,然后再通过NBU以文件方式备份。恢复时须先将日志恢复到客户机再作rollforward操作。
5、归档日志备份方式总结
如果DB2版本为8.2或以上版本,建议采用更改LOGARCHMETH1参数的方式备份。
如果数据库操作频繁,每天归档日志数较多,建议采用先备份到本机磁盘再定时以文件形式备份到指定介质;
如果每天生成归档日志文件较少,建议采用直接通过NBU备份到指定介质,这样可以最大保证数据的安全性(数据丢失量最少)。
同样道理,如果DB2版本低于8.2,每天归档日志较多建议采用ARCFUNC SAVE,归档日志较少采用ARCFUNC COPY。
十四、恢复:
C:\Documents and Settings\Administrator>bplist -C linux02 -S tsmserve -t 18 -R /
DB2:\TEST1\node0000\20070803103429\TEST1.0.db2inst1.node0000.0.20070803103429.4
DB2:\TEST1\node0000\20070803103429\TEST1.0.db2inst1.node0000.0.20070803103429.3
DB2:\TEST1\node0000\20070803103429\TEST1.0.db2inst1.node0000.0.20070803103429.2
DB2:\TEST1\node0000\20070803103429\TEST1.0.db2inst1.node0000.0.20070803103429.1
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.4
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.3
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.2
DB2:\TEST1\node0000\20070803094228\TEST1.0.db2inst1.node0000.0.20070803094228.1
db2 restore db test1 load /usr/openv/netbackup/bin/nbdb2.so options @/home/db2inst1/db2_backup taken at 20070803103429 @/home/db2inst1/db2_backup
db2 restore db test1 load /usr/openv/netbackup/bin/nbdb2.so options @/home/db2inst1/db2_backup at 20070803103429 logtarget /home/db2inst1/archlog