#配置高可用连接

# 多地址连接配置

在使用驱动连接存在多个节点的YashanDB服务端时,可以配置多个或多组监听地址(host:port)进行连接。

  • 多个监听地址间用,分隔,连接时根据服务类型(serverType参数)配置对相应节点进行连接。

  • 多组监听地址间用;分隔,同组内的多个监听地址间用,分隔,连接时先在组内根据serverType配置对相应节点进行连接,当组内所有连接均失败后按顺序优先级(越靠前优先级越高)访问下一组。

Note:

  • 多组监听地址连接的故障切换效率低于多个监听地址连接,分组主要用于尽可能保障仅通过第一组地址建立数据库连接,请根据实际需求选择是否分组。
  • 在共享集群/分布式集群部署中,若已配置SCANVIP,直接使用数据库服务端提供的高可用能力即可,无需额外配置多地址连接。
  • 配置多地址连接共享集群/分布式集群时:
    • 若为单集群部署,驱动会将其所有实例视作主节点。
    • 在主备集群部署中,驱动会将主集群的所有实例视作主节点、备集群的所有实例视作备节点。如需在未配置SCAN或VIP的场景下实现负载均衡,可考虑配置多组地址连接并按需指定primaryLoadBalance或standbyLoadBalance,主集群的所有实例为一个组,备集群的所有实例为另一个组。

URL参数格式为:

jdbc:yasdb:serverType://host1:port1,host2:port2;host3:port3,host4:port4/databasename

// serverType=primary|standby时,可以指定poolTimeout
jdbc:yasdb:serverType://host1:port1,host2:port2;host3:port3,host4:port4/databasename?poolTimeout=value

配置项介绍如下:

  • serverType:多地址连接的连接类型,可选项包括primary、standby、loadBalance、primaryLoadBalance以及standbyLoadBalance。若不指定serverType,在输入多IP时默认采用primary。各类型的详细介绍如下:

    serverType 说明
    primary 默认类型,可省略。
    驱动会按指定监听地址的先后顺序连接节点,并通过执行SELECT * FROM DATABASE_ROLE判断节点角色,保留首次与主节点建立的连接。
    standby 驱动会按指定监听地址的先后顺序连接节点,并通过执行SELECT * FROM DATABASE_ROLE判断节点角色,保留首次与备节点建立的连接。
    loadBalance 驱动会将指定的监听地址随机打乱顺序后进行连接,获取每个节点当前的会话数,选取会话数最小值对应的节点作为目标节点(若最小值存在多个节点则取最先建立连接的节点),保留目标节点的连接并关闭其他连接。
    primaryLoadBalance 驱动会将指定的监听地址随机打乱顺序后进行连接,获取每个节点当前的会话数量和角色,选取主节点中会话数最小值对应的节点作为目标节点(若最小值存在多个节点则取最先建立连接的节点),保留目标节点的连接并关闭其他连接。
    standbyLoadBalance 驱动会将指定的监听地址随机打乱顺序后进行连接,获取每个节点当前的会话数量和角色,选取备节点中会话数最小值对应的节点作为目标节点(若最小值存在多个节点则取最先建立连接的节点),保留目标节点的连接并关闭其他连接。
  • poolTimeout:仅可搭配primary或standby类型使用,表示连接超时时间,单位为秒。可选参数,省略时默认为300。在整个连接过程中,即便快速遍历完所有地址且所有地址均未连接成功,系统仍会等待poolTimeout时长后才提示连接失败。

URL连接配置示例:

// 示例1:primary + 多个IP/PORT + poolTimeout
jdbc:yasdb:primary://192.168.1.2:1688,192.168.1.3:1688,192.168.1.4:1688/yashan?poolTimeout=180

// 示例2:standby + 多组IP/PORT + poolTimeout
jdbc:yasdb:standby://192.168.1.2:1688,192.168.1.3:1688;192.168.1.4:1688,1688,192.168.1.5:1688/yashan?poolTimeout=180

// 示例3:loadBalance + 多个IP/PORT 
jdbc:yasdb:loadBalance://192.168.1.2:1688,192.168.1.3:1688,192.168.1.4:1688/yashan

// 示例4:primaryLoadBalance + 多组IP/PORT
jdbc:yasdb:primaryLoadBalance://192.168.1.2:1688,192.168.1.3:1688;192.168.1.4:1688,1688,192.168.1.5:1688/yashan

// 示例5:standbyLoadBalance + 多个IP/PORT
jdbc:yasdb:standbyLoadBalance://192.168.1.2:1688,192.168.1.3:1688,192.168.1.4:1688/yashan

# 透明应用故障转移TAF配置

YashanDB JDBC中存在如下TAF功能相关的URL参数:

参数名称 数据类型 参数说明
failover string 是否开启TAF,参数值为ON或OFF,默认为OFF。
* ON:表示开启TAF,当故障发生时应用程序会自动切换到已配置的其他数据库节点。
* OFF:表示关闭TAF,且暂不支持在OFF状态下自动重连当前数据库节点。
failoverType string 故障转移的类型,支持NONE、SESSION和SELECT,默认为NONE。
* NONE:表示不使用故障转移。
* SESSION:表示发生故障后重连并重置Statement句柄。
* SELECT:表示在SESSION类型的基础上,切换连接后重新执行因故障而执行出错的SELECT语句(此时,SELECT语句不能为带LOB类型的绑定参数的查询语句),但不支持再对切换前已获取的对象进行二次操作。
failoverMethod string 故障转移的方式,该值将决定从主节点到备节点的故障转移速度。
* BASIC:表示在故障转移时再建立连接。
failoverRetries int 重试次数,默认值为5。
failoverDelay int 重试间隔时间(单位:秒),默认值为1。

URL参数格式为:

jdbc:yasdb:serverType://host1:port1,host2:port2;host3:port3,host4:port4/yashan?key1=value1&key2=value2

URL连接配置示例:

jdbc:yasdb:primary://192.168.1.2:1688,192.168.1.3:1688;192.168.1.4:1688,192.168.1.5:1688;192.168.1.6:1688,192.168.1.7:1688/yashan?poolTimeout=180&failover=on&failoverType=session&failoverMethod=basic&failoverRetries=5&failoverDelay=1

配置多组IP/PORT连接时,组内按照serverType类型连接,组间按照顺序优先级访问,例如有3组IP/PORT连接,当前发生TAF的节点在第2组,则先访问第2组其他节点,再访问第1组节点,最后访问第3组节点。

# 心跳连接的配置

开启心跳连接能够使得程序更快的检测到正在使用的连接已经异常,从而跳出当前等待返回数据的状态,从而触发后续的操作,例如故障恢复。

心跳连接相关参数如下:

参数 类型 描述
heartbeatSwitch string 该参数表示心跳连接是否开启,由ON和OFF两个可选值,默认为ON。
heartbeatSocketTimeout int 心跳连接的保活超时时间(单位:秒),默认为60秒。
heartbeatSchedulePeriod int 心跳连接的保活间隔时间(单位:秒),默认为20秒。

URL连接配置示例:

jdbc:yasdb://192.168.1.2:1688/yashan?heartbeatSwitch=on&heartbeatSocketTimeout=60&heartbeatSchedulePeriod=20
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流