本文适用于 DB2、TSM管理员以及任何想了解使用TSM来存储保护DB2数据库的读者。
Tivoli Storage Manager 是一个企业级的存储管理软件。他提供了对文件系统、应用程序等的存储备份和恢复功能。本文主要介绍了 TSM 是如何对 DB2 数据库应用程序实现存储备份的。并重点介绍了 TSM 和DB2 在 WINDOWS 平台下的安装、配置、备份和还原。
TSM (Tivoli storage management) 提供了强大的存储备份功能,可以与 DB2 V9 版本进行无缝的集成,从而实现 DB2 数据库的备份。本文主要介绍如何安装、配置这两大产品,并以 WINDOWS 平台的集成为例,对其步骤作一个简要说明。
简介
TSM(Tivoli storage management) 是一个全面、智能的存储管理解决方案,专门被设计用来满足您不断增长的企业存储需求,使全面的存储管理功能自动化。通过 Tivoli TSM 灵活的策略管理功能,您可以定制数据备份和存档,规定哪些数据需要备份或存档、存储在哪里以及保存多长时间。强大的 Tivoli TSM 调度特性消除了人工备份和跟踪的需求,促进了存储操作向非高峰时间的调度,从而优化了网络资源和性能。
TSM 提供了强大的存储备份功能。可以与 DB2 V9 版本进行无缝的集成,从而实现通过 TSM 备份 DB2 的数据库。本文主要介绍如何安装、配置这两大产品,并以 WINDOWS 平台的集成为例,对其步骤作一个简要说明。
安装
1.1 操作系统:
Windows 2003 enterPRise server edition
1.2 软件:
在此系统上安装的软件及其版本分别为:
TSM V5.5.0 for windows
安装 TSM 5.5 backup archive client for window
安装 TSM 5.5 license for windows
安装 TSM 5.5 server for windows: 这是可选的,TSM server 可以安装在其他的机器上 http://www.knowsky.com/
DB2 V9.1.3 for windows
对TSM server 进行配置
安装好软件后,需要分别对 TSM server 进行配置。
使用 TSM 对 DB2 进行备份,必须对 DB2 备份数据的保存策略以及保存位置进行定义。因此,需要在 TSM server 上,对以下几项进行配置和定义。
定义设备类 (device class)
需要根据备份数据库的大小和备份、还原频率来选择某一种类型的设备类来存储 DB2 的备份数据库。TSM server 使用 define devclass 来完成此功能。
这里使用 FILE 类型的设备类来模拟磁带存储 DB2 备份数据。具体的命令如下:
Define devclass filedevclass devtype=file directory=d:\tsmfiledata\db2backup
如果运行成功,则返回如下结果:
ANR2203I Device class FILEDEVCLASS defined.
该命令定义了一个新的设备类:filedevclass,它的目录指向 d:\tsmfiledata\db2backup。
定义存储池 (storage pool) 和存储卷 (volume)
存储池是一个逻辑概念,它表示了备份 / 归档数据的实际存储设备,每一个存储池都对应了一个特定的设备类。TSM server 使用 define stgpool 来完成此功能。
下面定义一个存储池用来表示 DB2 备份数据的实际存储位置。具体的命令如下:
Define stgpool db2filepool filedevclass maxscratch=100
如果运行成功,则返回如下结果:
ANR2200I Storage pool DB2FILEPOOL defined(device class FILEDEVCLASS)
他定义了一个新的存储池 db2filepool,并关联了之前定义的设备类 filedevclass.
对于存储池,如果 maxscratch>0, 则表示可以使用 scratch 类型的存储卷,不需要特别定义。当然也可以使用自己定义的存储卷,使用的命令是 define volume。具体示例如下:
Define volume db2filepool d:\tsmfiledata\db2backup\volm1 format=100
如果运行成功,则返回如下结果:
ANR2491I Volume Creation Process starting for D:\TSMFILEDATA\DB2BACKUP\VOLM1
上述命令在 db2filepool 中定义了一个大小为 100M 的存储卷 , 位置是:D:\tsmfiledata\db2backup\volm1。
定义节点
为了让 DB2 通过 TSM client API 备份数据,必须在 TSM server 上为其注册一个节点,设置它的节点名及密码。相关的命令为 register node。具体示例如下:
register node db2 passWord
在这里,db2 为新注册的节点,默认注册到 STANDARD 的策略域上。
定义策略
在 TSM server 中,需要为 DB2 使用的节点定义其存储策略。
定义策略域 (policy domain):
TSM server 使用 define domain 命令来定义策略域,具体示例如下:
Define domain db2domain description=”policy domain for db2 backup”
如果运行成功,则返回如下结果:
ANR1500I Policy domain DB2DOMAIN defined
该命令定义了一个名为 db2domain 的策略域。
定义策略集 (policy set):
TSM server 使用 define policyset 命令来定义策略域,具体示例如下:
Define policyset db2domain db2policyset description=”policy set for db2”
如果运行成功,则返回如下结果:
ANR1510I Policy set DB2POLICYSET defined in policy domain DB2DOMAIN
该命令定义了一个名为 db2policyset 的策略集,它是属于 db2domain 这个策略域中的。
定义管理类 (management class):
TSM server 使用 define mgmtclass 命令来定义策略域,具体示例如下:
Define mgmtclass db2domain db2policyset db2mgmtclass
description=”management class for db2”
如果运行成功,则返回如下结果:
ANR1510I Management class DB2MGMTCLASS defined in
policy domain DB2DOMAIN, set DB2POLICYSET.
上述命令定义了管理类 db2mgmtclass, 它属于策略集 db2policyset, 策略域 db2domain。
把定义的管理类作为该策略集中的默认管理类。
TSM server 使用 assign defmgmtclass 命令把设置某个策略集中的默认管理类。具体示例如下:
Assign defmgmtclass db2domain db2policyset db2mgmtclass
如果运行成功,则返回如下结果:
ANR1538I Default management class set to DB2MGMTCLASS
for policy domain DB2DOMAIN, set DB2POLICYSET.
该命令把之前定义的管理类 db2mgmtclass 设置成策略集 db2policyset 的默认管理类。
定义拷贝组 (copy group)
分别为备份数据和归档数据定义 copy group
定义拷贝组的命令是 define copygroup,根据参数 type 的设置,可以分别定义 backup copy group 和 archive copy group。具体的命令如下:
定义备份拷贝组:
Define copygroup db2domain db2policyset db2mgmtclass dest=db2filepool
如果运行成功,则返回如下结果:
ANR1530I Backup copy group STANDARD defined in policy domain DB2DOMAIN,
set DB2POLICYSET, management class DB2MGMTCLASS.
定义归档拷贝组:
Define copygroup db2domain db2policyset db2mgmtclass
type=archive dest=db2archivepool
如果运行成功,则返回如下结果:
ANR1535I Archive copy group STANDARD defined in policyset
domain DB2DOMAIN,set DB2POILCYSET, management class DB2MGMTCLASS.
这两个命令在 db2mgmtclass 中分别定义了 backup copy group 和 archive copy group, 并指明 backup 和 archive 的数据分别存储在 db2filepool 和 db2archivepool 两个存储池中。其中 db2archivepool 存储池的定义与 db2filepool 的定义是类似的,这里就不再介绍。
验证并激活策略集
TSM server 使用 validate policyset 以及 active policyset 命令来验证并激活策略集。只有激活以后的策略集,才会在后面的备份中使用到。具体的命令示例如下:
验证策略集:
Validate policyset db2domain db2policyset
如果运行成功,则返回如下结果:
ANR1515I Policy set DB2POLICYSET validated in domain DB2DOMAIN(ready for activation)
激活策略集:
Activate policyset db2domain db2policyset
该命令会询问客户是否确认执行,确认后,如果运行成功,则返回如下结果:
ANR1514I Policy set DB2POLICYSET activated in policy domain DB2DOMAIN
上述俩命令验证并激活了策略域 db2domain 中的策略集 db2policyset.
更新TSM节点信息
需要更新节点信息,把 TSM 节点指定到为其定义的策略域中。TSM server 使用 update node 来实现该功能。具体命令如下:
Update node db2 domain=db2domain archdelete=yes backdelete=yes
如果运行成功,则返回如下结果:
ANR2063I Node DB2 updated.
该命令把节点 db2 关联到了策略域 db2domain 上,并修改了节点参数 archdelete 和 backdelete 的设置。
到这里,TSM server 端的配置就完成了。关于这些 tsm server 命令的详细介绍,可参考《IBM Tivoli Storage Manager for AIX Administrator's Reference》。
设置环境变量
在安装完 TSM backup-archive 客户端后,它会自动安装相应的 TSM client API,之后需要在系统环境变量中定义三个环境变量。分别是:DSMI_CONFIG, DSMI_DIR 和 DSMI_LOG。之后的 DB2 备份中,将会使用这三个变量。
DSMI_CONFIG
这个环境变量设置了 TSM client API option file 的位置。如果安装了 TSM backup-archive 客户端,则它在 WINDOWS 平台下的默认值为‘C:\Program Files\Tivoli\TSM\baclient\dsm.opt’。如果把它安装到了其他位置,则将该环境变量设置成相应的值。如果该目录下没有 dsm.opt 文件,可以自己生成一个。关于如何配置该文件可参考《IBM Tivoli Storage Manager for Windows Backup-Archive Clients Installation and User's Guide》。
DSMI_DIR
这个环境变量设置了 TSM client API 的安装路径。在 WINDOWS 平台下,默认的安装路径为:‘C:\Program Files\Common Files\Tivoli\TSM\api’。
需要注意的是,TSM V5.5 之前的默认位置是‘C:\Program Files\Tivoli\TSM\api’。新版本发生了一些变化。
DSMI_LOG
该环境变量设置了 TSM client API 的错误日志 dsierror.log 所在的目录位置。如果安装了 TSM backup-archive 客户端,则它在 WINDOWS 平台下的默认值为:‘C:\Program Files\Tivoli\TSM\baclient’。如果没有,生成一个即可。
对 TSM client 进行配置
配置完 TSM server 后,需要对 TSM client API 进行配置。Windows 主要配置的是 dsm.opt 文件。也就是 DSMI_CONFIG 中所指向的文件。在这个文件中,需要指明 TSM client 与 TSM server 的通讯方式,TSM client 所使用的 TSM 节点名,以及密码的访问模式。下面,如图 1 所示给出一个 dsm.opt 的文件示例。可以用文本编辑器对其进行编辑:
图 1. dsm.opt 的文件示例
生成 TSM 节点的加密密码
在前面的配置都完成后,需要调用 dsmapipw.exe 可执行文件,默认安装 DB2 的安装目录“c:\program files\ibm\sqllib\adsm\”下,对之前设置的 TSM 节点密码进行加密。这个加密的密码将会被保存在 windows 的注册表中。
运行 dsmapipw.exe 的时候,将会要求输入当前的节点密码,新密码,并且对新密码进行确认,如图 2 所示。
图 2. 设置的 TSM 节点密码
除了可以通过密码来进行安全保护外,TSM V5.5 版本还提供了一种叫做 Secure Socket Layer(SSL) 的数据保护机制。通过配置使用 SSL, 可以在 client 和 server 之间提供一条安全的通信通道,提高用户备份数据的安全性。具体的 SSL 配置说明,可参考《IBM Tivoli Storage Manager for Windows Administrator's Guide》。
对DB2进行设置
对于每一个需要备份的 DB2 数据库,它都有四个与 TSM 有关的参数需要设置,分别是:TSM_MGMTCLASS, TSM_NODENAME, TSM_PASSWORD, TSM_OWNER。
TSM_MGMTCLASS
这个参数值表示的是该数据库将会绑定到哪一个管理类中。如果该参数设置了,那它的优先级将高于默认的管理类和 include-exclude list 中的设置。相应的 DB2 命令为 update db cfg。具体的命令示例如下:
Update db cfg for sample using tsm_mgmtclass db2mgmtclass
如果运行成功,则返回如下结果:
DB20000I The UPDATE DATABASE CONFIGURATION command completed succesfully
该命令把 sample 数据库的配置参数 TSM_MGMTCLASS 的值设置成了之前定义的管理类 db2mgmtclass。
当然,该功能也可以通过 DB2 GUI 来实现。
TSM_NODENAME
该参数值表示了 DB2 数据库备份时使用的节点名。
如果在 dsm.opt 中设定 Passwordaccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置为前面定义的节点名
TSM_PASSWORD
该参数值表示了 DB2 数据库备份时使用的节点的密码。
如果在 dsm.opt 中设定 PasswordAccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置为前面定义的节点密码
TSM_OWNER
该参数表示了备份对象的 owner. 这个参数是针对 UNIX 操作系统的,对于 WINDOW 平台,不需要设置。在 UNIX 平台下,
如果在 dsm.opt 中设定 PasswordAccess=generate,则该参数需要设为空值
如果在 dsm.opt 中设定 PasswordAccess=prompt,则该参数需要设置
进行数据库备份操作
到这里为止,所有的配置都已经完成。现在就可以使用 TSM 来备份 DB2 了。
DB2 的备份操作可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例进行说明。在 DB2 中的相关命令为 backup db。具体的命令示例如下:
Backup db sample use tsm.
如果运行成功,则返回如下结果:
Backup successful. The timestamp for the backup image is: 20071127163936
该命令用 TSM 对数据库 sample 进行了一次全备份。这次备份的时间戳为 20071127163936。
在 TSM server 上,可以使用命令 query volume 以及 query content 对备份数据所在的存储卷进行查询,从而可以得到存储的内容。具体示例如下:
Query volume volm1
该命令可以获得存储池 db2filepool 中存储卷 volm1 的信息。
Query content volm1
该命令可以获得存储卷 volm1 中的所有备份文件的信息。
这些命令的运行结果如图 3 所示:
图3. 数据库备份运行结果
从中可以看到,sample 数据库作为一个文件保存在 TSM 的存储卷中。
进行数据库还原操作
和数据库的备份一样,数据库的还原操作也可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例进行说明。它使用的命令是 restore db。具体的命令示例如下:
Restore db sample use tsm taken at 20071127163936
在这里,sample 数据库使用时间戳为 20071127163936 的数据库备份来进行数据库还原。该命令的运行结果如下图 4 所示:
图4. 数据库还原命令的运行结果
进行数据库表空间的备份操作
TSM 除了支持对 DB2 数据库级别的备份之外,还支持表空间级别的备份操作。它同样可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例。它使用到的命令是 backup database DBNAME tablespace(SPACENAME) online use tsm。具体的命令示例如下:
Backup database sample tablespace(userspace2) online use tsm
如果运行成功,返回如下结果:
Backup successful. The timestamp for this backup image is: 20080514003631
在这里,TSM 对 sample 数据库中的表空间 userspace2 做了一次全备份,时间戳为 20080514003631。
进行数据库表空间的还原操作
数据库表空间的还原操作也可以通过 DB2 Command line interface(CLI) 以及 Graphical user interface(GUI) 来实现。下面,就以 Command line interface 为例。它使用到的命令是 restore database DBNAME tablespace(SPACENAME) online use tsm。具体的命令示例如下:
restore database sample tablespace(userspace2) online use tsm taken at 20080514003631.
如果运行成功,返回如下结果:
DB20000I The RESTORE DATABASE command completed successfully.
在这里,sample 数据库的表空间 userspace2 使用时间戳为 20080514003631 的备份来进行表空间还原。
TSM 软件把备份的数据保存在各种类型的存储卷中。对于 V5.5 之前的版本,TSM 只允许对 FILE 类型的存储卷进行互斥的访问,而 V5.5 增加了对于 FILE 类型存储卷的并发读写操作。也就是说,在同一时刻,可以允许以下行为的并发:
1.多个 client 对同一个 FILE 类型的存储卷进行并发的读操作。
2.一个 client 对 FILE 类型的存储卷进行写操作,而其他的用户可以同时对该卷进行读操作。
因此,在使用 TSM V5.5 来备份 DB2 数据库 / 表空间的时候,如果采用的是 FILE 类型的存储卷保存备份数据(如本文中的示例),则可以进行以下的并发行为:
1.多个 client 同时对保存在同一个存储卷中的备份数据库 / 表空间进行还原操作。
2.一个 client 在备份 DB2 数据的同时,可以允许其他 client 对该存储卷中的其他备份数据进行还原操作。
TSM V5.5 的这项新功能通过对 FILE 类型存储卷的并发支持,可以比较好的提高客户在还原数据库时的性能。