注册
读写分离的理解
技术分享/ 文章详情 /

读写分离的理解

狂妄 2025/10/24 108 0 0

一、读写分离集群概述
达梦数据库(DM)的读写分离集群是一种基于即时归档或实时归档实现的高性能数据库集群解决方案。该方案不仅提供数据保护、容灾等基本的数据守护功能,还通过自动分离读写操作、负载均衡等特性,显著提升数据库的业务支撑能力和系统性能。

读写分离集群适用于高并发的事务型系统,特别是在读操作远多于写操作的业务场景下,能够有效降低主库负载,提高系统整体吞吐量。集群通过自动将读操作分发到备库执行,写操作集中在主库执行的方式,实现读写负载的合理分配。

二、核心特性详解
2.1 读写操作自动分离
DM数据库通过JDBC、DPI等接口自动实现读写操作的智能分离:

所有写操作(INSERT、UPDATE、DELETE等)自动路由到主库执行

读操作(SELECT查询)根据配置自动分发到各备库执行

对于需要加锁的读操作(如SELECT FOR UPDATE),自动转发到主库处理

应用程序无需修改代码,透明实现读写分离

2.2 智能负载均衡机制
读写分离集群提供多层次的负载均衡功能:

读操作按照预设算法均匀分配到各个备库节点

支持配置主库承担一定比例的读操作(通过RW_PERCENT参数调节)

自动检测节点负载状态,动态调整流量分配

避免单节点过载,充分利用集群整体资源

2.3 数据同步与一致性保障
集群通过成熟的Redo日志同步机制保证数据一致性:

实时归档模式:Redo日志在写入前发送到备库,确保数据强一致性

即时归档模式:Redo日志在写入后发送到备库,平衡性能与一致性需求

备库通过重演Redo日志与主库保持数据同步

支持事务一致模式,确保读写操作的数据一致性

2.4 高可用性与故障恢复
读写分离集群提供完善的高可用保障:

支持自动和手动两种故障切换模式

主库故障时,备库可快速切换为主库继续提供服务

故障节点恢复后自动重新加入集群

确保数据库服务的连续性和可用性

三、三种集群架构对比分析
3.1 实时主备集群
​核心定位​:基础高可用方案,核心目标是"保活"

由主库和多个实时归档备库组成

主库提供完整数据库功能,备库提供只读服务

故障时备库快速切换为主库,保证服务不中断

适用于对数据安全性要求高的关键业务系统

3.2 MPP主备集群
​核心定位​:实时主备的横向扩展版本,兼顾高可用与大规模处理能力

每个MPP节点配置独立的实时主备系统

各数据守护组保持相对独立运行

单个MPP节点故障不影响整个集群运行

适用于海量数据分析的处理场景

3.3 读写分离集群
​核心定位​:实时主备的负载均衡版本,专注提升系统并发处理能力

在保障高可用性的基础上,实现读写操作自动分离

将读操作自动分流到备库,显著降低主库负载

适用于读多写少的高并发交易型场景

通过事务一致模式保证数据一致性

四、技术实现原理
4.1 Redo日志传输机制
Redo日志是读写分离集群实现的基础:

​实时归档​:Redo日志在写入联机日志文件前发送到备库,确保数据强一致性

​即时归档​:Redo日志在写入联机日志文件后发送到备库,提供更好的性能表现

日志以日志包(RLOG_PKG)为单位通过MAL系统传输

支持最多8个即时备库或实时备库的扩展能力

4.2 日志重演技术
备库通过专业的日志重演机制保持数据同步:

重演服务严格按照Redo日志产生的先后顺序执行

在物理数据页上重新修改数据,确保与主库一致性

采用预解析、预加载技术优化重演性能

支持高并发场景下的高效日志处理

4.3 读写操作分发策略
客户端访问的智能路由机制:

通过dm_svc.conf配置文件中的参数控制读写分离行为

RW_SEPARATE参数启用或禁用读写分离功能

RW_PERCENT参数调节主库承担的读操作比例

接口层自动识别操作类型并路由到合适节点

五、配置与部署指南
5.1 关键配置参数
​dm_svc.conf核心参数配置:​​

复制
RW_SEPARATE=1 # 读写分离开关:0-关闭,1-启用,2-客户端选择
RW_PERCENT=30 # 主库事务比例:0-100,主库承担的读操作比例
5.2 归档模式选择
根据业务需求选择合适的归档模式:

​实时归档(Realtime)​​:要求强一致性,可容忍一定性能损失

​即时归档(Timely)​​:优先考虑性能,可接受微小数据延迟

5.3 集群模式配置
​事务一致性模式选择:​​

​事务一致模式​:备库重演完成后再响应,确保数据强一致性

​高性能模式​:备库收到日志后立即响应,可能存在微小延迟

5.4 备库规模规划
最多支持8个实时或即时备库

根据业务读负载和硬件资源确定备库数量

考虑未来业务增长预留扩展能力

六、应用场景分析
6.1 高并发读操作场景
特别适用于读操作远多于写操作的业务系统:

电商平台的商品查询、订单查询

内容管理系统的文章浏览、搜索功能

社交媒体的信息流展示、用户资料查询

6.2 数据保护与容灾需求
为关键业务系统提供多重数据保护:

金融行业的交易查询系统

政务公共服务信息平台

企业核心业务管理系统

6.3 负载均衡需求
解决高并发下的性能瓶颈问题:

大型互联网应用的用户访问

实时数据分析与报表系统

多租户SaaS服务平台

七、性能优化建议
7.1 参数调优策略
根据业务特点优化关键参数:

读密集型应用:适当降低RW_PERCENT值,将更多读操作分流到备库

写密集型应用:提高RW_PERCENT值,减少主备库间的数据同步压力

混合型应用:通过监控调整找到最佳平衡点

7.2 硬件资源配置
合理的硬件规划提升集群性能:

主库配置较高的CPU和内存资源处理写操作

备库根据承担的读负载配置相应的硬件资源

确保主备库间的网络带宽和延迟满足同步需求

7.3 监控与维护
建立完善的运维监控体系:

定期检查主备库同步状态和延迟情况

监控各节点资源利用率和性能指标

制定应急预案,定期进行故障切换演练

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服