达梦集群高可用连接配置

达梦连接配置介绍

1. JDBC连接串格式

JDBC(Java Database Connectivity)是 Java 应用程序与数据库的接口规范,旨在让各数据库开发商为 Java 程序员提供标准的数据库应用程序编程接口(API)。JDBC 定义了一个跨数据库、跨平台的通用 SQL 数据库 API。

DM JDBC 驱动程序是 DM 数据库的 JDBC 驱动程序,它是一个能够支持基本 SQL 功能的通用应用程序编程接口,支持一般的 SQL 数据库访问。

通过 JDBC 驱动程序,用户可以在应用程序中实现对 DM 数据库的连接与访问,JDBC 驱动程序的主要功能包括:

  1. 建立与 DM 数据库的连接

  2. 发送 SQL 语句到数据库

  3. 处理并返回语句执行结果

1.1 格式一

host、port 不作为连接属性,直接输入值即可。

格式

jdbc:dm://[host][:port][/schemaName][?propName1=propValue1][&propName2=propValue2][&…]…

参数说明

  • host:数据库所在 IP 地址,缺省为 localhost。ipv6 地址需包含在[]中

  • port:数据库端口号,缺省为 5236

  • schemaName:指定登录使用的默认模式名,缺省使用与登录用户同名的模式

  • ?:参数分隔符,表示后面的都是参数

  • &:参数间隔符,多个参数用&分开

  • propName:连接串属性名称。详见JDBC连接串属性表;

  • propValue:连接串属性值。

示例

jdbc:dm://192.168.0.96:5236/SYSDBA?resultSetType=1003

1.2 格式二

host、port 作为连接属性,此时必须按照JDBC连接串属性表中说明进行设置,且属性名称大小写敏感。

格式

jdbc:dm://[/schemaName][?propName1=propValue1][&propName2=propValue2][&…]…

示例

jdbc:dm://?host=192.168.0.96&port=5236

1.3 格式三

使用自定义服务名,可指定多个数据库节点。

格式

jdbc:dm://GroupName[/schemaName][?GroupName=(host1:port1,host2:port2,…)][&propName1=propValue1][&propName2=propValue2][&…]…

参数说明

  • GroupName:数据库服务名,支持指定多个 host:port,若未指定服务名对应的 host:port,则将在配置文件 dm_svc.conf 中匹配相应的服务名;  

  • 若未指定服务名对应的 host:port,则在 dm_svc.conf 中匹配

示例

jdbc:dm://test?test=(192.168.0.96:5236,192.168.0.96:5237)&LOGIN_DSC_CTRL=0&LOGIN_MODE=1&CLUSTER=DSC&autoReconnect=2&epSelector=1

同一个属性在 JDBC 连接串和 dm_svc.conf 中均有设置但值不同时,以 JDBC 连接串优先。


2. JDBC连接串属性表

所有时间参数可使用(h:小时,m:分钟,s:秒,ms:毫秒),不带单位时默认 ms,有效值范围 0~2147483647。缺省值 5 分钟。

2.1 连接属性

属性说明必须
host主库地址,IP 或 localhost
port端口号
unixSocketFileUNIX socket 路径(Linux)
user登录用户
password登录密码
appName客户端应用程序名称
socketTimeout网络通信链路超时(ms)
sessionTimeout会话超时时间(s)
connectTimeout连接超时时间(ms),缺省 5000
StmtPoolSize语句句柄池大小,缺省 15
PStmtPoolSizeprepare 语句句柄池大小
pstmtPoolValidTimeprepare 语句缓存有效时间(ms)
escapeProcess是否进行语法转义处理
autoCommit是否自动提交
localTimezone客户端本地时区(分钟,-779~840)
maxRows结果集行数限制
LobMode大字段数据获取模式:1服务器获取,2本地缓存
ignoreCase结果集列名是否忽略大小写
resultSetType结果集类型:1003/1004/1005

2.2 集群与高可用属性

属性说明必须
loginMode优先登录的服务器模式(0~4)
loginStatus连接时只选择状态匹配的库(0/3/4/5)
loginDscCtrl是否只选择 dsc control 节点
epSelector节点选择策略(0=均匀分布,>0=固定第n个)
epSelectorDynamic是否根据节点存活状态动态调整 epSelector
autoReconnect连接异常处理策略(0~7,可组合)
switchTimes尝试遍历服务名列表的次数
switchInterval遍历间隔时间(ms)
cluster集群类型:DW/RW/MPP/DPC/DSC/NORMAL
dbAliveCheckFreq检测数据库存活的频率(ms)
checkFreq循环检测连接是否需要重置的时间间隔(ms)

