注册
实时同步软件DMDRS基础使用
专栏/技术分享/ 文章详情 /

实时同步软件DMDRS基础使用

Ariamaru 2026/07/17 240 0 0
摘要

达梦数据实时同步软件DMDRS基础使用

在数据库系统的日常运维中,数据同步是一项高频需求——无论是构建容灾备份系统、实现读写分离,还是在系统升级迁移过程中保持业务不中断,都离不开高效、可靠的数据同步工具。达梦数据实时同步软件(DMDRS)正是为此而生的一款企业级产品。

本文将从DMDRS的基本原理出发,逐步深入到部署配置、同步场景和性能调优,帮助读者建立从理论到实践的完整认知。

一、DMDRS是什么?

达梦数据实时同步软件(DMDRS)是达梦数据库官方推出的数据复制工具,支持同构及异构数据库之间的数据实时同步。它采用基于日志的结构化数据复制技术,不依赖源数据库的触发器或规则,对源数据库系统几乎无影响,能以极少的系统开销实现秒级甚至亚秒级的数据实时同步。

DMDRS支持多种复制拓扑结构,包括一对一、双向、一对多、多对一、级联以及环形同步等,可广泛应用于应急系统、容灾备份、负载均衡、数据迁移、联机维护、订阅分发、多业务中心等业务场景。

与传统的DTS迁移工具不同,DTS通常要求在迁移过程中停机以防止数据不一致,而DMDRS通过全量装载与增量同步的组合,能够在不需要长时间停机的情况下完成数据迁移。

二、核心原理:日志驱动,模块化协同

DMDRS的核心工作原理可以概括为一句话:源库产生日志,DMDRS解析日志,目标端执行日志

具体来说,源数据库的每一次数据变更都会产生对应的重做日志(Redo Log),每条日志记录都有一个唯一的LSN(Log Sequence Number)。源端DMDRS从指定的起始LSN开始,持续捕获并解析增量日志,将解析出的INSERT、UPDATE、DELETE以及DDL操作转换为内部消息格式,通过网络发送至目标端;目标端DMDRS接收消息后,在目标数据库中执行相应操作,从而实现数据同步。

为了实现这一流程,DMDRS采用了模块化设计,主要包含以下核心模块:

模块 全称 核心职责
MGR Manager管理模块 解析配置参数,加载和维护其他模块,提供客户端监听与控制命令执行
CPT 捕获模块 对源数据库增量日志进行捕获与解析,结合数据字典提取数据变化,转换为内部消息格式
LOAD 装载模块 完成同步表的字典装载和全量数据的初始装载
NET 传输模块 承担节点之间数据的收发任务,分为接收子模块(RECV)与发送子模块(SEND)
EXEC 执行模块 接收CPT模块发送的增量数据,在目标数据库中进行应用

这些模块统一由MGR管理,通过灵活配置不同的模块组合,DMDRS可以实现数据迁移、数据同步、数据分发和数据转换等多种功能。

三、部署前的准备工作

在部署DMDRS之前,源数据库和目标数据库需要进行一些必要的配置。

3.1 开启归档日志

DMDRS依赖数据库的归档日志来捕获数据变更,因此需要确保归档功能已开启。在dm.ini中设置ARCH_INI = 1,并配置dmarch.ini文件指定归档路径。

3.2 开启逻辑日志

RLOG_APPEND_LOGIC参数控制逻辑日志中记录的信息量,其取值含义如下:

  • 1:如果有主键列,UPDATE和DELETE操作只记录主键列信息;若无主键列则记录所有列信息
  • 2:不论是否有主键列,UPDATE和DELETE操作都记录所有列信息
  • 3:UPDATE记录更新列信息及ROWID,DELETE仅记录ROWID

一般情况下设置为1即可满足多数同步需求。

3.3 创建同步用户

需要在源库和目标库分别创建DMDRS专用的数据库用户,并授予必要的权限。源端至少需要SELECT权限(以及对待同步表的查询权限),目标端则需要INSERTUPDATEDELETE等写入权限。

3.4 配置DDL同步(可选)

如果应用场景需要同步DDL操作(如CREATE TABLE、ALTER TABLE等),需要在源库执行DDL辅助脚本。DMDRS支持触发器方式和系统表方式两种配置,单库或DSC场景推荐使用触发器方式。

四、一对一单向同步:最典型的应用场景

一对一单向同步是DMDRS最基础也是最常用的同步模式——将源数据库的数据通过DMDRS单向同步到目标数据库,广泛应用于实时备份、报表服务和双业务中心等场景。

4.1 部署步骤

一对一单向同步的部署通常包含以下步骤:

  1. 检查数据库配置:确认归档日志和逻辑日志已开启,DDL触发器(如需)已创建
  2. 准备DMDRS配置文件:编辑drs.xml(或exec.xml)配置文件,填写源库、目标库及同步参数
  3. 启动DMDRS服务:分别在源端和目标端启动DMDRS服务
  4. 设置起始LSN,开始同步:指定从哪个LSN开始解析日志,启动同步任务

4.2 关键配置参数

在一对一单向同步的配置中,有几个参数需要特别关注:

mgr_port :Manager管理模块的监听端口号,用于DMDRS服务的客户端连接和模块间通信。

