在运行 DB2 HADR 时 DB2 Universal JDBC Driver 的行为
尽管 DB2 JDBC Universal Driver 将透明地连接到适当的数据库服务器(即主要服务器对应于备用服务器),但是,如果比较 DB2 Universal JDBC Driver Type2 和 Driver Type4,仍存在一些差异和限制:
DB2 Universal Driver Type2
在首次成功连接到 DB2 数据库之后,DB2 将使用备用服务器信息更新 JDBC 驱动程序。备用服务器信息然后存储在 JDBC 驱动程序一端的内存和 DB2 数据库目录中(持久存储在磁盘上)。如果到主要 DB2 服务器的连接失败,DB2 将从内存中(如果在内存中找不到备用服务器信息,则从 DB2 持久性副本中)检索备用服务器信息。然后,DB2 驱动程序将使用该备用服务器信息连接到正确的 DB2 服务器。整个过程对用户而言是透明的。
DB2 Universal Driver Type4
在首次成功连接到 DB2 数据库之后,DB2 还将使用备用服务器信息更新 JDBC 驱动程序。不过,备用服务器信息将仅存储在 JDBC 驱动程序端的内存中。如果到主要 DB2 服务器的连接失败,DB2 将从内存中检索备用服务器信息,并将使用该备用服务器信息连接到正确的 DB2 服务器。整个过程对用户而言是透明的。
事实上,Type4 仅更新内存中的信息,并不将其保留在 DB2 持久性副本中(而在 Type2 中则保留),这样,在客户端 JVM(例如,WebSphere Application Server)停机(正常停机或者非正常停机)时,会导致备用服务器信息丢失。有关在使用 DB2 Universal JDBC Driver Type4 时如何保留 HADR 备用服务器信息的更详细信息,请参阅附录。
配置 WebSphere Application Server
在 WebSphere Application Server ND 中定义数据源应该非常简单,因为设置与启用 HADR 的 DB2 服务器的连接没有特殊要求。可以将 DB2 数据源配置为 Type2 或 Type4,以连接到 DB2。对于 DB2 服务器名称,只需要输入主要 DB2 服务器计算机。WebSphere Application Server 不需要知道有关备用计算机的任何信息,因为在 DB2 服务器端支持高可用性和客户端重新路由功能。所以,定义 DB2 数据源的方式与没有使用 HADR 时毫无二致。
下面是在 WebSphere Application Server ND 上配置 DB2 HADR 连接的一个示例:
创建 DB2 Universal JDBC Driver 提供程序。
通过选择 JDBC providers => DB2 Universal JDBC Driver Provider => Data sources => <DataSource_Name> 新建一个 data_source。仅使用主要 DB2 计算机的所有信息创建数据源(图 1)。
在测试 DB2 HADR 接管行为之前,您需要验证 WebSphere Application Server 和 DB2 HADR 主要计算机之间的连接是否正常。
图 1. WebSphere Application Server 控制台上的数据源配置

在缺省情况下,DB2 自动客户端重新路由功能每 10 分钟重新尝试建立到数据库的连接。不过,可以配置精确的重试行为。利用 DB2 Universal JDBC Driver 的 Type4 连接的用户可以使用以下 JDBC 自定义属性执行此操作:
maxRetriesForClientReroute:使用此属性可以限制到服务器的主要连接失败的重试次数。此属性仅在同时设置了retryIntervalClientReroute 属性时才能使用。
retryIntervalForClientReroute:使用此属性可以指定两次重试之间的时间间隔(以秒为单位)。此属性仅在同时设置了 maxRetriesForClientReroute 属性时才能使用。
通过限制自动重新路由之间的尝试间隔,这些属性可以提供更快的响应时间,并在无法重新路由的情况下,更快地返回应用程序的错误。
从 WebSphere Application Server 管理控制台执行以下操作:
要配置资源,请导航到 JDBC providers => DB2 Universal JDBC Driver Provider => Data sources => <DataSource_Name> => Custom properties。
选择 New 并添加下列自定义属性:
maxRetriesForClientReroute: 2
retryIntervalForClientReroute: 15
单击 Apply 并保存您的配置。
在上面的示例中,将重新路由之间的尝试间隔限制为每 15 秒进行 2 次。图 2 显示了如何设置这些属性:设置的实际值取决于您环境中的硬件和拓扑。
图 2. 添加数据源配置的自定义属性

请参阅 DB2 文档中有关自动客户端重新路由配置的说明,了解等效的 DB2 注册表变量和其他详细信息。