2.3 读写分离属性

属性说明必须
rwSeparate是否启用读写分离(0~5)
rwPercent分发到主库的事务占比(%)
rwAutoDistribute事务分发是否由 JDBC 自动管理
rwHA是否开启读写分离高可用
rwStandbyRecoverTime备库故障恢复检测间隔(ms)
allowRange允许动态负载均衡误差范围(%)

2.4 安全与加密属性

属性说明必须
sslFilesPathSSL 加密文件路径
sslKeystorePassSSL 加密文件口令
uKeyNameUkey 文件路径
uKeyPinUkey 口令
OsAuthType操作系统认证类型(0~4)
loginCertificate登录加密公钥路径
localEncrypt是否启用用户名密码本地加密
userEncrypt消息通信是否加密用户名

2.5 日志与监控属性

属性说明必须
logDir日志文件生成目录
logLevel日志级别:off/assert/error/warn/sql/info/DEBUG/all
logFlushFreq日志刷盘频率(s)
statEnable是否启用状态监控
statDir状态监控信息输出目录
statFlushFreq状态监控写文件刷盘频率(s)
statSlowSqlCount统计慢 SQL top 行数
statHighFreqSqlCount统计高频 SQL top 行数

2.6 其他属性

属性说明必须
mppLocal是否 MPP 本地连接
mppOptMPP 集群批量插入优化
keyWords用户关键字标识
dmsvcconfURL 属性配置文件路径
dbAliveCheckTimeout检测数据库存活的连接超时(ms)
prepareOptimize是否对预编译 SQL 做优化
serverOption附加信息,格式:{key=value,...}
reconnectErrors需要重连的异常错误码
errMapDM 错误码和 Oracle 错误码映射

3. dm_svc.conf配置文件

dm_svc.conf 是客户端配置文件,包含 DM 各接口和客户端工具需要配置的参数,必须和接口/客户端工具位于同一台机器上才能生效。初始 dm_svc.conf 文件在 DM 安装时自动生成。不同平台的生成目录有所不同。

文件位置

  • Windows 32位:%SystemRoot%\system32

  • Windows 64位:%SystemRoot%\system32

  • Windows 64位运行32位程序:%SystemRoot%\SysWOW64

  • Linux:/etc

可通过环境变量 DM_SVC_PATH 修改路径。

3.1 配置项支持情况

配置项JDBC.NETNodeJSGo
服务名
EP_SELECTOR
AUTO_RECONNECT×
CLUSTER×
LOGIN_MODE
LOGIN_DSC_CTRL×
RW_SEPARATE
RW_HA×
CONNECT_TIMEOUT×
SOCKET_TIMEOUT
SWITCH_TIMES
COMPRESS×
SSL_FILES_PATH×
LOG_DIR
LOG_LEVEL
STAT_ENABLE××

3.2 dm_svc.conf用法

dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前;服务配置区在后,以“[服务名]”开头。其中,服务名配置项可以在全局配置区,也可以在此服务名对应的服务配置区之前,即在其对应的“[服务名]”之前。

dm_svc.conf 格式如下:

# 全局配置区

 

参数配置……

 

# 服务配置区

 

[服务名1]

 

参数配置……

 

# 服务配置区

 

[服务名2]

 

参数配置…… 

服务配置区中的配置优先级高于全局配置区。全局配置区的配置项影响所有会话,除非会话所属服务配置区中单独进行了配置,因此对于全局配置区配置项的设置修改需要慎重。

如果对 dm_svc.conf 的配置项进行了修改,需要重启客户端工具,修改的配置才能生效。另外,如果 dm_svc.conf 配置文件中包含中文,则必须保证该配置文件的编码与客户端编码一致。

3.3 配置示例

场景一

配置常规环境的 dm_svc.conf。此处常规环境是指服务名中的 IP 之间互不相关(既不是主备关系、也不在一个集群中)。

例 NORMAL 中的 192.168.0.1 和 192.168.0.2 是两个互不相关的 IP。

# #开头的行表示是注释

 

# 全局配置区

 

NORMAL=(192.168.0.1:5000,192.168.0.2:5236)  

 

TIME_ZONE=(480)   #表示+8:00时区

 

DIRECT=(Y)  

 

# 服务配置区

 

# 常规环境,两个没有关系的IP

 

[NORMAL]

 

TIME_ZONE=(540)   #表示+9:00时区

 

LOGIN_MODE=(4)

 

SWITCH_TIMES=(3)  

 

SWITCH_INTERVAL=(100)

 

场景二

