达梦数据库的Data Watch 是一个主从的解决方案,但是该方案没有VIP,如果使用IP直接访问数据库,当主从库发生切换的情况,应用侧连接池需要修改成从库IP地址才能访问新主库。
该问题可以通过达梦的服务名来解决,关于服务名,之前的博客中有介绍:
DM7 达梦数据库 disql 工具连接 数据库的三种方式
https://www.cndba.cn/dave/article/3572
1 配置服务名文件
创建dm_svc.conf文件,添加如下内容,里面填写Data Watch所有的IP地址:
DW_WJS=(*.*.*.11:5236,*.*.*.12:5236,*.*.*.17:5236,*.*.*.18:5236,*.*.*.23:5236,*.*.*.24:5236)
TIME_ZONE=(480)
LANGUAGE=(cn)
LOGIN_ENCRYPT=(0)
LOGIN_MODE=(1)
Rwseparate=(1)
Rwpercent=(10)
===========================================
Rwseparate=(1) 这里表示启用读写分离,适用于读写分离集群,即dmarch.ini 文件里的设置:ARCH_TYPE = TIMELY #即时归档类型才建议使用读写分离,但是读写分离存在脑裂的风险,现在已经不推荐使用该部署架构。
如果是实时主备集群,即dmarch.ini 里设置:ARCH_TYPE = REALTIME #实时归档类型,那么必须设置ARCH_WAIT_APPLY 参数为1, 且主从是自从切换模式才能生效。 否则就会出现主从不同步的情况。 改参数控制:备库收到 Redo 日志后,是否需要重演完成后再响应主库。0 表示收到马上响应(高性能模式),1 表示重演完成后响应(事务一致模式)。配置为即时归档的读写分离集群时,默认值为 1;配置为实时归档的读写分离集群时,默认值为 0。
但是启用ARCH_WAIT_APPLY 在磁盘和网络不好的情况,会影响性能。 所以综合考虑,在达梦DW 主从架构下不推荐使用读写分离。
===========================================
配置读写分离集群
将文件放到应用服务器上:
Linux:将dm_svc.conf文件放在应用服务器/etc目录下。
Windows32位:将dm_svc.conf文件放在应用服务器system32目录下。
Windows64位:将dm_svc.conf文件放在应用服务器system32和syswow64目录下。
2 配置应用连接串
在程序中使用服务名进行连接,示例如下:
<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>
<URL>jdbc:dm:// DW_WJS </URL>
用户使用 DM 的 JDBC、DPI 等接口连接服务器时,如使用配置的连接服务名进行连接,客户端会随机选择一台配置项中 ip 代表的服务器进行连接。如果连接不成功或者服务器状态不正确,客户端将顺序获取下一台(将配置的所有 ip 视为一个环)服务器进行连接,直至连接成功或者全部失败。
使用服务名的方式,就可以解决Data Watch 切换后的访问问题。
版权声明:本文为博主原创文章,未经博主允许不得转载。