dm_svc.conf介绍
客户端要连接到数据库,除了使用某一个具体的“服务器 IP 地址和端口号”,也可以使用数据库服务名。服务名是一个数据库系统中所有对外服务的实例的“IP 地址和端口号”的集合的名称。
通过编辑 dm_svc.conf 文件配置连接服务名。作用类似Oracle的tnsnames.ora文件。
初始 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使用
验证过程
本测试环境为守护集群,即主备环境。
主:192.168.20.251
备:192.168.20.252
下面通过配置不同参数的dm_svc.conf来验证部分功能
LOGIN_MODE
指定优先登录的服务器模式。
- 0:优先连接Primary模式的库,Normal模式次之,最后选择Standby模式;
- 1:只连接主库;
- 2:只连接备库;
- 3:优先连接Standby模式的库,Primary模式次之,最后选择Normal模式;
- 4:优先连接Normal模式的库,Primary模式次之,最后选择Standby模式
只连接主库配置
dm_svc.conf 配置如下
[dmdba@ogauss1 DAMENG]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.20.251:5236,192.168.20.252:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
[dmdba@ogauss1 DAMENG]$ disql SYSDBA/DMSERVER2022@DMHA
服务器[192.168.20.251:5236]:处于主库打开状态
登录使用时间 : 4.951(ms)
disql V8
SQL> select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
2 select '数据库模式',MODE$ from v$instance ;
行号 数据库选项 数据库集群相关参数值
---------- --------------- ------------------------------
1 实例名称 GRP1_DW_01
2 数据库模式 PRIMARY
已用时间: 2.453(毫秒). 执行号:145400.
调整DMHA=(192.168.20.251:5236,192.168.20.252:5236)中IP顺序验证。
[dmdba@ogauss1 DAMENG]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.20.252:5236,192.168.20.251:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
[dmdba@ogauss1 DAMENG]$ disql SYSDBA/DMSERVER2022@DMHA
服务器[192.168.20.251:5236]:处于主库打开状态
登录使用时间 : 2.143(ms)
disql V8
SQL> select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
2 select '数据库模式',MODE$ from v$instance ;
行号 数据库选项 数据库集群相关参数值
---------- --------------- ------------------------------
1 实例名称 GRP1_DW_01
2 数据库模式 PRIMARY
已用时间: 0.646(毫秒). 执行号:145500.
SQL> exit
可以看到,设置LOGIN_MODE为1,无论DMHA中配置的IP顺序是怎样,始终会连接到DM主库的IP。
通过Linux系统工具strace跟踪disql可以发现,确实有读取/etc/dm_svc.conf文件的操作,然后根据DMHA参数中配置的IP顺序进行连接,直到连接到主节点251IP,连接成功。
[dmdba@ogauss1 ~]$ strace -o disql_conn_pri.log -ttt disql SYSDBA/DMSERVER2022@DMHA
[dmdba@ogauss1 ~]$ grep -E 'dm_svc|connect|write' disql_conn_pri.log
1674020347.417983 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.418042 open("/etc/dm_svc.conf", O_RDONLY) = 3 <=================
1674020347.418084 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.418780 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.418827 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.418869 open("/etc/dm_svc.conf", O_RDONLY) = 3 <=================
1674020347.418909 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.428950 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.428998 open("/etc/dm_svc.conf", O_RDONLY) = 3 <=================
1674020347.429039 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.441215 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.441275 open("/etc/dm_svc.conf", O_RDONLY) = 3 <=================
1674020347.441318 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.444655 stat("/etc/dm_svc.conf", {st_mode=S_IFREG|0644, st_size=248, ...}) = 0
1674020347.444857 connect(3, {sa_family=AF_INET, sin_port=htons(5236), sin_addr=inet_addr("192.168.20.252")}, 16) = 0 <=================
1674020347.445680 write(3, "\377\377\377\377\310\0R\0\0\0\0\0\0\0\0\0\0\0\0\232\0\0\0\0\2\0\0\0\1\2\2\1"..., 146) = 146
1674020347.447292 write(3, "\377\377\377\377\1\0:\0\0\0\0\0\0\0\0\0\0\0\0;\1\0\0\0\1\0\0\0\0\0\0\0"..., 122) = 122
1674020347.448096 connect(3, {sa_family=AF_INET, sin_port=htons(5236), sin_addr=inet_addr("192.168.20.251")}, 16) = 0 <=================
1674020347.448761 write(3, "\377\377\377\377\310\0R\0\0\0\0\0\0\0\0\0\0\0\0\232\0\0\0\0\2\0\0\0\1\2\2\1"..., 146) = 146
1674020347.450087 write(3, "\377\377\377\377\1\0:\0\0\0\0\0\0\0\0\0\0\0\0;\1\0\0\0\1\0\0\0\0\0\0\0"..., 122) = 122
1674020347.450744 write(3, "\377\377\377\377\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\3\1\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64
1674020347.451113 write(1, "\n", 1) = 1
1674020347.451263 write(1, "\346\234\215\345\212\241\345\231\250[192.168.20.251:5236]:\345"..., 55) = 55
1674020347.451402 write(1, "\n", 1) = 1
1674020347.451555 write(1, "\347\231\273\345\275\225\344\275\277\347\224\250\346\227\266\351\227\264 : 6.032(ms)\n", 31) = 31
1674020347.452604 write(1, "\33]0;192.168.20.251 : 5236 / SYSD"..., 45) = 45 <=================
1674020347.452706 write(1, "SQL> ", 5) = 5
只连接备库配置
dm_svc.conf 配置如下
[dmdba@ogauss1 ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.20.252:5236,192.168.20.251:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(2)
[dmdba@ogauss1 ~]$ disql SYSDBA/DMSERVER2022@DMHA
服务器[192.168.20.252:5236]:处于备库打开状态
登录使用时间 : 5.239(ms)
disql V8
SQL> select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
2 select '数据库模式',MODE$ from v$instance ;
行号 数据库选项 数据库集群相关参数值
---------- --------------- ------------------------------
1 实例名称 GRP1_DW_02
2 数据库模式 STANDBY
已用时间: 1.995(毫秒). 执行号:300.
SQL> exit
调整DMHA=(192.168.20.251:5236,192.168.20.252:5236)中IP顺序验证。
[dmdba@ogauss1 ~]$ cat /etc/dm_svc.conf
TIME_ZONE=(480)
LANGUAGE=(cn)
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.20.252:5236,192.168.20.251:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(2)
[dmdba@ogauss1 ~]$ disql SYSDBA/DMSERVER2022@DMHA
服务器[192.168.20.252:5236]:处于备库打开状态
登录使用时间 : 5.239(ms)
disql V8
SQL> select '实例名称' 数据库选项,INSTANCE_NAME 数据库集群相关参数值 FROM v$instance union all
2 select '数据库模式',MODE$ from v$instance ;
行号 数据库选项 数据库集群相关参数值
---------- --------------- ------------------------------
1 实例名称 GRP1_DW_02
2 数据库模式 STANDBY
已用时间: 1.995(毫秒). 执行号:300.
SQL> exit
可以看到,设置LOGIN_MODE为2,无论DMHA中配置的IP顺序是怎样,始终会连接到DM备库的IP。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




