IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope: Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  Lotus  >

保护 Lotus Domino 关键数据,第 2 部分: 保护 Domino DB2 数据库

使用 Tivoli Data Protection for Domino 保证 Domino DB2 数据库安全

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

于 晶, 软件工程师, IBM
王 伟, 软件工程师, IBM
张 晓文, 软件工程师, IBM

2009 年 8 月 28 日

Lotus Domino 7 或更高版本引入了使用 DB2 作为数据存储的功能。该功能允许使用 DB2 作为 Domino 数据库,访问和查看以两种格式存储的数据。本文将对 TDP for Domino 支持 Domino DB2 类型的数据库的备份与恢复以及相关配置操作进行详细介绍并辅以实战例程。

相关介绍

IBM Tivoli Data Protection for Domino(简称 TDP for Domino)是用来备份和恢复 Lotus Domino 数据库和事务日志的 IBM 应用软件。备份数据库和存档事务日志都存储在 Tivoli Storage Manager(简称 TSM) 存储库中。“典型”的 Domino 数据库指的是 NSF 数据库。Lotus Domino 7 或更高版本引入了 Domino DB2 数据库。Domino DB2 数据库是存储在 DB2 数据库中、由 DB2 服务器管理的另一种 Domino 数据库。

使用 TDP for Domino, 当 Domino DB2 数据库发生损坏或者由于误操作导致数据遭到破坏时,能很快的将数据从备份中恢复回来,从而将损失降到最低,并最大程度的减少应用的宕机时间。

TDP for Domino 对 Domino DB2 数据库的保护主要包括:

  1. 备份整体 Domino DB2 数据库或者单独的 Domino DB2 组。
  2. 恢复备份到另一个的数据库。
  3. 灾难备份情况下,可以恢复备份到初始的 Domino DB2 数据库。

TDP for Domino 保护 Domino DB2 数据库与 Domino NSF 数据库有一点重要的不同。NSF 数据库是直接备份的,Domino DB2 数据库是作为 Domino DB2 组间接备份的。Domino DB2 组是一个或多个启用 DB2 功能的 Domino 数据库。备份和恢复启用 DB2 的 Domino 数据只能以组为单位。Domino DB2 数据库在 Domino 数据库中对应一个普通的文件,这个文件就是一个链接文件,实际指向存储在 DB2 数据库中的 Domino DB2 数据库。TDP for Domino 不会对该链接文件进行备份。


图 1. DB2 数据库与 NSF 数据库备份区别示意图
图 1. DB2 数据库与 NSF 数据库备份区别示意图




回页首


工作原理

TDP for Domino 通过 notes API 与 Domino 服务器进行通信;通过 DB2 Recovery API 与 DB2 TSM 代理通信;通过 TSM API 与 TSM 服务器进行通信。必须保证这几个通信的畅通才能使用 TDP for Domino 保护 DOMINO DB2 类型的数据库。


图 2. 工作原理图
图 2. 工作原理图

DB2 TSM 代理

DB2 提供了 TSM 代理和实用程序 (db2adutl) 来与 DB2 Recovery API 进行交互,从而管理 TSM 在 DB2 服务器上创建的对象。TDP for Domino 使用 DB2 TSM 代理来备份和恢复 Domino DB2 数据库和 DB2 组。TSM 为每个会话创建的与 DB2 备份关联的 TSM 对象是唯一的。db2adutl 程序可以使这些对象失效。

DB2 Recovery API

TDP for Domino 使用 DB2 Recovery API 与 DB2 TSM 代理通信,从而备份数据到 TSM 服务器。注意配置 DB2 TSM 代理与 TDP for Domino 使用相同的 TSM 节点名连接到 TSM 服务器上。这样做的目的是使 DB2 Recovery API 创建的 TSM 对象与 TDP for Domino 为 NSF 数据库创建的的对象属于同一个 TSM 节点。





回页首


配置 Domino DB2 数据库

Domino 查询大数据量或存在大量视图索引的数据库需要花费大量的时间。把这些应用交给 DB2 会减轻 Domino 服务器的负载。使用 DB2 作为 Domino 数据服务器,安装 DB2 企业服务器过程中大部分使用默认设置即可,但有一点不同需要额外注意:安装时选择“Prepare the DB2 tools catalog”,“ Enable operating system security for DB2 objects”选项,而不要选择“automatically launch the install for IBM Database add-ins”选项。

下面介绍配置 DB2 数据库作为 Domino 数据服务器。

