部署的达梦为dsc集群,依稀记得上一次关库的时候可能异常掉电关机,今天发现无法连接数据库,两个节点disql登录也提示报错[-70028]:创建SOCKET连接失败.想了一下,不是密码变更的问题。

通过查询DmServiceCSS,DmServiceASM日志均未发现故障信息,查询DmServiceDSC日志信息定位发现不能连接达梦服务。
通过 ./DmASMSvrServiceASM0 status ./DmCSSServiceCSS status 发现这两个服务均正常,唯独DmServiceDSC服务已经异常停止,尝试重启DmServiceDSC服务
[dmdba@dm bin]$ ./DmServiceDSC0 status
DmServiceDSC0 is stopped
[dmdba@dm bin]$ ./DmServiceDSC0 start
Starting DmServiceDSC0: connnect dmasmtool(dmasmtoolm) successfully.
[ FAILED][dmdba@dm bin]$
[dmdba@dm bin]$ ./DmServiceDSC0 status
DmServiceDSC0 dead but pid file exists
提示DmServiceDSC0 dead but pid file exists,对管道文件已经存在,但服务异常停止的问题,通过向达梦社区的回答是检查dmserver进程是否存在,如果进程不存在但是达梦程序目录bin/pids下有对应进程文件,则可能是异常原因导致数据库停止,所以大概原因我知道了,去bin/pids下面删除已有的pid文件,由于谨慎心理,没有敢rm掉,而是mv备份一下,然后重新启动
[dmdba@dm pids]$ mv DmServiceDSC0.pid DmServiceDSC0.pid.bak
[dmdba@dm pids]$ cd ..
[dmdba@dm bin]$ ./DmServiceDSC0 start
Starting DmServiceDSC0: connnect dmasmtool(dmasmtoolm) successfully.
[ OK ]
[dmdba@dm bin]$
[dmdba@dm bin]$
[dmdba@dm bin]$ ./DmServiceDSC0 status
DmServiceDSC0 dead but pid file exists
结果还是dead状态,于是干脆删除这个pid文件,再重启服务生成新的pid文件
[dmdba@dm pids]$ ll
total 20
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:48 DmAPService.pid
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:49 DmASMSvrServiceASM0.pid
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:48 DmCSSServiceCSS0.pid
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 15:18 DmServiceDSC0.pid //第一次备份后新生成的pid文件
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 15:07 DmServiceDSC0.pid.bak //备份的pid文件
[dmdba@dm pids]$ rm DmServiceDSC0.pid*
[dmdba@dm pids]$ ll
total 12
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:48 DmAPService.pid
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:49 DmASMSvrServiceASM0.pid
-rw-r--r-- 1 dmdba dinstall 5 Oct 10 14:48 DmCSSServiceCSS0.pid
[dmdba@dm pids]$ cd ..
[dmdba@dm bin]$ ./DmServiceDSC0 status
DmServiceDSC0 is stopped
[dmdba@dm bin]$ ./DmServiceDSC0 start
Starting DmServiceDSC0: connnect dmasmtool(dmasmtoolm) successfully.
[ OK ]
[dmdba@dm bin]$ ./DmServiceDSC0 status
DmServiceDSC0 (pid 3813) is running.
另一个节点也删掉bin/pids的pid文件重新启动服务
服务起来后可以disql登录和远程连接数据库了