siteid :服务站点号,必须保证全局唯一。DMDRS需要根据siteid在数据库中创建辅助表来记录同步状态,如果不同链路的siteid重复,会造成数据复制的混乱。一个DMDRS服务对应一个siteid,在多链路场景下尤其需要注意规划。

login :配置源数据库和目标数据库的连接信息,包括IP、端口、用户名、密码等。

group :表分组信息。可以将不同表配置到不同的分组中,每个分组可以使用独立的优化参数。分组id=0的为默认分组。

send :配置日志解析后发送到哪个目标DMDRS服务,以及过滤和映射规则。

4.3 目标端分组参数调优

在实际同步中,性能瓶颈往往出现在目标端的入库阶段。通过合理配置目标端的分组参数,可以显著提升同步效率。

exec_policy :控制事务能否拆分并发执行。当设置为0时,允许事务以表为单位进行拆分,然后多线程并发执行,从而大幅提升入库吞吐量。

无主键/唯一索引表的处理:如果同步的表不存在主键或唯一索引,UPDATE和DELETE操作的性能可能相对较差。针对这种情况,可以采取以下两种策略:

  1. 单独分组:为这类表单独配置一个同步分组,与其他表分离,避免影响整体同步性能
  2. ROWID映射:使用ROWID映射功能,维护源库到目标库的ROWID映射关系表。该功能需要占用本地磁盘缓存,空间占用与表的行数成正比

4.4 同步错误处理策略

在同步过程中,可能出现两类错误:一是数据不一致(如UPDATE的行在目标端不存在),二是执行顺序错误(如INSERT之前UPDATE就先执行了)。DMDRS提供了三种错误处理策略:

  • error_policy(0) :报错并保存出错的操作,DMDRS服务主动core。需要人工分析出错原因、修复数据后再恢复同步
  • error_policy(1) :报错并保存出错的操作,然后跳过该操作继续同步。后续可以根据操作信息手动修复或使用对比工具进行修复
  • error_policy(2) :智能错误合并。如果有主键/唯一索引,采用错误合并方式重新执行且不报错——INSERT违反唯一约束时转换为UPDATE,UPDATE更新不到行时转换为INSERT,DELETE不到行时忽略

五、全量装载与增量同步的无缝衔接

DMDRS的一个核心能力是支持动态装载——在同步过程中允许装载或重装表,而无需停止源端DMDRS服务。

5.1 装载与同步的关系

源端DMDRS的日志解析是基于表字典的——只有存在字典的表才会被解析并同步到目标端。装载表的时候,会同时添加表字典信息。

源端DMDRS的装载和日志解析是相对独立的两个功能。一旦源端DMDRS处于start状态(即正在解析日志),只要添加了表字典,就能立即解析到该表的操作并发送至目标端。

5.2 装载掩码

在配置装载任务时,可以通过装载掩码(Load Mask)来控制装载行为:

GROUP :对于规模较大的表,使用group掩码将表按照ROWID范围进行分组,多线程并行装载同一张表,显著提升装载性能。

FLASHBACK :如果源端表存在业务访问,使用加S锁的方式装载可能无法成功,此时可以使用闪回方式进行装载,避免阻塞业务。

FAST :使用快速装载功能,目标端DMDRS采用DPI的FLDR系列接口或OCI的DIRPATH系列接口进行入库,大幅提升装载速度。

ROWID :使用ROWID映射功能,需要在目标端进行相应配置。

5.3 装载期间的同步数据缓存

装载开始时,源端会通知目标端DMDRS。如果在装载期间收到了装载表的增量操作,目标端会先将其缓存起来而不入库,等到装载完成后再恢复入库。表在装载期间及装载之前产生的日志操作,在目标端入库前会进行过滤筛选,从而保证最终数据的一致性。

这种设计使得全量装载和增量同步可以无缝衔接,在业务不中断的前提下完成数据的完整同步。

六、性能分析与调优

6.1 工作线程状态分析

一般情况下,DMDRS的同步性能瓶颈在目标端DMDRS的入库阶段。DMDRS提供了THR命令来查看目标端工作线程的状态。

通过分析工作线程状态,可以定位入库性能瓶颈所在。

如果发现某个线程长时间处于执行状态可以这样检查:

image.png

6.2 常见调优方向

基于工作线程状态的分析结果,可以从以下几个方向进行调优:

  1. 调整分组策略:将大表或热点表单独分组,避免相互影响
  2. 优化目标端数据库:调整目标数据库的写入参数(如检查点间隔、日志缓冲区大小等)
  3. 增加并行度:适当提高目标端的并发执行线程数
  4. 使用快速装载:对于大批量数据装载场景,启用FAST装载掩码

七、总结

DMDRS作为达梦数据库官方配套的数据复制工具,通过基于日志的结构化数据复制技术模块化的架构设计,实现了对源库几乎无侵入的高效数据同步。从原理上看,它遵循“日志捕获 → 消息传输 → 目标执行”的基本链路;从部署上看,它支持一对一、双向、一对多、多对一、级联、环形等多种拓扑结构;从调优上看,它提供了分组并发、错误策略、装载掩码等一系列精细化控制手段。

无论是在线迁移、实时备份、读写分离,还是多业务中心的数据分发,DMDRS都能提供一套可靠且高效的解决方案。理解其工作原理和关键参数,是保障数据同步链路稳定运行的基础。
https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服