第一步,在 DB2 服务器上创建 Domino 用户账户。

Domino 用操作系统账户与 DB2 进行通讯,所以必须为 Domino 创建或关联一个操作系统用户。

  1. 创建 Domino 服务器操作系统用户帐户,用来与连接 DB2。(例如:DominoDB2User)。
  2. 创建一个新的操作系统组 DB2DOM。
  3. 在 DB2DOM 组中添加下面的名字:
    db2admin
    administrator
    			

    Domino 服务器操作系统用户帐户(例如 DominoDB2User)。

第二步,赋予 DB2 权限给 DB2DOM 组

  1. 赋予 DB2 系统控制权限给 DB2DOM 组。
    update dbm cfg using SYSCTRL_GROUP DB2DOM

  2. 赋予 DB2 系统管理员权限给 DB2DOM 组。
    update dbm cfg using SYSADM_GROUP DB2DOM

  3. 重新启动 DB2 数据库。

第三步, Domino 服务器赋予 DB2 访问权限

  1. 在 DB2 安装目录下创建子目录 DOMINODB2。例如 C:\IBM\SQLLIB\DOMINODB2.
  2. 使用 Domino 管理员客户端 Enable Server for DB2。如图 3 所示 :

    图 3. ENABLE Domino for DB2
    图 3. ENABLE Domino for DB2



    图 4. 进行相关配置
    图 4. 进行相关配置

  3. 重启 Domino 服务器确保没有没有错误信息。
  4. 赋予 SETSESSIONUSER 权限给 Domino 服务器的用户帐户。
    db2 CLP (Command Line Processor window)
    db2 connect to DOMINO user db2admin
    db2 grant secadm on database to user DominoDB2User
    db2 connect to DOMINO user DominoDB2User
    db2 grant SETSESSIONUSER on public to group DB2DOM
    				

    这时就可以使用 DB2 作为 Domino 数据服务器了。对于一个 DB2 类型的 Lotus 数据库,我们会看到 Lotus 管理员右下角 有 DB2 Groups 字样,新创建的数据库图标下也有 DB2 字样。



    图 5. DB2 类型的 DOMINO 数据库
    图 5. DB2 类型的 DOMINO 数据库

配置 DB2 实例管理 Domino DB2 数据库

  1. 设置系统环境变量(用 DB2 用户)。
    • DOMI_DIR:指向 TDP for Domino 安装目录。
    • DOMI_LOG:指向 TDP for Domino 日志文件目录 (domdsm.log)。
    • DOMI_CONFIG:指向 TDP for Domino 的 preferences 文件名(默认 domdsm.cfg)。
  2. DB2 实例和 TDP for Domino 要连接同一个 TSM,使用相同的节点和同一个密码文件。确保 DB2 使用的 dsm.opt 文件中指向的 TSM 与 TDP for Dominodsm.opt 文件中指向的 TSM 是同一个,这样才能共享信息。
  3. 重新启动 DB2 实例更新环境变量。
  4. 确保 TDP for Domino 已经初始化密码文件并且 DB2 实例用户可以使用该文件。

    提示:在 Unix 上,该步需要用 root 用户执行。

    [db2inst1@bootDOM adsm]$ su root
    Password:
    				

    进入 /home/db2inst1/sqllib/adsm,

    [root@bootDOM adsm]# ./dsmapipw
    *************************************************************
    * Tivoli Storage Manager                                    *
    * API Version = 5.5.2                                       *
    *************************************************************
    Enter your current password:bootdom # you node password
    Enter your new password:db2inst1  
    Enter your new password again:db2inst1
    Your new password has been accepted and updated.
    dsmapipw
    				

  5. 以 DB2 实例用户登录通过执行备份命令来验证配置是否成功。
    Db2 backup db DOMINO use tsm
    				





回页首


配置 TDP for Domino

TDP for Domino 实现 DB2 备份恢复功能除了进行 TDP 的基本配置外需要进行额外的配

TDP FOR DOMINO 设置

当备份或恢复启动 DB2 功能的 Domino 数据库的时候需要在 preference 文件中增加 DB2 有关的其他参数。例如:

domdsmc set DB2CONTainerpath=/local/db2data/alt/data
domdsmc set DB2LOGPath=/local/db2data/alt/logs
domdsmc set DB2LOGTarget=/local/db2data/domino/logs 
domdsmc set DB2REPlace=Yes
domdsmc set DB2RESTIntopath=/local/db2data/alt/into 
domdsmc set DB2SESSions=2
domdsmc set DB2USER=db2inst1
				