配置集群环境的 dm_svc.conf。一个服务名中的所有 IP 均来自于同一个集群。

以 DMDSC 集群为例。

# #开头的行表示是注释

 

# 全局配置区

DMDSC1=(192.168.1.1:5236,192.168.1.3:5236)

DMDSC2=(192.168.1.5:5236,192.168.1.7:5236)

TIME_ZONE=(480)   #表示+8:00时区

 

#DMDSC1 服务配置区

#以下配置目标连接 DMDSC1 服务名的第一个服务(192.168.1.1:5236),以间隔 1000 毫秒的节奏尝试遍历服务名中的各服务进行连接,若在遍历中成功连上符合要求的服务则立即返回;若没有,则继续。一共尝试 60 次遍历,若60次尝试后依然未连接上目标服务,则根据LOGIN_MODE的配置进行下一种连接的尝试。若连接建立时连上的是2号服务,而一段时间后 1 号服务可以正常连接了,当前连接也不会自动切换到 1 号服务。

[DMDSC1]

LOGIN_MODE=(4) #若是DSC+单机备,建议这里配置成0

SWITCH_TIMES=(60)

SWITCH_INTERVAL=(1000)

EP_SELECTOR=(1)

AUTO_RECONNECT=(1)

 

#DMDSC2 服务配置区

#以下配置目标连接 DMDSC2 服务名的第一个服务(192.168.1.5:5236),以间隔 1000 毫秒的节奏尝试遍历服务名中的各服务进行连接,若在遍历中成功连上符合要求的服务则立即返回;若没有,则继续。一共尝试 60 次遍历,若60次尝试后依然未连接上目标服务,则根据LOGIN_MODE的配置进行下一种连接的尝试。假设2号服务先连接成功,由于AUTO_RECONNECT=(2),因此当1号服务可以正常连接后当前连接会切换到1号服务。

[DMDSC2]

CLUSTER=(DSC)

LOGIN_MODE=(4) #若是DSC+单机备,建议这里配置成0

SWITCH_TIMES=(60)

SWITCH_INTERVAL=(1000)

EP_SELECTOR=(1)

AUTO_RECONNECT=(2)

 

场景三

配置常规环境和集群环境公用的 dm_svc.conf。

例 [NORMAL]为常规环境,[Data_Watch]为数据守护环境。服务名 NORMAL 中的 IP 互不相关,服务名 Data_Watch 中的 IP 为同一个数据守护环境中的 IP。

# #开头的行表示是注释

 

# 全局配置区

 

NORMAL=(192.168.0.1:5000,192.168.0.2:5236)  

 

Data_Watch=(192.168.0.3:5236,192.168.0.4:4350)

 

TIME_ZONE=(480)   #表示+8:00时区

 

DIRECT=(Y)  

 


# 服务配置区

 

# 常规环境,两个没有关系的IP

 

[NORMAL]

 

TIME_ZONE=(540)   #表示+9:00时区

 

LOGIN_MODE=(4)

 

SWITCH_TIMES=(3)  

 

SWITCH_INTERVAL=(100)

 

 

# 服务配置区

 

# 数据守护环境,一主一备,只连备库

 

[Data_Watch]

 

TIME_ZONE=(540)   #表示+9:00时区

 

LOGIN_MODE=(2)

 

SWITCH_TIMES=(3)  

 

SWITCH_INTERVAL=(100)


4. 关键参数说明

4.1 LOGIN_MODE

说明
0优先 PRIMARY → NORMAL → STANDBY
1只连接主库
2只连接备库
3优先 STANDBY → PRIMARY → NORMAL
4优先 NORMAL → PRIMARY → STANDBY(缺省)

启用读写分离时(rwSeparate ≠ 0),loginMode 不生效

4.2 AUTO_RECONNECT

说明
0关闭连接
1异常时自动切换到其他库,抛 SQLException 通知上层
2配合 epSelector=1,节点恢复后切回原节点
4保持各节点会话动态均衡

可组合使用,如 3 表示 1+2

4.3 CLUSTER

说明
DW主备
RW读写分离
MPP大规模并行处理集群
DPC分布计算集群
DSC数据共享集群(需配合 autoReconnect=2、epSelector=1)
NORMAL单机库(缺省)

4.4 RW_SEPARATE

说明
0不启用
1启用,备库由系统自动决定
2启用,备库由客户端选择
3启用,备库由服务器通知
4启用,只连接事务一致性备库
5启用,为 GATEWAY 准备

4.5 EP_SELECTOR

说明
0依次选取不同节点,连接均匀分布
>0选择列表中第 n 个节点,只有当前节点无法连接时才选下一个


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/6802.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注