设想:
服务器 SERV_A,数据库 DBNAME 主
服务器 SERV_B,数据库 DBNAME 备用,启用了 DB2_HADR_ROS
然后就会出现这种情况:
- 当主服务器位于 SERV_A 时,从客户端到 DBNAME 建立连接 CON
- 接管 DBNAME 到 SERV_B -> DBNAME 成为 SERV_B 上的主数据库
- 使用 ACR(自动客户端重新路由)将连接重新路由到 SERV_B
- 将 DBNAME 接管回 SERV_A -> DBNAME 成为 SERV_A 上的主数据库
- 连接 CON 不会返回到 SERV_A,而是保持以 readolny 模式连接到 SERV_B。
如何避免这种情况?活动连接将以只读模式保留在备用数据库中,直到您重新启动连接。对于某些使用连接池(Websphere Application Server)的应用程序,情况更糟,因为您必须重新启动整个应用程序服务器才能强制连接池首先连接到主服务器。
这发生在配置了 ACR、jdbc 驱动程序类型 4 的 ibm db2 dsdriver 上。已在 db2 10.5 和 11 的多个版本(修复包)上进行了测试。
答案1
答案2
您是否尝试过使用配置了 VIP 的 TSAMP?我已经多年没有看到有人尝试只依赖 ACR 而不使用 TSAMP 了。