达梦服务配置文件dm_svc.conf使用
1. 配置文件说明
dm_svc.conf是客户端连接的服务配置文件,在客户端(jdbc、dpi等)使用服务名进行数据库连接的情况下,需要对dm_svc.conf进行配置,如果已经安装了达梦数据库软件,会默认在安装的服务器目录上生成此配置文件,文件的位置分别位于
在windows平台:
32位的DM安装在Win32操作平台下,此文件位于%SystemRoot%\system32目录;
64位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\system32目录;
32位的DM安装在Win64操作平台下,此文件位于%SystemRoot%\SysWOW64目录;
在Linux平台下,此文件位于/etc目录。
对于未安装dm数据库的情况下,可以手工生成dm_svc.conf文件,此文件可以放在默认的文件路径:
windows:%SystemRoot%\system32(SysWOW64)\dm_svc.conf
linux:/etc/dm_svc.conf
也可以根据不同的场景放置于非默认目录,但是此时的jdbc连接串中需要配置参数dmsvcconf,指定此参数的具体路径。
当然,在配置文件中的参数也可以直接写入在jdbc等的连接字符串中,针对以上三种情况下的jdbc连接串示例如下:
1. dm_svc.conf位于默认位置:jdbc:dm://dm_rww --这里的dm_rww是文件中配置的服务名称。
2. dm_svc.conf位于自定义位置:jdbc:dm://?dmsvcconf=/opt/dm_svc.conf
3. 无dm_svc.conf文件:jdbc:dm://dmconn?dmconn=(192.168.56.13:32141,192.168.56.14:32142,192.168.56.15:32143)&rw_Separate=(1)&rw_Percent(0)&login_mode=(1) --其他参数可继续添加
此文件中各参数的配置格式:
参数名=(参数值)
此文件的常用参数(摘自达梦系统管理员手册,更多参数意义参考管理员手册):
配置项 |
缺省值 |
简述 |
服务名 |
无 |
连接服务名,参数值格式为ip[:port],ip[:port],...... |
TIME_ZONE |
操作系统当前时区 |
指明客户端的默认时区,设置范围为:-779~840m,如60对应+1:00时区 |
LANGUAGE |
操作系统语言 |
当前数据库服务器使用的语言,会影响帮助信息错误和提示信息。支持的选项为:CN(表示中文)和EN(表示英文)。可以不指定,若不指定,系统会读取操作系统信息获得语言信息,建议有需要才指定。 |
LOGIN_ENCRYPT |
1 |
是否进行通信加密。0:不加密;1:加密 |
DIRECT |
Y |
是否使用快速装载。y:使用;n:不使用 |
LOGIN_MODE |
4 |
指定优先登录的服务器模式。0:优先连接Primary模式的库,Normal模式次之,最后选择Stantby模式;1:只连接主库;2:只连接备库;3:优先连接Standby模式的库,Primary模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary模式次之,最后选择Standby模式 |
SWITCH_TIMES |
1 |
以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围1~9223372036854775807 |
SWITCH_INTERVAL |
200 |
在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807 |
RW_SEPARATE |
0 |
是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端进行选择,且只会选择服务名中配置的节点 |
RW_PERCENT |
25 |
读写分离分发比例,有效值范围0~100 |
dm_svc.conf文件的配置可以分为两个区域,全局配置区和服务配置区两大部分,全局配置区可以配置所有的配置选项,服务配置区可以配置除服务名外的所有选项,并且服务配置区的优先级高于全局配置区,即如果两个区域都配置了相同的参数,则以服务配置区的参数为准。
全局配置区可以配置多个服务名和IP/PORT对应关系,同时可以配置通用性的参数,如传输加密参数:LOGIN_ENCRYPT=(0),对于个性的参数,如LOGIN_MODE=(1),则配置在服务配置区中(此配置参数在有单实例的服务名下,连接时会出现"没有匹配的可登陆服务器"错误,当然,根据优先级的原则,可以将此配置参数在单实例服务配置区配置为LOGIN_MODE=(3/4),也可以解决连接问题)。
全局配置区有多个服务名且服务需要个性化参数的话,则在服务配置区中,需要配置多个[服务名]开头的服务配置区,如果无个性化参数,则不需要进行服务配置区的配置。
2. 配置文件示例
正确的服务名配置方式示例:
此处只以读写分离和单实例两种数据库架构的情况下进行验证,其他如datawatch或者dsc集群,可以按照DM手册中的配置进行相应的参数填写即可
# 以#开头的行表示是注释
# 全局配置区
IMESDB=(192.168.56.13:32141,192.168.56.14:32142,192.168.56.15:32143)
IMESDB_SIG=(192.168.56.16:5236)
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
TIME_ZONE=(480) #表示+8:00 时区
#其他通用性参数
# 服务配置区
[IMESDB] #读写分离服务配置
LOGIN_MODE=(1) #读写分离集群必须配置为1,否则连接到standby状态的数据库时,会因为standby库为只读模式从而导致出现insert/delete/update操作错误
TIME_ZONE=(480) #表示+8:00 时区
SWITCH_TIME=(3) #在服务器之间切换的次数
SWITCH_INTERVAL=(10) #在服务器之间切换的时间间隔,单位为毫秒
RW_SEPARATE=(1) #启用读写分离,必须配置此参数为1或2,否则所有的insert/delete/update/select操作都在primary上进行,不能启用读写分离机制
RW_PERCENT=(25) #读事务分发到主库的比例
#其他个性化参数
[IMESDB_SIG]
LOGIN_MODE=(3)
#其他个性化参数
3. 配置参数验证
以一个正常状态的单实例和读写分离集群来进行验证,该集群的当前状态为:
从图片可以看出,主节点是192.168.56.14,两个从节点分别是192.168.56.13和192.168.56.15
3.1. 连接串中指定读写分离参数验证
使用jmeter创建并发200个连接,并将读写分离相关参数写到jdbc的连接串中:
或者是:
200并发连接中,所有的insert操作都在主节点上执行,执行select语句时,大部分在standby库,少部分在primary库,后一种配置因为未配置standby节点的IP及端口,在出现primary节点故障的情况下,将会出现连接不到数据库的故障。
配置的连接串主机中,不包含primary节点的话,将会提示故障:
经过以上测试,可以得出结论:
1. 在读写分离的配置下,所有的数据库连接都将连接到primary节点上,再根据语句是增删改还是查询语句,来分配连接到哪些实例。
2. 在读写分离的模式下,连接串的主机列表中,必须有primary节点的数据库,否则将出现数据库服务模式无效的故障。
3.1. 配置文件中读写分离参数验证
3.1.1. 读写分离服务名正确配置验证
此时以读写分离的服务名连接数据库实例,因为login_mode配置为1,所有连接均是primary库,但是在执行不同类型的SQL语句时,执行的实例又不相同,执行insert/update/delete语句时,执行操作的实例为primary库,而执行查询操作时,执行操作的实例为standby库
使用jmeter创建并发200个连接,此时所有的insert语句都是在primary库上执行,执行select语句时,大部分实例为standby库,少部分的primary库,数据执行的结果与预期效果一致。
3.1.2. 读写分离服务名错误配置验证
将服务配置区的LOGIN_MODE修改为模式3,即优先选择standby模式的数据库连接
[IMESDB]
LOGIN_MODE=(3)
验证结果如下
此时因为连接的实例为standby模式,所以执行insert/delete/update操作会因为是只读模式而失败。
将服务配置区的RW_SEPARATE参数注释掉,此时使用服务名进行连接时,会默认启用此参数为0的配置,使用jemter进行连接
经过观察,所以的连接返回都是节点1,不再向节点2进行连接,即读操作也全部在primary角色的实例上进行SQL操作。
3.1.3. 单实例服务名配置正确验证
按照上例"正确的服务名配置方式示例"中的正确连接方式,无论通过服务名,或者是直接ip:port方式连接数据库实例都正常
3.1.4. 单实例服务名配置错误验证
按照以下错误的配置方法,将个性化参数LOGIN_MODE提前
服务连接正常,但是通过具体IP:PORT方式连接时,出现连接异常,如下所示:
此时将全局配置区文件的LOGIN_MODE修改为1,则使用IP:PORT方式或者服务名方式都可以正常连接,这里说明,全局配置区里配置的参数在使用disql连接时生效了。
3.1.5. 分区配置的优先级验证
单实例情况下使用TIME_ZONE参数进行验证,即在全局配置区中配置TIME_ZONE,也在相应的服务配置区中配置此参数,进行时间返回的验证。
此时,虽然全局配置区中的配置为中国所在的东8区,但是服务配置区却配置成西8区,通过dm_svc.conf文件所在的客户端连接到服务端后的查询:
在服务器上使用disql查询,正常的查询结果为:
此配置文件中,虽然在全局配置区中配置了正确的时区参数,但是在服务配置区中也配置了此参数,但是配置成了-480,根据服务配置区优先级高于全局配置区的说法,客户端在进行连接时,读取了配置文件的服务配置区的时区,所以才导致最终查询的结果与实际的时间相关16小时。
4. 总结说明
dm_svc.conf关系到多种客户端连接数据库服务,后续的数据库根据架构不同,需要的配置选项都要随之变化,甚至在不使用服务名进行连接时,全局区的参数也会生效,所以必须对此文件的作用有足够的了解,才能更好的解决数据库服务连接的情况,此文件内容正确的配置方法:
#全局配置区
服务名=(ip:port,ip:port,....)
#其他通用参数,达梦未对参数进行通用和个性化的划分,但是根据常用的参数使用来看,还是有差别的,比如和读写分离开关参数RW_SEPARATE,只在读写分离集群中才需要配置。
#服务配置区
[服务名]
#个性化参数
达梦社区:https://eco.dameng.com
原文地址:https://www.cnblogs.com/ly-nye/p/16573648.html
- 2017数据科学领域15大热门GitHub项目
- 简单分页的性能优化
- Flash/Flex学习笔记(42):坐标旋转
- 分布式监控系统Zabbix-完整安装记录 -添加端口监控
- Flash/Flex学习笔记(40):弹性运动续--弹簧
- 表格样式—粗边框细表格线
- 分布式监控系统Zabbix--完整安装记录 -添加apache监控
- Flash/Flex学习笔记(38):缓动动画
- 把EmEditor改造成简单的Word
- centos7下FFmpeg环境部署记录
- Mac下使用rz、sz远程上传下载文件的配置记录
- 写文件
- Mac下通过VMware Fusion安装centos虚拟机操作记录
- 进程管理利器-supervisor部署记录
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- cookie创建的三个参数(有效期+有效路径+httponly)
- interface概念与代码示例,常量接口和标记接口,与abstract的区别
- Java8异步编程就是拽
- 如果try{}里面有一个return语句,那么紧跟着这个try后的finally{}里面的代码会不会执行?
- 二叉查找树代码java+运行结果
- 全选
- 在控制台,递归显示文件夹下所有文件目录代码+ 运行结果
- 使用bootstrap时下拉菜单失效问题解决
- 使用文件字节输出流FileOutputStream写入文件
- jdk1.8 自带的Base64加密与解密
- 缓冲字节输入流BufferedInputStream
- 在页面上写一个验证码
- 缓冲字节输出流BufferedOutputStream
- EL表达式获取简单数据与复杂数据(调用类)+EL表达式获取Map集合与list集合数据
- 用缓冲字节流,复制一个照片