客户端要连接到数据库,除了使用某一个具体的“服务器 IP 地址和端口号”,也可以使用数据库服务名。服务名是一个数据库系统中所有对外服务的实例的“IP 地址和端口号”的集合的名称。
连接 DMDSC 集群,建议客户端使用数据库服务名,以实现故障自动切换、只连集群的主控节点或者只连集群的第一个节点等功能。
连接服务名可以在 DM 提供的 JDBC、DPI 接口中使用。可以通过编辑 dm_svc.conf 文件配置连接服务名。
dm_svc.conf 是一个客户端配置文件,它包含了 DM 各接口和客户端工具所需要配置的一些参数。它必须和接口/客户端工具位于同一台机器上才能生效。
初始 dm_svc.conf 文件在 DM 安装时自动生成。不同平台的生成目录有所不同。
- 32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%system32 目录;
- 64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%system32 目录;
- 32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%SysWOW64 目录;
- 在 Linux 平台下,此文件位于/etc 目录。
可以通过设置操作系统环境变量 DM_SVC_PATH 来修改 dm_svc.conf 文件路径。
dm_svc.conf 文件包含很多参数,详细请参考《DM8 系统管理员手册》。本节只介绍 DMDSC 相关的常用配置项:
● 服务名
用于连接的服务名,用户通过连接服务名访问数据库。
服务名格式:
IP 为数据库所在的 IP 地址,如果是 IPv6 地址,为了方便区分端口,需要用[]封闭 IP 地址。PORT 为数据库使用的 TCP 连接端口,可选配置,不配置则使用默认的端口。
● SWITCH_TIMES
检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~,缺省值为 1。
● SWITCH_INTERVAL
表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~,缺省值为 200。
● LOGIN_DSC_CTRL
服务名连接数据库时是否只选择 DMDSC 控制节点的库。0:否;1:是。缺省值为 0。
● EP_SELECTOR
连接数据库时采用何种模型建立连接。不同的接口取值不同。
在 JDBC 和 DPI 中,该配置项的取值为大于或等于 0 的整数。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;其余大于 0 的整数表示选择列表中第几个节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接,若配置的值超过服务名列表的节点数,则连接第 N 个节点。其中,N=EP_SELECTOR % 服务名列表节点数。
在.NET PROVIDER、NODE.JS、GO 中,该配置项的取值为 0 或 1。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接。
缺省值为 0。
● AUTO_RECONNECT
连接发生异常或一些特殊场景下连接处理策略。0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个 SQLException,用于通知上层应用进行事务执行失败时的相关处理;2:配合 EP_SELECTOR>=1 使用,如果服务名列表前面的节点恢复了,将当前连接切换到前面的节点上;4:保持各节点会话动态均衡,通过后台线程检测节点及会话数变化,并切换连接使之保持均衡。
也可以将 AUTO_RECONNECT 置为上述几个值的组合值,表示同时进行多项配置,如置为 3 表示同时配置 1 和 2。缺省值为 0。
● CHECK_FREQ
JDBC 专用。服务名连接数据库时,循环检测连接是否需要重置的时间间隔。即每间隔设定时间检测连接对象是否发生改变,若连接对象发生改变,JDBC 连接会自动重置到新对象。单位 MS,取值范围 0~。缺省值为 。
在集群场景中,一个完整的 dm_svc.conf 包含两大模块:全局配置区和服务配置区。全局配置区在前,可配置 dm_svc.conf 中所有的配置项;服务配置区在后,以“[服务名]”开头,可配置 dm_svc.conf 中除了服务名和 WALLET_LOCATION 外的所有配置项。服务配置区中的配置优先级高于全局配置区。未设置的参数一律使用默认值。
例如:
需要说明的是,如果对 dm_svc.conf 的配置项进行了修改,需要重启客户端工具,修改的配置才能生效。另外,如果 dm_svc.conf 配置文件中包含中文,则必须保证该配置文件的编码与客户端编码一致。
当用户连接到 DM 数据共享集群连接到集群中的一个实例,用户的所有增删改查操作都是由该实例完成的。但是如果该实例出现故障,那么用户连接会被切换到其他正常实例。而这种切换对用户是透明的,用户的增删改查继续返回正确结果,感觉不到异常。这种功能就是故障自动切换。
实现故障自动切换的前提条件是在使用 DM 数据共享集群的时候,必须配置连接服务名。
本节以 12.1 基于 DMASM 的 DMDSC 成功搭建的数据共享集群体验一下故障自动切换功能。故障自动切换的步骤:
- 配置一个名为 dmdsc_svc 的连接服务名,使用 dmdsc_svc 连接 DMDSC 集群中的数据库,接口会随机选择一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP。
本例子使用 DIsql 作为客户端,因此 dm_svc.conf 位于 DIsql 所在的机器。
dm_svc.conf 配置如下:
- 连接到 DMDSC。
3.确认当前用户已经连接到的节点实例。
用户当前连接到节点 0 上 DSC0 实例。不要退出这个会话(假定为会话 1),第 4 步还是在这个会话中执行。
4.关闭 DSC0 实例,或者将节点 0 所在的这台主机关机。
5.在会话 1 中再次执行这条语句,服务器会返回提示正在切换当前连接。
6.等待几秒后,切换成功。此时,在会话 1 中再次执行这条语句,可执行成功。可见,会话也已切换到 DSC1 实例,实现了故障自动切换。
本节以 12.1 基于 DMASM 的 DMDSC 成功搭建的数据共享集群介绍。
LOGIN_DSC_CTRL=1 表示使用服务名连接数据库时只选择 DMDSC 主控节点(CONTROL NODE)的库。dm_svc.conf 配置如下:
此时退出 DSC1,系统中只剩 DSC2。DSC2 为主控节点。查询如下:
通过服务名连接到 DMDSC。
发现当前用户已经连接到的控制节点实例。
再次启动 DSC1 之后,DSC1 变成控制节点。发现 DIsql 又自动连接上了 DSC1。DIsql 始终只连接主控节点。
此功能 DIsql 工具暂不支持。
本节以 12.1 基于 DMASM 的 DMDSC 成功搭建的数据共享集群介绍。
EP_SELECTOR=N(N>=1)和 AUTO_RECONNECT=2 表示使用服务名连接数据库时会选择“IP 地址和端口号”集合列表中第 N 个节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接,如果第 N 个节点恢复了,当前连接将自动切换到第 N 个节点上。
例 以 EP_SELECTOR=1 为例,dm_svc.conf 配置如下:
使用 MANAGER 通过服务名连接到 DMDSC。10.0.2.102:5237 为 DSC1,10.0.2.102:5236 为 DSC0。
使用此功能,MANAGER 工具需配置自动提交功能。窗口-选项-查询分析器:勾选自动提交。
在 MANAGER 界面中执行如下语句,会发现当前用户连接的是第一个节点。
当关闭 DSC1 之后,MANAGER 会自动连接到 DSC0。
再次启动 DSC1 之后,MANAGER 又自动连回 DSC1。
因为数据库故障切换过程和 MANAGER 工具自动重置连接(CHECK_FREQ)均需要一定的时间,因此,只有等待两者都顺利完成,才能看到正确的结果。
到此这篇sundb数据库项(数据库sp_helpdb)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/65627.html