签到成功

知道了

CNDBA社区CNDBA社区

DM7 达梦 共享存储数据库集群 (7) -- DMDSC连接的故障重连

2019-09-17 20:40 3117 0 原创 DM 达梦
作者: dave

在之前的博客我们了解了DM 数据库连接的几种方式,如下:

DM7 达梦数据库 disql 工具连接 数据库的三种方式
https://www.cndba.cn/dave/article/3572http://www.cndba.cn/dave/article/3701

  在DMDSC 集群环境里和单实例连接没有区别。但在连接 DM 共享存储集群时,实际上是连接到集群中的一个实例,用户的所有增删改查操作都是由该实例完成的。
  同Oracle RAC一样,DMDSC集群在单个节点实例出现故障时,对应的用户连接也会被转移到其他正常实例。而这种转移对用户是透明的,用户的增删改查继续返回正确结果,感觉不到异常。
  实现故障自动重连的前提条件是在配置 DM 共享存储集群的时候,必须配置连接服务名。http://www.cndba.cn/dave/article/3701http://www.cndba.cn/dave/article/3701

1 配置服务名(dmsvc.conf)

  配置 DMDSC 集群,一般要求配置连接服务名,以实现故障自动重连。连接服务名可以在 DM 提供的JDBC、DPI 等接口中使用,连接数据库时指定连接服务名,接口会随机选择一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连接,直至连接成功或者遍历了所有 IP。http://www.cndba.cn/dave/article/3701

  连接服务名配置文件 dm_svc.conf在 DM安装时生成,Windows 平台下位于%SystemRoot%/system32 目录,Linux 平台下位于/etc 目录。

连接服务名格式:http://www.cndba.cn/dave/article/3701

http://www.cndba.cn/dave/article/3701
http://www.cndba.cn/dave/article/3701

SERVERNAME=(IP[:PORT],IP[:PORT],……)

dm_svc.conf 配置文件包含如下配置选项:

1.SERVERNAME:连接服务名,用户通过连接服务名访问数据库。
2.IP:数据库所在的 IP 地址,如果是 IPv6 地址,为了区分端口,需要用[]封闭 IP 地址。
3.PORT:数据库使用的 TCP 连接端口,可选配置,不配置则使用连接上指定的端口。
4.SWITCH_TIME:检测到数据库实例故障时,接口在服务器之间切换的次数;超过设置次数没有连接到有效数据库时,断开连接并报错。有效值范围 1~9223372036854775807,默认值为 3。  
5.SWITCH_INTERVAL:表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807,默认值为 200。

2 测试

2.1 搭建DMDSC 环境

参考:http://www.cndba.cn/dave/article/3701

http://www.cndba.cn/dave/article/3701

DM7 达梦 共享存储数据库集群 (6) — 搭建2节点的DMDSC 环境(DMASM)
https://www.cndba.cn/dave/article/3700http://www.cndba.cn/dave/article/3701

2.2 配置dm_svc.conf文件

在dm_svc.conf 文件中添加如下内容,其中dmdsc_cndba 是我们的测试服务名:

[dmdba@dm1 etc]$ cat  /etc/dm_svc.conf 
dave=(192.168.20.191:5236)
dmdsc_cndba=(192.168.20.181:5236,192.168.20.182:5236)
SWITCH_TIME=(10000)
SWITCH_INTERVAL=(10)

TIME_ZONE=(480)
LANGUAGE=(en)
[dmdba@dm1 etc]$

2.3 测试故障自动重连

#连接到DSC:
[dmdba@dm1 ~]$ disql SYSDBA/SYSDBA@dmdsc_cndba

Server[192.168.20.182:5236]:mode is normal, state is open
login used time: 14.725(ms)
disql V7.6.0.95-Build(2018.09.13-97108)ENT 
Connected to: DM 7.1.6.95

#查看当前的连接节点:
SQL> select name from v$instance;

LINEID     NAME
---------- ----
1          RAC1


#直接kill RAC1实例:
[dave@www.cndba.cn2 ~]# ps -ef|grep ini
root         1     0  0 19:39 ?        00:00:00 /sbin/init
root      2320     1  0 19:41 ?        00:00:00 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf
dmdba     2660     1  0 20:07 pts/0    00:00:00 /dm/dmdbms/bin/dmcss DCR_INI=/home/data/dmdcr.ini
dmdba     2720     1  0 20:08 pts/0    00:00:00 /dm/dmdbms/bin/svc_ctl_linux dmasmsvr /home/data/dmdcr.ini
dmdba     2983     1  0 20:14 pts/1    00:00:03 /dm/dmdbms/bin/dmserver /home/data/rac1_config/dm.ini DCR_INI=/home/data/dmdcr.ini -noconsole
root      3765  3742  0 20:21 pts/4    00:00:00 grep ini
[dave@www.cndba.cn2 ~]# kill -9 2983


#还在之前的会话中查询:
#注意这里等待的时间有点长,差不多30秒左右:
SQL> select name from v$instance;
[-70065]:Connection exception, switch the current connection sucessful.
[-70065]:Connection exception, switch the current connection sucessful.

Server[192.168.20.181:5236]:mode is normal, state is open
SQL> select name from v$instance;

LINEID     NAME
---------- ----
1          RAC0

used time: 45.346(ms). Execute id is 3.
SQL>

通过以上测试, 故障自动重连是可以切换的,只是中间的等待时间有点长,dm_svc.conf 参数中设置的SWITCH_INTERVAL=(10)并没有生效。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2239
    原创
  • 3
    翻译
  • 547
    转载
  • 186
    评论
  • 访问:6655813次
  • 积分:4249
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