DB2 9.7后的HADR支持备库读取数据,相当于双active oracle datagurad。hadr的配置维护比oracle datagurad简单很多,值得大力推广。但是互联网上相关的资料很少。以下讲一下我遇到的配置问题。
在默认的数据源配置里面没有配置HADR的主备切换信息,主备切换的信息是was服务器连接到主数据库上读取的。当数据库发生切换后,应用服务器能根据主备切换消息马上切换到备库上。
可惜HADR alternate server的信息在用DB2 Universal JDBC Driver type 4的时候,hadr的配置只是保存在was服务器的内存里面并不是持久的。也就是说在HADR主机发生故障无法对外服务,备机takeover之后。这时启动应用服务器,或者应用服务器发生重启,应用服务器根据原有的配置,只会连接到主数据。所以会导致应用服务器无法正常启动。
一般Google只能搜索到这个technote:Making DB2 Universal JDBC Driver Type 4 works with DB2 HADR in WebSphere Application Server V6.0 and V6.1
这个只是一个示例程序,而且在启用安全性之后这个程序无法使用。所以正确的配置方法应该如下,
打开JDBC providers => DB2 Universal JDBC Driver Provider => Data sources => HADR对应的数据源 => Custom properties。
点解New,增加以下四个定制属性:
Name: clientRerouteAlternateServerName
Type: java.lang.String
Value: 192.168.0.99 (请根据实际情况替换)

Name: clientRerouteAlternatePortNumber
Type: java.lang.String
Value: 50000

Name: maxRetriesForClientReroute
Type: java.lang.int
Value: 3

Name: retryIntervalForClientReroute
Type: java.lang.int
Value: 2

把hadr的切换信息写作was的配置文件里。当主库关闭的时候was会根据配置文件的信息尝试连接备库。此方法was 6.0和6.1同样适用。