1、简介
目标:高并发的事务性系统中,读多写少,将读事务转移到备机执行,减少单节点的并发压力
系统事务特征:
纯读操作的事务全部在备机执行
纯写操作的事务全部在主机执行
既有读又有写的事务,从写事务开始全部再主机执行。
读写分离集群和主备集群的主要区别:
适用场景不同:读写分离聚焦负载均衡,主备聚焦容灾备份
归档方式不同:读写分离是Timely, 主备是Realtime
应用访问连接串不同:读写分离:jdbc:dm://DM_RWC?rwSeparate=1&rwPercent=25; 数据守护:jdbc:dm://DM_DW
2、配置方式
前提:搭建好主备集群
基于主备集群修改
归档方式dmarch.ini配置文件:需要重启数据库才生效
将ARCH_TYPE 由REALTIME(实时主备) 改为 TIMELY(读写分离)
配置文件dm_svc.conf
它包含了达梦各接口和客户端工具所需要配置的一些参数。通过它可以实现达梦各种集群的读写分离和均衡负载,且必须和接口/客户端工具位于同一台机器上才能生效。因此在安装监视器的服务器下配置该文件。
一般安装DM数据库时会生成,linux 服务器上该文件存在目录/etc下面。如果/etc下没有,则手动创建一个。
dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置所有的配置项,服务配置区在后,以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区(服务配置区的相同配置项会覆盖全局配置区对应的配置项)。
其中服务名的作用时可以再url串中替代IP地址 连接整个集群,可以根据需要,设置成别的名字。
# dm_svc.conf 配置示例
TIME_ZONE=(480)
LANGUAGE=(en)
# 首先定义服务名
dmdw1=(172.20.10.2:5236,172.20.10.4:5236)
[dmdw1]
# 然后配置参数
LOGIN_MODE=(1)
RW_SEPARATE=(1)
RW_PERCENT=(0)
SWITCH_TIME=(60)
SWITCH_INTERVAL=(1000)
参数说明
TIME_ZONE和LANGUAGE分别对应操作系统时区和语言;
LOGIN_MODE:
0-优先连接PRIMARY模式的库, Normal模式次之,最后选择STANDBY模式;
1-只连接主库;
2-只连接备库;
3-优先连接STANDBY模式的库,PRIMARY模式次之,最后选择NORMAL;
4-有限连接NORMAL模式的库,PRIMARY模式次之,最后选择STANDBY模式。
dmdw1=(IP1:5235,IP2:5235)标识一个服务名为dmdw1,把主机和备机都集成到一个服务名字dmdw1,可以在disql登录时使用服务名替换url串中的IP地址,从而连接整个集群;
RW_SEPARATE=1,表示开启读写分离;0-表示不启用, 2-启用,备库由客户端进行选择。
RW_PERCENT=100,0~100表示将只读任务分发给备库的比例,可以根据主备库的实际压力来设定。
SWITCH_TIMES: 表示以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。
SWITCH_INTERVAL:表示在服务器之间切换的时间间隔,单位为毫秒,有效值范围 1~9223372036854775807。
达梦社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台