PGJDBC原生HA-PGClientSiteHA

87 阅读1分钟

简介

PGJDBC原生提供Client Site HA。

为了支持简单的连接故障转移,可以在用逗号分隔的连接url中定义多个节点的连接信息(IP、Port)。

驱动程序将按顺序依次尝试连接,直到连接成功;如果所有的连接都不成功,则会抛出连接异常。

连接url的语法为:

jdbc:postgresql://node1,node2,node3/accounting?targetServerType=preferSecondary&loadBalanceHosts=true

在针对每个节点上具有相同数据的高可用postgres集群时,Client Site HA非常有效。 例如,流式复制postgres群集。

参数

  1. loadBalanceHosts = boolean

    • true:在所有的节点中随机选取一个进行连接
    • false:在所有的节点依次选取进行连接
  2. targetServerType = String

    共有4个可选参数:any, primary, secondary and preferSecondary.

    • any:备选的节点可以是任意类型
    • primary:只会选取节点类型为primary的节点,即使仅有secondary节点时也是如此,出现这种情况会直接返回连接错误
    • secondary:只会选取节点类型为secondary的节点,即使仅有primary节点时也是如此,出现这种情况会直接返回连接错误
    • preferSecondary:优先选取secondary节点进行连接,如果所有的secondary节点都不可用,那么连接primary节点

说明

  1. 对节点(连接)的选择只出现在创建连接的阶段
  2. 当前连接中断后,相关的异常会返回给客户端程序,本次操作会失败,且JDBC不会对操作进行重试
  3. 重试机制依赖客户端代码,如果客户端代码没有重试(重连)机制,那么这条语句会永久失败