DMDRS 数据同步与 DMDVS 校验服务部署、验证及故障复盘
2026/8/8 8:20:12 网站建设 项目流程

本文记录 DM8 环境中 DMDRS 的源端/目标端部署、全量装载、增量同步和 DMDVS 一致性校验


1. DMDRS 简介:是什么、做什么、有什么优势

DMDRS(DM Data Replication Service)是达梦数据库提供的数据复制服务,用于在源数据库和目标数据库之间传输、装载并持续同步符合配置范围的数据对象和变更。它不是单纯的数据库备份工具,而是一条由源端捕获、网络传输、目标端执行组成的同步链路。

在本次实验中,DMDRS 先完成 EMPLOYEE、ORDERS 等对象的全量装载,再继续捕获源端的 CREATE、INSERT、INDEX、UPDATE 等操作,使目标端能够获得对应的表结构和数据变化。常见应用方向包括数据迁移、异构或同构环境间的数据同步、容灾建设中的数据复制,以及测试环境的数据持续更新;具体适用范围仍需结合版本、拓扑和业务要求确认。

结合本次 DM8 实验,达梦 DMDRS 的主要优势体现在四点:一是与 DM8 数据库及 DMDFM 管理体系衔接紧密,便于统一查看和管理;二是同步对象和操作类型可以按配置筛选,能够控制复制范围;三是支持全量装载与增量同步组合,适合从初始数据切换到持续同步;四是控制台和 DRS 命令能够查看运行状态、字典加载和错误信息,便于按模块名、服务端口、装载状态逐层定位问题。

说明:DMDRS 负责复制,DMDVS 负责一致性校验,DMDFM 负责图形化管理和代理通信。三者相互配合,但不能相互替代。


2. 方案定位:复制、管理与校验分工

DMDRS 负责源库到目标库的数据复制。源端的 CPT 模块捕获 DDL/DML,目标端 EXEC 模块接收并执行;DMDFM 用于图形化配置和服务管理;DMDVS 是独立的校验服务,用于比较指定对象的数据一致性。

这几个组件不能相互替代:DMDVS 校验失败不等于 DMDRS 一定停止,DMDRS 装载报错也不能靠 DMDVS 自动修复。排查时应先确认是哪一层出现问题。


3. 实验环境与端口

节点

地址

实例 / 组件

端口

源端 drssrc

192.168.80.**

DRSSRC / instance1 / CPT link1

5236 / 5345

目标端 drsdst

192.168.80.**

DRSDST / instance2 / EXEC

5236 / 5346

校验服务

部署在 drsdst

DMDVS + DMDFM Agent

5349 / 19345

5236 是数据库服务端口;5345/5346 是 DMDRS 管理端口;5349 是 DMDVS 服务端口;19345 是 DMDFM Agent。

图 DMDRS 与 DMDVS 的实验拓扑

图 DMDRS 部署状态页面


4. DMDRS 部署教程

步骤 1:准备目录和数据库

源端和目标端分别准备数据库、归档和 DRS 目录,统一交给 dmdba:dinstall 管理。初始化数据库后先正常启动、退出一次,再进入 DRS 配置阶段。

# 源端 drssrc mkdir -p /dmdata/data /dmarch/DRSSRC /data/dmdrs5 chown -R dmdba:dinstall /dmdata /dmarch /data/dmdrs5 chmod -R 755 /dmdata /dmarch /data/dmdrs5 # 目标端 drsdst mkdir -p /dmdata/data /data/dmdrs5 chown -R dmdba:dinstall /dmdata /data/dmdrs5 chmod -R 755 /dmdata /data/dmdrs5

数据库两端保持 DM8 版本、操作系统位数、时区和时间一致。源库启用本地归档和逻辑日志,目标库准备同版本数据库和 DRS 目标实例。

步骤 2:先确认服务,再配置模块

# 源端 ss -lntp | grep ':5345 ' || echo '源端 instance1 未监听' pgrep -af drsvr || echo '源端没有 drsvr' # 目标端 ss -lntp | grep ':5346 ' || echo '目标端 instance2 未监听' pgrep -af drsvr || echo '目标端没有 drsvr' 当前工程中,源端服务名是 instance1,CPT 模块名是 link1;目标端服务名是 instance2。控制台命令必须使用配置中的实际模块名。 cd /home/dmdba/dmdrs5/INST_DRS/instance1 grep -n '<name>' drs.xml grep -nE '<map>|<item' drs.xml

# 典型输出对应
# instance1 = DMDRS 服务
# link1 = CPT 模块
# DRS_TEST.EMPLOYEE==DRS_TEST.EMPLOYEE
# DRS_TEST.ORDERS==DRS_TEST.ORDERS

图 DMDFM 一对一场景中的 DMDRS 两端配置

图 DMDFM 中 link1 同步表映射

5. 全量装载与增量同步教程

步骤 3:设置 LSN 与添加同步表

CPT 首次启动前,先用当前源库日志位置设置增量起点。随后使用真实模块名 link1 添加表并执行 CREATE、INSERT、INDEX 等装载掩码。

# 源端 drssrc / drcsl cd /home/dmdba/dmdrs5/INST_DRS/instance1 ./drcsl
connect 127.0.0.**:5345 alter link1 set lsn alter link1 add table "sch.name='DRS_TEST' and tab.name='EMPLOYEE'" CREATE|INSERT|INDEX alter link1 add table "sch.name='DRS_TEST' and tab.name='ORDERS'" CREATE|INSERT|INDEX show link1 load table running show link1 load table error 小数据量实验中,running 状态可能很快消失,因此必须同时到目标数据库检查表和行数。装载完成且无错误后再执行 start link1。 start link1 show mode # 目标端 DIsql SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE OWNER='DRS_TEST' AND TABLE_NAME IN ('EMPLOYEE','ORDERS'); SELECT COUNT(*) FROM DRS_TEST.EMPLOYEE; SELECT COUNT(*) FROM DRS_TEST.ORDERS;

