【技术文档】
利用 IBM® DB2® 高可用性灾难恢复 (HADR) 和自动客户端重新路由功能,可以将其客户端应用程序从发生故障的数据库服务器中恢复过来,并且可以最大限度地减少中断时间。本文向您介绍使用 IBM WebSphere® Application Server Network Deployment V6.1 作为客户端应用程序并利用 DB2 HADR 和自动客户端重新路由功能构建高可用性数据库环境的步骤。
引言
IBM DB2 Universal Database (UDB) Enterprise Server Edition V8.2 引入了一种新的称为高可用性灾难恢复 (HADR) 的高可用性功能,它通过将数据从主要数据库复制到备用数据库为其客户端应用程序提供了一种故障转移功能。这使得客户端应用程序可以方便地从部分或完全灾难中恢复过来。另外,DB2 HADR 还与自动客户端路由 (ACR) 功能相关联,使灾难恢复行为对其客户端应用程序实际上是透明的。
例如,IBM WebSphere Application Server Network Deployment (ND) V6.1 使用 DB2 来存储其应用程序的持久性数据。WebSphere Application Server 应用程序只需要与主要数据库进行连接即可。为了在备用服务器上保持数据库的一个同步副本,系统会一致地将 DB2 HADR 日志文件从主要服务器发送到备用服务器来保持二者的同步。当主要服务器脱机时(计划内或计划外停机),备用服务器将联机代替其工作。在启用自动客户端重新路由功能时,DB2 重新路由逻辑将检查是否可以找到备用服务器。如果可以找到,重新路由功能将首先重新尝试连接失败的主要服务器,如果该操作失败,重新路由将尝试连接替代的备用服务器。这时,WebSphere Application Server 就会与备用服务器重新建立连接,并将回滚事务,然后在备用服务器上重新发布。整个 DB2 HADR 故障转移过程对 WebSphere Application Server ND 应用程序是透明的。
DB2 HADR 和自动客户端重新路由功能使得其客户端应用程序可以从发生故障的数据库服务器中恢复过来,最大限度地减少了中断时间。本文介绍使用 WebSphere Application Server ND V6.1 作为客户端应用程序并利用 DB2 HADR 和自动客户端重新路由功能构建高可用性数据库环境的步骤。
DB2 HADR 准备工作
DB2 HADR 要求
在将 DB2 和 HADR 用作 WebSphere Application Server 应用程序数据存储库之前,您需要了解对主要 DB2 服务器和备用 DB2 服务器的下列基本要求:
需要完全相同的操作系统和 DB2 版本。
必须使用相同的容器文件系统和安装路径,例如 /home/db2inst1/sqllib。
如果通过引用方式使用 HADR 功能,则需要指定 HADR 的通信端口:
对于 UNIX® 或 Linux®:/etc/services
对于 Windows®:c:\windows\system32\drivers\etc\services
主要服务器和客户端应用程序应能够通过 TCP/IP 连接到备用服务器计算机。
DB2 HADR 设置
现在我们将了解,在设置 DB2 HADR 主要服务器和备用服务器时都涉及哪些内容:
在主要计算机和备用计算机上安装 DB2 UDB Enterprise Server Edition。在两台计算机上都启动 DB2 服务器,如果尚未运行,则在主要计算机上创建数据库和所需的表。为了便于说明,我们将使用“Sample”作为数据库名称。(有关详细的安装信息,请参见 DB2 信息中心。)
接下来,为主要计算机和备用计算机上的每个数据库确定 TCP/IP 连接通信端口(按照常规的客户端/服务器数据库连接)。端口名是用户定义的,端口号可以是任意数字,只要没有冲突就行。不要求主要服务器和备用服务器上的端口相同;不过,如果保持这两台计算机上的端口相同,则配置起来将会非常方便。对于 Sample 数据库,我们在主要服务器和备用服务器上使用了两个端口(51012 和 51013):
清单 1. 用于“Sample”数据库的两个 HADR 端口
>more /etc/services
# HADR ports assigned by user
ha_sample 51012/tcp
ha_sample_int 51013/tcp
您需要编辑 /etc/services 文件 (UNIX/Linux) 或 c:\windows\system32\drivers\etc\services (Windows) 来指定端口。(注意,只有管理员帐户才能够编辑这些文件。)