达梦读写分离集群配置应用服务名

1为什么要使用应用服务名

达梦的应用服务名类似oracle集群的vip,当在单个节点实例出现故障时,另外一个实例接管,不会对用户操作有什么影响,让前台用户感觉不到异常,可以想象一个场景,如果应用连接了一个固定的实例的IP,那么相应的应用服务会随着该数据库服务的故障而中断,这就是要使用服务名的原因。达梦通过应用服务名实现故障自动重连,读写分离和均衡负载。

2服务名配置文件(dm_svc.conf)

达梦数据库在不同的平台下安装,dm_svc.conf所在目录有所不同。(未安装 DM 数据库的机器新建即可)

1. 32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;

2. 64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;

3. 32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;

4. 在 Linux 平台下,此文件位于 /etc 目录。

如果在使用的过程中对dm_svc.conf做了修改,需要重启客户端程序,修改的配置才能生效

dm_svc.conf配置示例(读写分离)

# 以#开头的行表示是注释

# 全局配置区

DMRW=(192.168.145.23:5236,192.168.145.25:5236)

TIME_ZONE=(+480) #表示+8:00 时区

LOGIN_ENCRYPT=(0)

DIRECT=(Y)

# 服务配置区

[DMRW]

LOGIN_MODE=(1)#只连主库

SWITCH_TIME=(3) #接口在服务器之间切换的次数

SWITCH_INTERVAL=(10) #服务器之间切换的时间间隔 ,单位为毫秒

RW_SEPARATE=(1) #是否启用读写分离

RW_PERCENT=(0) #读写分离分发比例

关于dm_svc.conf的详细设置,请参考《DM8系统管理员手册》dm_svc.conf章节。

3 配置应用连接串

连接服务名可以在 DM 提供的 JDBC、DPI 等接口中使用,应用连接数据库时指定连接服务名,接口会随机选择 一个 IP 进行连接,如果连接不成功或者服务器状态不正确,则顺序获取下一个 IP 进行连 接,直至连接成功或者遍历了所有 IP。

示例如下:

<DRIVER>dm.jdbc.driver.DmDriver</DRIVER>

<URL>jdbc:dm://DMRW </URL>

4读写分离实现原理

实现读写分离集群的基本思路是:利用备库提供只读服务、无法修改数据的特性,优先将所有操作发送到备库执行,一旦备库执行报错,则发送到主库重新执行。通过备库“试错”这么一个步骤,自然地将只读操作分流到备库执行。并且备库“试错”由接口层自动完成,对应用透明。

读写分离集群数据库连接创建流程:

1. 用户发起数据库连接请求。

2. 接口(JDBC、DPI 等)根据服务名配置(在 dm_svc.conf 中进行配置)登录主库。

3. 主库挑选一个有效即时备库的 IP/Port 返回给接口。

4. 接口根据返回的备库 IP 和 Port 信息,向备库发起一个连接请求。

5. 备库返回连接成功信息。

6. 接口响应用户数据库连接创建成功。

5 JDBC连接测试

5.1 测试环境准备

本次进行jdbc测试,其他请参考

https://eco.dameng.com/document/dm/zh-cn/app-dev/

应用开发常见问题请参考

https://eco.dameng.com/document/dm/zh-cn/faq/faq-java.html

两节点达梦数据库集群

数据库服务器A  192.168.145.23   实例名DM2

数据库服务器B  192.168.145.25   实例名DM3

登录主库创建test用户

create user TEST identified by dameng123;

grant DBA to TEST;

使用TEST用户创建测试表

 

5.2使用主库IP进行数据新增测试

5.3 连接备库ip进行数据新增测试

 

5.4  使用应用服务名进行数据查询测试

 

5.5使用应用服务名进行数据新增测试

5.6 主备库故障切换,使用应用名进行测试

登录监视器,将DM2实例切换成主库

可以看到DM2已经切换成主库

 切换之后,使用应用服务名正常执行

 

 

 

 

posted @ 2022-08-03 16:58  fangzpa  阅读(872)  评论(0编辑  收藏  举报