最近在系统学习达梦数据库的数据同步技术,本周重点研究了达梦数据实时同步软件(DMDRS)。从环境搭建到同步验证,走了一遍完整的流程,把实践过程和踩过的坑整理成这篇技术博客,希望能给正在学习或使用DMDRS的同学一些参考。
本次实验的目标是:将一台单机达梦DM8数据库的数据,实时同步到一个DPC分布式集群中,验证DMDRS的全量装载、增量同步以及DDL同步能力。
达梦数据复制软件(简称 DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。DMDRS 采用模块化的设计,通过灵活配置不同的功能模块,实现多功能的数据复制服务,以满足多种场景下的数据复制业务需求。
基于数据复制业务的应用场景,DMDRS 提供数据迁移、数据同步、数据分发和数据转换等功能,而且数据同步功能还支持一对一、双向、一对多、多对一、级联同步、环形同步和 DMDRS 主备等多种同步拓扑结构。
本次实验采用 单机 DM8 → DPC 集群 的同步拓扑。
| 虚拟机名称 | 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) |
| 项目 | 源端(单机) | 目标端(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) ② 存储同步数据 |
| 项目 | 说明 |
|---|---|
| 管理平台 | 达梦数据融合管理平台(DMDFM) |
| 部署位置 | DPC-Node1 (192.168.233.102) |
| 访问端口 | 8080 |
| 访问地址 | http://192.168.233.102:8080 |
在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
许可证选择 免费试用(3个月有效期,足够测试使用),配置数据库驱动路径为/home/dmdba/dmdbms/bin,代理IP填写各节点本机IP。
登录http://192.168.233.102:8080来进行访问:
master节点和node2节点也需要安装,但只安装"代理"组件。
Master 和 Node2 上的代理需要指向 Node1 的 DMDFM(192.168.233.102)
在Master和Node2上,以 root 用户启动代理服务
systemctl start DfmAgentService
启动以后会在代理管理页面看到所有的主机:
将你的源端(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) |
作为统一入口:所有发往DPC集群的SQL请求,都应该连接到SP节点。SP负责解析和生成分布式执行计划,然后将具体操作分发给后端的BP(数据存储节点)执行。
创建一个项目来管理你的同步任务,比如命名为“单机_to_DPC_Test”,并选择“一对一”同步场景。
| 模板名称 | 拓扑结构 | 目标端类型 | 适用场景 |
|---|---|---|---|
| 一对一场景 | 1个源 → 1个目标 | 达梦数据库 | 基础数据同步,适用于容灾、备份、读写分离 |
| 一对一(DSS)场景 | 1个源 → 1个目标 | 达梦数据库(DSS) | 源端为达梦DSS集群时的专用同步场景 |
| 一对一(Kafka)场景 | 1个源 → 1个目标 | Kafka消息队列 | 将数据变更实时推送到Kafka,供大数据组件消费 |
| 一对二场景 | 1个源 → 2个目标 | 数据库 / 消息队列 | 一份源数据同时同步给两个不同的目标端 |
| 二对一场景 | 2个源 → 1个目标 | 数据库 | 将多个业务系统的数据汇聚到一个中心数据库 |
| 选择 | 效果 | 适合场景 |
|---|---|---|
| 是(转为 模式.*) | 以后该模式下新增的表也会自动被同步 | 希望后续新增表也自动同步,不用反复手动添加 |
| 否(保持逐张选择) | 只同步当前已经勾选的表,新增的表不会同步 | 只想同步固定的几张表,新增表需要手动确认后再加 |
完成同步内容添加后,点击“部署服务”,系统会根据配置信息部署DRS服务。
DRS-5125同步报错
https://eco.dameng.com/community/question/4a454f14b3ba893a3c278e3db1d1194e
从eco平台上查询,可能的原因是源端的同步表还没有被正确地“加载到字典里”。
SELECT * FROM DBA_TABLES WHERE TABLE_NAME LIKE 'DRS%';
如果没有,找到ddl脚本并执行
执行完成后验证:
SELECT TABLE_NAME FROM DBA_TABLES WHERE TABLE_NAME LIKE 'DRS%';
在装载配置页面,选择装载模式(如全量装载+增量同步+数据迁移),可设置模糊匹配规则或选择具体装载表
装载成功后,分别登录源端和目的端数据库,查询T_TEST表:
源端(单机数据库192.168.233.102):
在源端执行 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);
在目的端查看:
在目的端插入测试数据:
在源端查看:
同步方向验证:
为验证 DMDRS 的同步方向,设计了一个反向同步测试。在目标端 DPC 集群中手动插入一条数据,观察源端是否出现该数据。测试结果显示,目标端插入的数据并未同步回源端,而源端后续插入的数据仍能正常同步到目标端。这证实了 DMDRS 在默认配置下为单向同步工具,数据流向为 源端 → 目标端。
通过本周的学习与实践,完成了DMDRS从安装部署到同步验证的完整流程,主要收获如下:
DMDRS基于日志解析,对源库无侵入性,是国产化数据同步场景的可靠工具。
模块化设计(CPT → NET → EXEC)使其支持灵活的同步拓扑,满足多样化业务需求。
DMDRS默认单向同步,数据流向从源端到目标端,适合容灾、读写分离等典型场景。
文章
阅读量
获赞
