关于达梦数据库问题

知识点之dm_svc.conf的服务文件配置


   主备集群中使用dm_svc.conf连接数据守护中的集群可以实现故障自动重连,如果对配置文件做了修改那么需要重启客户端程序,修改的参数才能生效,或者重启系统操作才能生效
具体参数详解:
LOGIN_MODE=(1)   
##只连接主库、2只连接备库、3选择优先级standby--primary--normal、4选择优先级normal--primary--standby
SWITCH_TIME=3   ##检测到故障后服务器之间切换的次数
SWITCH_INTERVAL=10  ##服务器之间切换的时间间隔,单位毫秒
DIRECT=(Y)    ##是否使用快速装载,Y使用。N不使用
快速装载是按照一定格式排序的文本数据以高效、快速、简单的方式载入到DM数据库中
LOGIN_ENCRYPT=(0)   ##登录是否加密,0为加密
该文件是在客户端上配置的,如果客户端为linux就位于/etc目录下,windows系统位于system32或者system64目录下
具体配置:
DMRW=(ip:port,ip:port)
LOGIN_ENCRYPT=(0)
DIRECT=(Y)
[DMRW]  此参数名要与第一行DMRW保持一致
LOGIN_MODE=(1)
SWITCH_TIME=(3)
SWITCH_INTERVAL=(10)
使用方法:
在bin目录下:
./disql SYSDBA/SYSDBA@DMRW,连接主库
使用manager工具在主机名一行内写“DMRW”,点击连接即可。需要注意的是文件的存放位置,以及在哪台机器上创建。

集群正常却连接不上主库问题解决:

集群使用服务名连接“服务器模式不匹配”、“没有匹配的可登录服务器”问题。

在manager工具中连接会“显示服务器模式不匹配”,在disql中连接会显示“创建socket失败”。在windows客户端通过CMD连接:disql.exe SYSDBA/SYSDBA@DMRW,报错为“没有匹配可登录的服务器”,

  1. 首先怀疑是配置文件dm.ini、dmmal.ini、dmarch.ini、dmwatcher.ini,配置文件都是正确配置,
  2. 怀疑是网络问题,用ping,mobaxterm都可以正常通信,说明网络连接正常,排除网络问题。
  3. 尝试用确认监视器手动切换主备节点,switchover DMSERVER01,将备库变为主库,主库变为备库,重新尝试连接,结果依然失败,排除硬件服务器本身问题。

ll /proc/$(pidof dmserver)/fd | wc -l

就是获取当前dmserver打开文件数有多少。

more /proc/$(pidof dmserver)/limits查看系统资源限制,验证是否由于系统资源限制导致数据库运行不正常。

  1. 问题转移到集群层面的排查,修改dm_svc.conf,只保留服务名配置的那一行,删除所有的局部配置信息,验证连接情况

1)用服务名连接,连接上了备库

2)用ip地址直连主库,反馈“网络通信异常”,无法连接

3)用ip地址直连备库,可以正常连接

加上全局的login_mode=(1)配置后再次连接

1)用服务名连接,反馈“没有匹配的可登录服务器”

2)用ip地址直连主库,反馈“网络通信异常”,无法连接

这个现象也可以作为佐证,确认确实是主库出现了无法连接的问题,因为login_mode=1是强制只连主库;

5.结合控制单一变量dm_svc.conf文件修改之后得到报错不同的结果后,查看数据库实例日志,发现是最大连接数的问题,查看dm.ini中的MAX_SESSIONS配置为1500,为正常配置。

6.查看服务器的连接数:

检查服务器端口的连接数以及通信的ip地址

netstat  -tunaple | grep dmserver

可以详细的看到被使用的端口以及通信的ip地址,得到了连接本机最多的ip地址。

经验证发现是其他的过多连接数据库的会话,杀死客户机连接的进程后,再次执行命令发现连接数少了很多,集群也能够正常连接,通过disql连接数据库后的提示 可以看到是否连接到集群的主库。

守护进程方式完成数据库自动拉起

1.更改dm.ini的参数,需要配置归档,否则启动守护进程会报错

2.配置dmarch.ini

ARCH_WAIT_APPLY = 0 
[ARCHIVE_LOCAL1] 
ARCH_TYPE = LOCAL 
ARCH_DEST = /data/DAMENG/dmarch 
ARCH_FILE_SIZE = 2048 
ARCH_SPACE_LIMIT = 20480 
ARCH_FLUSH_BUF_SIZE = 0
3.配置dmmal.ini 
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔 
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间 
[MAL_INST1] 
MAL_INST_NAME = DMSERVER #实例名,和 dm.ini 中的 INSTANCE_NAME 一致 
MAL_HOST = 127.0.0.1 #MAL 系统监听 TCP 连接的 IP 地址 
MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 
MAL_INST_HOST = 127.0.0.1 #实例的对外服务 IP 地址 
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 
MAL_DW_PORT = 52141 #实例本地的守护进程监听 TCP 连接的端口 
MAL_INST_DW_PORT = 33141 #实例监听守护进程 TCP 连接的端口
 4.配置dmwatcher.ini
修改 dmwatcher.ini 配置守护进程,配置为本地守护类型。
[GRP1] DW_TYPE = LOCAL #本地守护类型 
DW_ERROR_TIME = 10 #远程守护进程故障认定时间 
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 
INST_ERROR_TIME = 10 #本地实例故障认定时间 
INST_OGUID = 453331 #守护系统唯一 OGUID 值 
INST_INI = /data/DAMENG/dm.ini #dm.ini 配置文件路径 
INST_AUTO_RESTART = 1 #打开实例的自动启动功能 
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动 
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭 
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

5.前台启动数据库,设置oguid

Mount 方式启动主库
./dmserver /dm/data/DAMENG/dm.ini mount
SQL>sp_set_oguid(453331);  #需要dmmal.ini中的配置一致

6.启动守护进程

./dmwatcher /dm/data/DAMENG/dmwatcher.ini

7.检查数据库状态

 杀死数据库进程

 查看守护进程是否可以自动拉起数据库实例

 可以看到数据库正常被拉起,数据库进程正常

 更多达梦数据库的使用技巧请见:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值