注册
达梦数据实时同步软件(DMDRS)学习与实践:从单机到DPC集群的实时数据同步
专栏/技术分享/ 文章详情 /

达梦数据实时同步软件(DMDRS)学习与实践:从单机到DPC集群的实时数据同步

chinuppp 2026/09/04 115 0 0
摘要

前言

最近在系统学习达梦数据库的数据同步技术,本周重点研究了达梦数据实时同步软件(DMDRS)。从环境搭建到同步验证,走了一遍完整的流程,把实践过程和踩过的坑整理成这篇技术博客,希望能给正在学习或使用DMDRS的同学一些参考。

本次实验的目标是:将一台单机达梦DM8数据库的数据,实时同步到一个DPC分布式集群中,验证DMDRS的全量装载、增量同步以及DDL同步能力。

一、什么是达梦数据实时同步软件DRS?

达梦数据复制软件(简称 DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。DMDRS 采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景下的数据复制业务需求。

基于数据复制业务的应用场景,DMDRS 提供数据迁移、数据同步、数据分发和数据转换等功能,而且数据同步功能还支持一对一、双向、一对多、多对一、级联同步、环形同步和 DMDRS 主备等多种同步拓扑结构。

二、实验环境

本次实验采用 单机 DM8 → DPC 集群 的同步拓扑。

3.1 虚拟机信息

虚拟机名称 IP 地址 内存 CPU 硬盘 角色定位
DPC-Master 192.168.233.101 4 GB 2 核 40 GB 主控节点 (MP + SP)
DPC-Node1 192.168.233.102 8 GB 2 核 40 GB 数据节点 (BP1) + 源端单机数据库
DPC-Node2 192.168.233.103 8 GB 2 核 40 GB 数据节点 (BP2)

3.2 数据库软件

项目 源端(单机) 目标端(DPC 集群)
数据库类型 达梦 DM8(单机) 达梦 DM8(DPC 集群)
部署节点 DPC-Node1 (192.168.233.102) DPC-Master + DPC-Node1 + DPC-Node2
集群架构 单机 1 SP + 1 MP + 2 BP(单副本)
实例名 DRS_TEST_SVR DPC 集群实例
节点 DPC 角色 安装组件 DMDRS 承担的职责
DPC-Node1(源端、目标端) BP1 + 源端单机 DMDFM + 代理 ① 管理所有同步链路 ② 捕获单机数据库变更(CPT) ③ 执行写入 BP1(EXEC)
DPC-Master(目标端) MP + SP 仅代理 ① 执行写入协调(EXEC) ② DPC 元数据同步
DPC-Node2(目标端) BP2 仅代理 ① 执行写入 BP2(EXEC) ② 存储同步数据

3.3 DMDFM

项目 说明
管理平台 达梦数据融合管理平台(DMDFM)
部署位置 DPC-Node1 (192.168.233.102)
访问端口 8080
访问地址 http://192.168.233.102:8080

四、部署DRS

1.创建安装目录

在mater、node1、node2执行:在 /data 目录下创建专用的安装目录。将 DMDRS 安装包上传至 /opt 目录,并修改文件所有者和执行权限。

[root@dpc-node1 bin]# mkdir -p /data/dmdrs5 [root@dpc-node1 bin]# chown dmdba:dinstall -R /data/dmdrs5/ [root@dpc-node1 bin]# chmod -R 755 /data/dmdrs5/ [root@dpc-node1 bin]# cd /opt/ [root@dpc-node1 opt]# ls dmdrs_rev218265_x86_rh6_64_20260409.bin [root@dpc-node1 opt]# chown dmdba:dinstall dmdrs_rev218265_x86_rh6_64_20260409.bin [root@dpc-node1 opt]# chmod -R 755 dmdrs_rev218265_x86_rh6_64_20260409.bin [root@dpc-node1 opt]# ll total 1071572 -rwxr-xr-x. 1 dmdba dinstall 1097286216 Aug 31 11:18 dmdrs_rev218265_x86_rh6_64_20260409.bin

image.png

许可证选择 免费试用(3个月有效期,足够测试使用),配置数据库驱动路径为/home/dmdba/dmdbms/bin,代理IP填写各节点本机IP。

登录http://192.168.233.102:8080来进行访问:

image.png

master节点和node2节点也需要安装,但只安装"代理"组件。

Master 和 Node2 上的代理需要指向 Node1 的 DMDFM(192.168.233.102)

2. 启动代理服务

在Master和Node2上,以 root 用户启动代理服务

systemctl start DfmAgentService

启动以后会在代理管理页面看到所有的主机:

image.png

3. 添加数据源

将你的源端(Node1上的单机DRS_TEST库)和目标端(DPC集群)作为数据源添加到平台中,需要提供数据库的IP、端口、用户名和密码等信息。

角色 数据源名称(可自定义) 数据库厂商 主机名/IP 端口 说明
源端 (Source) DRS_TEST_Source DM 192.168.233.102 5238 Node1上的单机测试库
目标端 (Target) DPC_Target DM (192.168.233.101)DPC集群的SP节点IP 5238 DPC集群的主控节点(SP)

image.png

image.png

为什么添加数据源连接的是SP节点,不是BP节点呢?

作为统一入口:所有发往DPC集群的SQL请求,都应该连接到SP节点。SP负责解析和生成分布式执行计划,然后将具体操作分发给后端的BP(数据存储节点)执行。

4. 新建工程

创建一个项目来管理你的同步任务,比如命名为“单机_to_DPC_Test”,并选择“一对一”同步场景。
image.png

DMDFM 推荐模板说明

模板名称 拓扑结构 目标端类型 适用场景
一对一场景 1个源 → 1个目标 达梦数据库 基础数据同步,适用于容灾、备份、读写分离
一对一(DSS)场景 1个源 → 1个目标 达梦数据库(DSS) 源端为达梦DSS集群时的专用同步场景
一对一(Kafka)场景 1个源 → 1个目标 Kafka消息队列 将数据变更实时推送到Kafka,供大数据组件消费
一对二场景 1个源 → 2个目标 数据库 / 消息队列 一份源数据同时同步给两个不同的目标端
二对一场景 2个源 → 1个目标 数据库 将多个业务系统的数据汇聚到一个中心数据库

image.png

image.png

image.png

选择 效果 适合场景
是(转为 模式.*) 以后该模式下新增的表也会自动被同步 希望后续新增表也自动同步,不用反复手动添加
否(保持逐张选择) 只同步当前已经勾选的表,新增的表不会同步 只想同步固定的几张表,新增表需要手动确认后再加

5. 部署服务

完成同步内容添加后,点击“部署服务”,系统会根据配置信息部署DRS服务。

image.png

image.png

出现报错:

DRS-5125同步报错

https://eco.dameng.com/community/question/4a454f14b3ba893a3c278e3db1d1194e

从eco平台上查询,可能的原因是源端的同步表还没有被正确地“加载到字典里”。

image.png

解决方法:

  1. 检查一下源端是否创建了DRS辅助表:
SELECT * FROM DBA_TABLES WHERE TABLE_NAME LIKE 'DRS%';

image.png

  1. 如果没有,找到ddl脚本并执行
    image.png

  2. 执行完成后验证:

    SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME LIKE 'DRS%';

image.png

6. 数据装载:

在装载配置页面,选择装载模式(如全量装载+增量同步+数据迁移),可设置模糊匹配规则或选择具体装载表

image.png

image.png

7. 验证

装载成功后,分别登录源端和目的端数据库,查询T_TEST表:

源端(单机数据库192.168.233.102):
image.png

验证ddl是否同步:

在源端执行 DDL 变更:

ALTER TABLE DMDRS.T_TEST ADD COLUMN REMARK VARCHAR(100); -- 插入一条新记录 INSERT INTO DMDRS.T_TEST (ID, NAME, AGE, CREATE_TIME) VALUES (4, '赵六', 35, SYSDATE);

在目的端查看:
image.png

在目的端插入测试数据:
image.png

在源端查看:
image.png

同步方向验证:
为验证 DMDRS 的同步方向,设计了一个反向同步测试。在目标端 DPC 集群中手动插入一条数据,观察源端是否出现该数据。测试结果显示,目标端插入的数据并未同步回源端,而源端后续插入的数据仍能正常同步到目标端。这证实了 DMDRS 在默认配置下为单向同步工具,数据流向为 源端 → 目标端

8. 总结

通过本周的学习与实践,完成了DMDRS从安装部署到同步验证的完整流程,主要收获如下:

DMDRS基于日志解析,对源库无侵入性,是国产化数据同步场景的可靠工具。

模块化设计(CPT → NET → EXEC)使其支持灵活的同步拓扑,满足多样化业务需求。

DMDRS默认单向同步,数据流向从源端到目标端,适合容灾、读写分离等典型场景。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服