概述
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即可,如:
export DM_SVC_PATH=/home/dmdba/dm 或者 setenv DM_SVC_PATH /home/dmdba/dm |
常用参数整理
配置项 | 缺省值 | 简述 |
服务名 | 无 | 连接服务名,参数值格式为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 |
CHAR_CODE | 操作系统编码格式 | 客户端使用的编码格式,会影响帮助信息和错误提示信息,要与客户端使用的编码格式一致。支持的选项为:PG_UTF8(表示 UTF8 编码);PG_GBK/PG_GB18030(两者都表示 GBK 编码);PG_BIG5(表示 BIG5 编码);PG_ISO_8859_9(表示ISO88599 编码);PG_EUC_JP(表EUC_JP 编码);PG_EUC_KR(示 EUC_KR 编码);PG_KOI8R(表示 KOI8R编码);PG_ISO_8859_1(表示 ISO_8859_1 编码)。可以不指定,若不指定,系统会读取操作系统信息获得编码信息,建议有需要才指定。 |
EP_SELECTOR | 0 | 连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择 列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接 |
AUTO_RECONNECT | 0 | 连接发生异常或一些特殊场景下连接处理策略。0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都 会抛一个 SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理 |
dm_svc.conf文件的配置可以分为两个区域,全局配置区和服务配置区两大部分,全局配置区可以配置所有的配置选项,服务配置区可以配置除服务名外的所有选项,并且服务配置区的优先级高于全局配置区,即如果两个区域都配置了相同的参数,则以服务配置区的参数为准。
全局配置区可以配置多个服务名和IP/PORT对应关系,同时可以配置通用性的参数,如传输加密参数:LOGIN_ENCRYPT=(0),对于个性的参数,如LOGIN_MODE=(1),则配置在服务配置区中(此配置参数在有单实例的服务名下,连接时会出现"没有匹配的可登陆服务器"错误,当然,根据优先级的原则,可以将此配置参数在单实例服务配置区配置为LOGIN_MODE=(3/4),也可以解决连接问题)。
全局配置区有多个服务名且服务需要个性化参数的话,则在服务配置区中,需要配置多个[服务名]开头的服务配置区,如果无个性化参数,则不需要进行服务配置区的配置。
案例展示
下面以一个普通单机环境中 dm_svc.conf 为例:
在windows中C:\Windows\System32目录下配置 dm_svc.conf文件 TIME_ZONE=(480) LANGUAGE=(cn) DM8=(192.168.100.11:5236) 不需要填写IP地址,也可连接到服务。 |
以主备环境为例,展示dm_svc.conf配置
在windows中C:\Windows\System32目录下配置 dm_svc.conf文件 TIME_ZONE=(480) LANGUAGE=(cn) DMPS=(192.168.100.11:5236,192.168.100.12:5236) [DMPS] LOGIN_MODE=(1) SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000) 连接成功,并通过服务名查询数据。 当前使用的实例为GRP1_RT_02。 |
以读写分离环境为例,展示dm_svc.conf配置
在windows中C:\Windows\System32目录下配置 dm_svc.conf文件 TIME_ZONE=(480) LANGUAGE=(cn) DMRW=(192.168.100.11:5236,192.168.100.12:5236) [DMRW] LOGIN_MODE=(1) # LOGIN_MODE=1:只连接主库; RW_SEPARATE=(1) RW_PERCENT=(30) SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000) 读写分离环境如下 修改dm_svc.conf如下 TIME_ZONE=(480) LANGUAGE=(cn) DMRW=(192.168.100.11:5236,192.168.100.12:5236) [DMRW] LOGIN_MODE=(2) # LOGIN_MODE=2:只连接备库; |
以DSC集群环境为例,展示dm_svc.conf配置
在windows中C:\Windows\System32目录下配置 dm_svc.conf文件 TIME_ZONE=(480) LANGUAGE=(cn) DMDSC=(192.168.100.11:6636,192.168.100.12:6637,192.168.100.13:5236) [DMDSC] SWITCH_TIMES=(60) SWITCH_INTERVAL=(1000) EP_SELECTOR=(1) #1选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接 AUTO_RECONNECT=(1) #1当连接发生异常时自动切换到其他库 DSC环境如下 当前连接实例为DSC01。 修改dm_svc.conf如下: TIME_ZONE=(480) LANGUAGE=(cn) DMDSC=(192.168.100.11:6636,192.168.100.12:6637,192.168.100.13:5236) [DMDSC] LOGIN_MODE=(2) # LOGIN_MODE=2:只连接备库; |
以普通MPP集群展示dm_svc.conf用法:
在windows中C:\Windows\System32目录下配置 dm_svc.conf文件 TIME_ZONE=(480) LANGUAGE=(cn) DMMPP=(192.168.100.11:5236,192.168.100.12:5237) 全局登录,连接到两个EP实例。 |
总结
在编写dm_svc.conf文件后,需要重启客户端工具,修改的配置才能生效;
如果 dm_svc.conf 配置文件中包含中文,则必须保证该配置文件的编码与客户端编码一致;
服务名建议使用常用名:
- DMTIME数据守护环境(实时主备集群)
- DMRW数据守护读写分离集群
- DMDSC共享存储集群
- DMMPP MPP集群
使用数据库集群时,如果和单机一样使用ip进行连接,若是主库宕机进行主备切换后,读取数据将还是在ip指向那台数据库,不会进行自动切换。所以在使用集群时,应当使用服务名进行连接,这种情况下会自定选择正常运行的数据库。