图 DMDRS 装载状态与同步表结果

步骤 4:执行 DDL 与 DML 实测

对已在映射范围内的 EMPLOYEE 增加 ARTICLE9_TAG 字段,可以验证 DDL 捕获和目标端字段变化。材料中还按教程记录了 DMDRS.TEST 的建表、插入和索引测试。新测试表必须先加入同步映射,否则只能证明源端 SQL 成功。

-- 已映射表的 DDL 测试:源端 ALTER TABLE DRS_TEST.EMPLOYEE ADD ARTICLE9_TAG VARCHAR2(30); -- 教程测试表:源端 DMDRS 用户 CREATE TABLE TEST (ID INT, NAME VARCHAR2(20)); INSERT INTO TEST VALUES (1, 'PP'); INSERT INTO TEST VALUES (3, 'AA'); COMMIT; CREATE INDEX TESTINDEX ON TEST(ID);

图 DMDFM 中 DDL 同步配置

图 源端对 EMPLOYEE 执行 ALTER TABLE 并确认字段

图 源端创建 DMDRS.TEST、插入数据并创建索引

图 目标端确认 DMDRS 用户存在

图 目标端自动出现 TEST 表并查询两行数据

图 源端继续向 TEST 写入同步测试数据

图 目标端查询到新增数据

图 目标端确认 TESTINDEX 状态为 VALID

步骤 5:验证增量 UPDATE

-- 源端 UPDATE DMDRS.TEST SET NAME='PP_UPDATE' WHERE ID=1; COMMIT; -- 目标端 SELECT * FROM DMDRS.TEST ORDER BY ID;

图 源端执行 UPDATE 并提交

图 目标端查询更新后的记录

验证链路应保持单向:源端执行 DDL/DML,目标端只查询结果。目标端手工修改同步表会引入新的差异,影响后续 DMDVS 校验。

步骤 6:部署并执行 DMDVS 校验

DMDVS 安装在 drsdst,复用 192.168.80.**:19345 的 DMDFM Agent,服务端口为 5349,缓存目录为 /home/dmdba/dmdvs_cache,DM8 依赖路径为 /home/dmdba/dmdbms/bin。

# drsdst mkdir -p /home/dmdba/dmdvs /home/dmdba/dmdvs_cache chmod 755 /home/dmdba/dmdvs /home/dmdba/dmdvs_cache ss -lntp | grep -E ':19345 |:5349 |:5236 ' || true

配置项

本次值

主机 / 服务

192.168.80.**/ 校验服务

安装 / 缓存

/home/dmdba/dmdvs / /home/dmdba/dmdvs_cache

Agent

192.168.80.**:19345,复用已有代理

服务端口

5349

校验规则

DRS_TEST.EMPLOYEE==DRS_TEST.EMPLOYEE;DRS_TEST.ORDERS==DRS_TEST.ORDERS

DMDVS 校验成功的判定是:服务在线、规则能够识别对象、任务执行完成且差异为 0。校验成功后仍应保留任务记录和结果截图,作为部署验收证据。

图 DMDVS 远程安装成功页面

图 DMDVS 校验服务详情页面

图 DMDVS 校验任务成功页面


7. 常见错误与定位顺序

错误 / 现象

根因

定位与处理

DRS-3008:模块未找到

把教程中的 cpt_dm8 当成当前模块名

grep drs.xml;用实际的 link1 替换命令中的模块名

DRS-5125:离线字典加载失败

未完成 add table,或字典未被 link1 加载

show dict;set lsn;add table;检查装载后再 start link1

DRS-6165:目标端表已存在

重复装载且未使用 DROP

先查询对象;实验表可清场重装,业务表不要直接 DROP

页面显示 0 张表

服务、模块、字典或页面状态不一致

先查 5345/5346、drsvr、show mode、show dict,不要先反复点识别表

DMDVS 校验失败

代理、服务端口或校验规则不一致

先查 19345/5349,再核对 DRS_TEST 模式和表名规则

操作原则:任何有副作用的操作先查状态;先确认主机、用户和提示符,再执行命令;源端做写操作,目标端做查询;遇到错误先看错误码对应的层级,不要把 DMDVS、DMDFM 和 DMDRS 的问题混为一谈。


8. 验收清单

检查项

通过标准

源端 instance1

5345 监听,drsvr 存在,link1 运行

目标端 instance2

5346 监听,drsvr 存在,目标表可查询

全量装载

目标端表结构和数据量与源端一致

增量同步

INSERT / UPDATE / DELETE 在目标端得到相同结果

DDL 同步

ARTICLE9_TAG 或 TESTINDEX 在目标端可核对

DMDVS

校验任务成功,差异数据为 0

参考资料

  1. 达梦技术文档:《DMDRS 产品介绍》
    产品介绍 | 达梦技术文档
  2. 达梦技术文档:《DMDRS 安装部署》
    安装部署 | 达梦技术文档
  3. 达梦技术文档:《DMDRS 功能特性》
    功能特性 | 达梦技术文档
  4. 达梦技术文档:《DMDFM 平台介绍》
    平台介绍 | 达梦技术文档
  5. 达梦数据库:《达梦数据校验软件 DMDVS》
    达梦数据校验软件 | 达梦数据库
  6. 达梦技术文档:《DMDRS 常见问题》
    DMDRS常见问题 | 达梦技术文档
  7. 达梦技术社区:《DMDRS 安装文档》
    DMDRS安装文档 | 达梦技术社区

THE END

达梦社区地址:https://eco.dameng.com

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询