概述
本文就达梦数据库读写分离原理进行介绍。
达梦读写分离集群特点:
- 可以配置8个即时备库或8个实时备库;
- 读写操作自动分离、负载均衡;
- 提供数据同步;
- 备库故障自动处理,故障恢复自动数据同步等功能,也支持自动故障切换和手动故障切换两种守护模式。
读写分离集群不依赖额外的中间件,而是通过数据库接口与数据库之间的密切配合,实现读、写操作自动分离特性。DM 的 JDBC、DPI、DCI、ODBC、Provider 等接口都可以用来部署读写分离集群。
1.读写分离集群搭建请参考
读写分离集群搭建和主备守护集群搭建步骤一致,请参考下面链接:
DM8守护集群(主备)安装部署_weixin_42942173的博客-CSDN博客
2.主备守护和读写分离集群配置文件区别
主备守护集群和读写分离集群搭建步骤一致,主要是区别在dm_svc.conf 配置文件。
dm_svc.conf 是使用达梦数据库时非常重要的配置文件,它包含了达梦各接口和客户端工具所需要配置的一些参数。
2.1主备守护集群配置
配置示例
##以#开头的行表示是注释#
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMHA=(192.168.100.100:5236,192.168.100.101:5236)
##服务配置
[DMHA]
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)
LOGIN_MODE=(1)
jdbc连接串
jdbc:dm://DMHA
2.2读写分离集群配置
配置示例
##以#开头的行表示是注释
##全局配置区
TIME_ZONE=(480)
LANGUAGE=(cn)
DMRW=(192.168.100.100:5236,192.168.100.101:5236,192.168.100.102:5236)
##服务配置
[DMRW]
LOGIN_MODE=(1)
RW_SEPARATE=(1)
RW_PERCENT=(30)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
RW_SEPARATE
表示是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端进行选择,且只会选择服务名中配置的节点。
RW_PERCENT
表示读写分离分发比例,有效值范围 0~100,主库占所有事物数的比例。可以根据主备库的实际压力来设定。
jdbc连接串
jdbc:dm://DMRW
3.读写分离集群原理
3.1读写分离集群数据库连接创建流程
1. 用户发起数据库连接请求。
2. 接口(JDBC、DPI 等)根据服务名配置(在 dm_svc.conf 中进行配置)登录主库。
3. 主库挑选一个有效即时备库或实时备库的 IP/Port 返回给接口。
4. 接口根据返回的备库 IP 和 Port 信息,向备库发起一个连接请求。
5. 备库返回连接成功信息。
6. 接口响应用户数据库连接创建成功。
3.1读写分离连接创建图
3.2 读写分离集群语句分发流程
1. 接口收到用户的请求。
2. 接口优先将SQL发送到备库执行。
3. 备库执行并返回执行结果。如果接口收到的是备库执行成功消息,则转到第 6 步,
如果接口收到的是备库执行失败消息,则转到第4步。
4. 重新将执行失败的SQL发送到主库执行。只要第3步中的SQL在备库执行失败,
则同一个事务后续的所有操作(包括只读操作)都会直接发送到主库执行。
5. 主库执行并返回执行结果给接口。一旦主库上执行的写事务提交,则下次继续从第
1 步开始执行。
6. 接口响应用户并将执行结果返回给用户。
总结
本文介绍了达梦数据库读写分离集群特点,然后介绍了主备守护集群和读写分离集群配置文件区别,最后介绍了读写分析分离集群原理。
关于达梦数据库更多学习内容,欢迎访问达梦社区:
[https://eco.dameng.com](https://eco.dameng.com)