启动 Domino DB2 数据库为前滚恢复模式

  1. 停止 Domino server。
  2. 发布下面的命令来启动前滚恢复:
    db2 update database configuration using logarchmeth1 tsm
    				

  3. 发布下面的命令来备份数据库。
    db2 backup database domino use tsm
    				

  4. 启动 Domino 服务器。

TDP for Domino 必须用 DB2 实例用户 ID 和密码来备份和恢复 Domino DB2 数据库。存储 DB2 实例用户 ID 的 DBUSER preference 选项可以用 domdsmc set db2user 命令实现。例如:

domdsmc set db2user=db2admin
				

配置 DB2 和 TDP for Domino 使用同一个密码文件

  1. 用 Domino 用户 ID 登录 TDP for Domino 节点。
    • 参照前面的描述配置 dsm.opt 文件(TDP for Domino 使用)。
    • 产生密码文件((TSM.PWD)。
    • 如果 TSM.PWD 是 DB2 Tivoli Storage Manager Agent 产生的那么密码文件加入读写权限给 DB2 用户。
      chmod o+rw TSM.PWD
      				

    • 如果 TSM.PWD 是 TDP for Domino 产生的,不需要上述操作。
    • 发布 Domdsmc Query Adsmserver 命令来验证 Domino 用户可以使用 TSM。
  2. 用 DB2 实例用户 ID 登录。

    添加下面的变量到 .profile(/home/db2inst1) 文中:

    export DSMI_DIR=/usr/tivoli/tsm/client/api/bin64
    export DSMI_CONFIG=/home/db2inst1/dsm.opt
    export DSMI_LOG=/home/db2inst1
    				

    给 dsm.opt 文件(/home/db2inst1)加连接到 TDP for Domino 的 dsm.opt 文件。

潜在问题解决方案

注意:更改完成后,需要确认 tsm log 目录下 dsierror.log 的属主。如果 db2inst1 不能访问该文件,需要删除它。否则备份不成功。例如:

[db2inst1@bootDOM tsm]$ ls -la /home/db2inst1/tsm
total 28
drwxr-xr-x 2 db2inst1 db2grp 4096 Apr 13 07:49 .
drwxr-xr-x 6 db2inst1 db2grp 4096 Apr 13 07:51 ..
-rw-r--r-- 1 root     root      0 Apr 13 07:49 dsierror.log
-rw-r--r-- 1 db2inst1 db2grp   22 Apr 13 07:41 dsm.opt
				

dsierror.log 文件属于 root 用户而不属于 db2inst1 就要删除 dsierror.log。





回页首


TDP 备份 Domino DB2 数据库

TDP for Domino DB2 备份类型

TDP for Domino 提供了三种 DB2 数据库备份的类型

DB2 数据库备份

TDP for Domino 为 DB2 数据库备份创建一个选择性备份介质,用来灾难性恢复 Domino DB2 数据库或者用来恢复单个启动 DB2 功能的 Domino 数据库。启动 DB2 功能的 Domino 数据库只支持选择性备份。如果 Domino DB2 数据库开启了前滚恢复模式就会进行在线备份,如果没有开启前滚恢复模式就会进行离线备份。进行离线备份前 Domino 必须停止服务器和所有的访问 Domino DB2 的应用程序。

下面的命令备份 Domino DB2 数据库:

domdsmc db2selective /full
				

DOMINO DB2 组(表空间)备份

TDP for Domino 为 DB2 组备份创建了一个选择性的表空间备份介质。只有 DB2 数据库启动前滚恢复模式时才能进行这种类型的备份。当我们备份多个 DOMINO DB2 组时可以增加 TSM 服务器的 COMMTIMEOUT 参数来避免 session 超时导致的备份失败。

下面的命令备份 DB2 组 GRP1 和 GRP2,使用三个 sessions for the DB2 TSM agent 来访问 TSM。

domdsmc db2selective GRP1,GRP2 /db2session=3
				

DB2 数据库和 NSF 数据库全备份。

TDP for Domino 也提供了在一个操作中既选择性备份 NSF 数据库又全备份 Domino DB2 数据库的备份类型。通过执行 DOMDSMC FULLSelective 命令来进行 DB2 数据库和 NSF 数据库全备份。Domdsmc fullselective 首先会备份所有的 Domino NSF 数据库,然后备份所有的 Domino DB2 数据库。

下面的命令备份 NSF 和 启动 DB2 功能的 Notes 数据库。

domdsmc fullselective
				

DB2 备份过期与事务日志

DB2 服务器通过 DB2 TSM 代理自动存档 Domino DB2 数据库的事务日志到 TSM 服务器上。db2archivelog 命令强制执行备份 DB2 数据库的事务日志,该命令用来保证在改变 DB2 数据库向前回滚到当前操作。值得注意的是:事务日志名是唯一的所以是不会由于版本限制导致过期。





回页首


TDP 恢复 Domino DB2 数据库

TDP 对 Domino DB2 类型数据库可以提供的恢复包括:恢复备份到已经存在的数据库中(Inplace 恢复 );恢复备份介质到另一个 DB2 数据库(Alternative 恢复)。

Inplace 恢复 DB2 数据库

Inplace 恢复不支持在线恢复和 DOMINO DB2 组恢复,并且要求 db2container,db2logtarget 目录为空。Inplace 恢复 恢复数据至工作数据库,不需要 db2activate 迁移数据,所以它只包括 恢复 和 rollforward 两个步骤。

  1. 通过执行“Domdsmc db2restore”命令进行恢复

    Inplace 恢复 , 必须制定 full 和 inplace 参数。在 inplace 恢复时会出现 DB2 connection Error 信息,这是正常结果。例如:

    [lotus0@bootDOM ~]$ domdsmc db2restore -full /inplace
    ……
    DB2 CONNECTION ERROR:  Domino unable to connect to DB2 database 'DOMINO' as user 'db2inst1'...
    DB2 CONNECTION ERROR:  set DEBUG_DB2CONNECT=0 to suppress this message.
    04/16/2009 03:17:51 AM  Unable to initialize DB2 services.  
    DB2-based NSF databases will be unusable.: An error occurred accessing the db2 datasource.
    
  2. 通过执行“Domdsmc db2rollforward”命令来更新 DB2 事务日志。

db2rollfowrd 数据库 , 因为 db2roll 的默认 db 为 dom_alt, 所以我们需要指定 rollforward 的数据库。

[lotus0@bootDOM ~]$ domdsmc db2roll domino
IBM Tivoli Storage Manager for Mail:
Data Protection for Lotus Domino
Version 5, Release 5, Level 2.0
(C) Copyright IBM Corporation 1999, 2009. All rights reserved.
Starting Domino DB2 database rollforward...
Initializing Domino connection...
Restart Analysis (0 MB): 100% 
04/16/2009 04:26:37 AM  Recovery Manager: Restart Recovery complete. 
    (0/0 databases needed full/partial recovery)
04/16/2009 04:26:42 AM  A RM error occurred.: An error occurred accessing the db2 datasource.
DB2 CONNECTION ERROR:  Domino unable to connect to DB2 database 'DOMINO' as user 'db2inst1'...
[IBM][CLI Driver] SQL1117N  A connection to or activation of database 
    "DOMINO" cannot be made because of ROLL-FORWARD PENDING.  SQLSTATE=57019
DB2 CONNECTION ERROR:  set DEBUG_DB2CONNECT=0 to suppress this message.
04/16/2009 04:26:44 AM  Unable to initialize DB2 services.  
DB2-based NSF databases will be unusable.: An error occurred accessing the db2 datasource.
Rollforward DB2 database DOMINO.

Rollforward of DOMINO completed successfully.
Total DB2 databases inspected:                  1
Total DB2 databases requested for rollforward:  1
Total DB2 databases rollforwarded:              1
ACD5147E A Domino server error was encountered regenerating database links.
Domino server is not DB2-enabled or DB2 services were 
    unable to initialize when the server started up

现在 DB2 数据库已经被恢复成功,重新启动 DOMINO 服务器完成恢复。默认恢复数据到 DB2ALTDBname 指定的数据库(DOM_alt)。也可以通过参数 DB2ALtdbname 指定恢复的临时数据库名。

Alternative 恢复 DB2 数据库

对于 Alternative 恢复,执行完恢复命令后我们还需要执行其他操作恢复的数据库才能被使用。Alternative 恢复包括三个步骤,db2restore,db2rollforward 和 db2activate。下面我们以 full restore 为例,演示下 alternative 恢复。

  1. 通过执行“Domdsmc db2restore”命令来恢复 DB2 数据库。
    [lotus0@bootDOM ~]$ domdsmc db2restore -full
    IBM Tivoli Storage Manager for Mail:
    Data Protection for Lotus Domino
    Version 5, Release 5, Level 2.0
    (C) Copyright IBM Corporation 1999, 2009. All rights reserved.
    Total DB2 database backups inspected:             1
    Total DB2 database backups requested for restore: 1
    Total DB2 database backups restored:              1
    Throughput rate:                                  4,472.13 Kb/Sec
    Total bytes transferred:                          682,622,976
    Elapsed processing time:                          149.06 Secs
    

    下面展示了恢复后 db2container 下的的内容,我们可以看到表空间被恢复至该目录。

    [lotus0@bootDOM data]$ pwd
    /local/db2data/alt/data
    [lotus0@bootDOM data]$ ls -la
    total 284004
    drwxrwxrwx 2 root     root       4096 Apr 16 01:36 .
    drwxrwxrwx 5 root     root       4096 Apr 14 04:54 ..
    -rw------- 1 db2inst1 db2grp 70254592 Apr 16 01:36 1.DB2GRP
    -rw------- 1 db2inst1 db2grp 36700160 Apr 16 01:36 2.DB2GRP
    -rw------- 1 db2inst1 db2grp 36700160 Apr 16 01:36 3.DB2GRP
    

    下面展示了恢复后 DB2LOGPath 下的的内容,我们可以看到 logs 被恢复至该目录。

    [lotus0@bootDOM logs]$ pwd
    /local/db2data/alt/logs
    [lotus0@bootDOM logs]$ ls -la
    total 52
    drwxrwxrwx 2 root     root    4096 Apr 16 01:36 .
    drwxrwxrwx 5 root     root    4096 Apr 14 04:54 ..
    -rw------- 1 db2inst1 db2grp 32768 Apr 16 01:36 S0000017.LOG
    

    Alternative 恢复,恢复 DOMINO DB2 组时 TDP for Domino 每次只允许恢复一个 DOMINO DB2 组。

  2. 通过执行“Domdsmc DB2rollforward”命令来更新 DB2 事务日志。
    [lotus0@bootDOM ~]$ domdsmc db2roll
    IBM Tivoli Storage Manager for Mail:
    Data Protection for Lotus Domino
    Version 5, Release 5, Level 2.0
    (C) Copyright IBM Corporation 1999, 2009. All rights reserved.
    Starting Domino DB2 database rollforward...
    Initializing Domino connection...
    Rollforward DB2 database DOM_ALT.
    Rollforward of DOM_ALT completed successfully.
    Total DB2 databases inspected:                  1
    Total DB2 databases requested for rollforward:  1
    Total DB2 databases rollforwarded:              1
    

  3. 通过执行“Domdsmc DB2activatedbs”命令把 DOMINO DB2 组从恢复的临时 DOMINO DB2 组拷贝到当前使用的数据库。
    [lotus0@bootDOM ~]$ domdsmc db2activate "*"
    IBM Tivoli Storage Manager for Mail:
    Data Protection for Lotus Domino
    Version 5, Release 5, Level 2.0
    (C) Copyright IBM Corporation 1999, 2009. All rights reserved.
    Starting Domino database activation...
    Initializing Domino connection...
    Activating database files1/journal96.nsf, 1 of 2,
     into files1/journal96.nsf
    Activate of files1/journal96.nsf completed successfully.
    Activating database files3/journal2.nsf, 2 of 2,
      into files3/journal2.nsf
    Activate of files3/journal2.nsf completed successfully.
    Total pending databases inspected:                 2
    Total pending databases requested for activation:  2
    Total pending databases activated:                 2
    

TDP 还提供了 DB2ACTivatedbs,DB2ARCHivelog,DB2DELetealternate,DB2INActivateobjs,DB2RESTore,DB2ROLLforward,DB2Selective,Query DB2Backup,Query DB2Pendingdbs,Query DB2ROLLforward 等命令。这里我们就不一一介绍了。





回页首


总结

您已经看到了 TDP for Domino 如何保护 Domino DB2 数据库,如何进行相关配置、备份和恢复。并了解了一些在配置和备份恢复过程中可能发生的问题的解决办法。希望这篇文章能对您了解 TDP for Domino 保护 Domino DB2 数据库有一定帮助和参考价值。



参考资料

学习

讨论


作者简介

于晶,2007 年加入 IBM 中国软件开发中心,从事与 Tivoli Data Protection 软件的开发测试工作。


王伟,2006 年加入 IBM 中国软件开发中心,从事与 Tivoli Storage Manager 的开发测试工作。


张晓文,2006 年加入 IBM 中国软件开发中心,从事与 Tivoli Storage Manager 的开发测试工作。




对本文的评价








IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款