简介
PGJDBC原生提供Client Site HA。
为了支持简单的连接故障转移,可以在用逗号分隔的连接url中定义多个节点的连接信息(IP、Port)。
驱动程序将按顺序依次尝试连接,直到连接成功;如果所有的连接都不成功,则会抛出连接异常。
连接url的语法为:
jdbc:postgresql://node1,node2,node3/accounting?targetServerType=preferSecondary&loadBalanceHosts=true
在针对每个节点上具有相同数据的高可用postgres集群时,Client Site HA非常有效。 例如,流式复制postgres群集。
参数
-
loadBalanceHosts = boolean
- true:在所有的节点中随机选取一个进行连接
- false:在所有的节点依次选取进行连接
-
targetServerType = String
共有4个可选参数:any, primary, secondary and preferSecondary.
- any:备选的节点可以是任意类型
- primary:只会选取节点类型为primary的节点,即使仅有secondary节点时也是如此,出现这种情况会直接返回连接错误
- secondary:只会选取节点类型为secondary的节点,即使仅有primary节点时也是如此,出现这种情况会直接返回连接错误
- preferSecondary:优先选取secondary节点进行连接,如果所有的secondary节点都不可用,那么连接primary节点
说明
- 对节点(连接)的选择只出现在创建连接的阶段
- 当前连接中断后,相关的异常会返回给客户端程序,本次操作会失败,且JDBC不会对操作进行重试
- 重试机制依赖客户端代码,如果客户端代码没有重试(重连)机制,那么这条语句会永久失败