从 CDC 到同步工程:DMDRS 架构、部署与练习环境建设

📅 2026/7/11 4:44:47
从 CDC 到同步工程:DMDRS 架构、部署与练习环境建设
达梦eco平台快速上手 | 达梦技术文档https://eco.dameng.com/document/dm/zh-cn/start/结合 DMDFM、DMDRS、DMDVS 与两套 DSC 数据源拆解全量装载和增量同步摘要本文从 CDC 与同步软件的区别出发介绍 DMDRS 的 Manager、CPT、DSS、EXEC、CVT、SCHED 等模块说明 DMDFM 管理平台和 DMDVS 校验工具的定位并给出从 .bin 安装、注册代理、创建数据源、设计一对一工程到数据验证和故障排查的完整学习路径。关键词DMDRSCDCDMDFMDMDVSCPTDSSEXEC数据同步一、从“同步软件”到 CDC先把概念说清楚很多人在第一次接触 DRS 时会问CDC 组件是不是同步软件严格来说CDC 是变化数据捕获的技术能力负责识别源端数据库发生的增量变化完整的数据同步软件还需要日志解析、传输、缓存、目标端执行、断点续传、任务管理和数据校验等能力。DMDRS 是一套模块化的数据复制软件CDC 只是其中增量捕获链路的重要环节。一条稳定的数据同步链路通常包含“全量初始化 增量持续同步”。全量阶段把源库已有对象和数据装载到目标库增量阶段持续分析源库日志将新增、修改和删除等操作转换为内部消息再在目标库执行。只有全量没有增量目标库很快会落后只有增量没有一致的初始基线目标库也无法保证数据完整。DRS 的价值不仅是把 A 库的数据复制到 B 库还包括平滑迁移、实时灾备、数据分发、报表分流、数据集成和订阅。同步拓扑可以是一对一也可以扩展为双向、一对多、多对一、级联或环形。不同拓扑下冲突处理、资源容量和运维复杂度差异很大不能只把它理解为“安装一个客户端填写两个数据库地址”。二、DMDRS 模块架构与数据流DMDRS 采用模块化架构。源端、目标端和中间流存储服务可以组合不同模块形成不同能力。理解模块职责后看到日志中的模块名或平台中的服务状态就能快速判断故障位于捕获、存储、传输还是执行环节。模块职责典型部署位置Manager加载和维护功能模块、监听客户端、执行控制命令、校验授权每个 DMDRS 服务CPT全量抽取、同步表字典、日志捕获、日志解析和消息投递源数据库侧DSS按 Topic 持久化存储和分发消息支持高吞吐消费独立流存储服务器EXEC接收全量或增量数据并在目标数据库执行目标数据库侧CVT按自定义规则进行字段、内容和结构转换源端或目标端可选SCHED定时装载、同步、校验、归档清理和守护任务调度服务Console远程连接服务、启停模块、查看统计和修改参数运维终端最常见的一对一同步链路可以表示为源库日志 → CPT 捕获和解析 → 网络传输 → EXEC 应用到目标库。若引入 DSS则消息先由 DSS 持久化再由一个或多个目标 EXEC 消费。DSS 能够缓冲源端与多个目标端之间的性能差异降低某个目标执行缓慢对源端捕获的直接影响但也增加了磁盘容量、运维和延迟评估工作。CVT 并不是每条链路都必须使用。只有需要字段映射、脱敏、格式转换、数据拆分或关联处理时才启用。转换逻辑越复杂越要关注可测试性、错误数据处理和性能。SCHED 则负责把原本需要人工执行的装载、校验和清理任务自动化适合规模化部署后的日常运维。三、DMDFM、DMDRS 与 DMDVS 的关系在大型同步项目中单纯通过命令行维护大量配置文件效率较低。DMDFM 是面向数据复制和数据集成项目的管理平台用于安装配置、拓扑设计、监控运维和代理管理。DMDRS 承担实际的数据捕获、传输与执行DMDFM 更像统一控制和展示平台。DMDVS 是数据校验软件用于比较源端和目标端数据发现不一致。同步任务显示“运行中”不代表数据一定一致因为目标端可能存在历史数据、执行冲突、过滤规则、异常跳过或人工修改。全量结束后、增量稳定后以及重大故障恢复后都应安排校验。练习环境可以在第五台 PC 的麒麟虚拟机上安装 DMDFM 和代理并通过代理向两个 DSC 源端或目标端下发 DMDRS、DMDVS 等组件。这样既能模拟真实项目中的远程部署也能覆盖培训考试常见的“从安装包开始、注册代理、创建数据源、设计工程、启动同步、执行校验”完整流程。四、为什么考试练习环境不应提前装好 DRS如果考试内容包含软件安装和部署提前完成 DRS 安装会让学员失去最关键的练习环节。正确做法是保留一台仅完成操作系统、网络和基础用户配置的 DRS 节点把 .bin 安装包、授权文件和实验手册放在约定目录创建“考前初始快照”。每位学员从安装程序开始操作完成后再回滚。DSC01 和 DSC02 已经搭建成功的基础集群不宜反复修改。它们承担源库和目标库角色时只需要按实验要求创建业务用户、表和归档条件。DRS 节点则用于练习 DMDFM、代理、远程部署、同步工程和校验。把稳定基础设施与可重置练习节点分开可以显著减少环境被误改后整体重建的概率。• 保留安装包原始名称和校验值避免学员使用错误版本。• 统一安装用户、目录和环境变量但不提前执行安装。• 快照名称包含日期、阶段和用途例如“DRS-OS-READY”。• 每次回滚后验证 IP、SSH、时间、磁盘空间和安装包权限。• 同步工程中使用的数据库账号按最小权限原则准备并单独记录。五、.bin 安装前准备与目录权限Linux 环境安装 DMDRS 时应优先使用数据库对应的安装用户。例如目标端为 DM8通常可使用 dmdba 用户安装以减少驱动、环境变量和文件权限问题。安装目录要有足够空间源端还要考虑日志解析缓存、字典文件、归档保留和大事务带来的临时空间。# 示例目录按实际安装包和环境调整mkdir -p /data/dmdrs /data/dmdfm /data/dmdvschown -R dmdba:dinstall /data/dmdrs /data/dmdfm /data/dmdvschmod -R 755 /data/dmdrs /data/dmdfm /data/dmdvs# 安装包权限chown dmdba:dinstall /opt/dmdrs_*.binchmod 755 /opt/dmdrs_*.bin# 切换安装用户并检查环境su - dmdbaulimit -adf -hjava -version 2/dev/null || true授权文件应按照当前版本要求放置并设置正确属主。安装完成后不要立即创建同步工程先确认管理平台、代理和服务进程能够正常启动端口监听正确平台能够发现节点。把“安装成功”和“组件可用”分成两个验收点可以避免后续在创建工程时报错时无法判断是平台问题还是数据库配置问题。版本提示不同版本的安装界面、服务名和默认端口可能变化。博客中的命令只展示准备逻辑具体组件选项和端口应以当前安装包及产品手册为准。六、源端数据库需要满足什么条件增量同步依赖源数据库日志因此源端必须具备可连续分析的日志链路。对于 DM8应确认归档、日志保留、同步账号权限以及 DSC 源端的节点访问方式。若日志在 CPT 尚未解析前被删除就会形成断档任务可能需要重新定位起点严重时需要重新做全量。同步账号权限应覆盖读取数据库字典、访问同步对象和日志分析所需能力但不建议直接长期使用 SYSDBA。培训环境为了降低配置复杂度可以使用高权限账号验证链路验证完成后再收敛权限并形成正式授权脚本。-- 示例检查数据库与归档状态具体视图和权限按版本确认SELECT NAME, STATUS$ FROM V$DATABASE;SELECT * FROM V$ARCH_STATUS;SELECT COUNT(*) FROM USER_TABLES;-- 创建测试表CREATE TABLE DRS_TEST(ID INT PRIMARY KEY,NAME VARCHAR(100),UPDATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP);INSERT INTO DRS_TEST(ID, NAME) VALUES(1, FULL_LOAD);COMMIT;源端是 DSC 时还要确认 DRS 连接的是数据库服务而不是某个临时不可达地址日志获取方式与集群配置兼容所有节点的日志和归档路径满足产品要求。不要把单机数据库的配置经验机械套用到 DSC应按照 DRS 针对 DM8 DSC 的配置说明准备数据源。七、在 DMDFM 中建立一条一对一同步链路一对一同步是最适合初学者的拓扑。建议按“注册节点—创建数据源—测试连接—创建工程—选择对象—设置全量和增量—启动任务—观察状态”的顺序操作。每一步都单独截图或记录结果不要一次性填写所有参数后直接启动。1. 在 DMDFM 中确认源端代理、目标端代理和 DRS 节点均在线。2. 分别创建源数据库和目标数据库数据源填写地址、端口、账号和驱动信息。3. 执行连接测试若失败先在操作系统层使用端口探测和客户端工具验证。4. 创建同步工程选择一对一拓扑明确源端 CPT 和目标端 EXEC 部署位置。5. 选择同步模式、表范围、过滤规则和对象映射。6. 先执行字典/对象准备再执行全量装载并设置增量起点。7. 启动增量同步持续观察延迟、捕获量、执行量和错误队列。数据源测试成功只说明网络和登录基本正常不代表账号具备同步所需的全部权限。工程启动后如果在字典加载、日志捕获或目标执行阶段失败应根据模块定位CPT 报错看源端权限、日志和字典EXEC 报错看目标表结构、约束、数据冲突和目标账号权限网络报错则看两端服务地址、端口和防火墙。八、全量装载与增量同步如何衔接全量装载期间源库可能仍在产生新事务。同步系统需要确定一个一致的增量起点保证全量开始后发生的变化不会丢失也不会被重复执行。实际产品会通过检查点、日志位置和装载分组等机制协调全量与增量。运维人员需要关注的不是手工计算每个日志位置而是确保任务状态完整、日志持续可用、全量失败后能够断点续传或按规则重做。对于大表应评估并发装载线程、网络带宽、目标端写入能力和索引约束。目标表存在大量索引、触发器或外键时全量速度可能明显下降。测试环境可以使用小表快速验证流程正式实施前必须选择与生产数据量接近的样本进行压力测试。全量完成后不要立刻宣布同步成功。先查看 CPT 和 EXEC 的检查点是否持续推进插入、更新和删除多种操作是否都能到达目标端再执行静态或动态校验。只有“全量完成、增量稳定、延迟可接受、校验一致”四项同时满足链路才算完成基本验收。九、同步验证不仅要看一条 INSERT最小验证应覆盖 DML 的不同类型、事务提交和回滚、大字段、批量操作以及异常恢复。只插入一条记录能够验证最基本链路但无法发现更新主键、删除、长事务或目标约束问题。-- 源端执行INSERT INTO DRS_TEST(ID, NAME) VALUES(2, INSERT_TEST);UPDATE DRS_TEST SET NAMEUPDATE_TEST, UPDATE_TIMECURRENT_TIMESTAMP WHERE ID1;DELETE FROM DRS_TEST WHERE ID2;COMMIT;-- 验证回滚不会同步为已提交结果INSERT INTO DRS_TEST(ID, NAME) VALUES(3, ROLLBACK_TEST);ROLLBACK;-- 目标端查询SELECT * FROM DRS_TEST ORDER BY ID;故障恢复验证可以在测试窗口短暂停止目标 EXEC再在源端持续写入数据。恢复 EXEC 后观察积压是否被消费、检查点是否继续推进、目标数据是否完整。若使用 DSS还应验证目标端停止期间 DSS 的磁盘增长和消费恢复速度。数据校验应区分结构校验、行数校验、抽样校验和全量内容校验。行数一致不代表内容一致尤其是更新和删除场景。正式项目可以先做快速统计校验再对关键表执行精确校验对差异记录建立修复流程。十、常见故障与定位方法DRS 故障排查应沿数据流方向进行。先确认源数据库能否连接、CPT 是否能获取字典和日志再确认源端消息是否发送、网络是否通然后确认目标 EXEC 是否接收并执行最后检查目标数据库约束和数据状态。不要一看到目标没有数据就直接重建工程。现象常见原因优先检查数据源测试失败地址、端口、驱动、账号或防火墙错误客户端直连、端口、代理日志字典加载失败账号权限不足、对象不存在、模式选择错误源端权限、表清单、CPT 日志增量不推进归档断档、日志不可访问、检查点异常源端归档、CPT 状态、磁盘空间目标执行报错主键冲突、字段类型不匹配、目标被人工修改EXEC 错误、目标表结构、冲突数据延迟持续升高源端变化量过大、网络慢、目标写入瓶颈捕获速率、发送速率、执行速率任务重启后重复/缺失担忧检查点或断点续传状态未确认任务状态、检查点、校验结果日志是模块化定位的核心。建议为每次故障记录工程名称、模块名称、首次报错时间、错误码、上下文日志和当时的数据库状态。只截取最后一行错误往往无法判断根因至少保留报错前后几十行。磁盘空间不足是容易被忽视的问题。源端字典、缓存和归档DSS 流存储目标端缓存和日志都会消耗磁盘。同步延迟增加时积压数据可能进一步放大磁盘占用形成“执行变慢—积压变多—磁盘更满—服务异常”的连锁反应。十一、双向、一对多和多对一为什么更复杂双向同步允许两端同时产生业务变更但事务在两端的执行顺序无法天然完全一致若两端修改同一主键或同一行就需要明确冲突策略。技术上能搭建双向链路不代表业务数据模型适合双向写入。正式设计前应划分写入范围、站点号、主键生成规则和冲突处置流程。一对多同步会在源端维护多条链路某个目标端慢不应拖垮其他链路。可根据数据量和可靠性要求考虑 DSS把捕获与多个消费者解耦。多对一同步则更容易发生主键冲突和表语义冲突不同源库中合法的相同主键汇总到一个目标库后可能冲突某个源端执行清空表操作也可能影响其他来源的数据。因此拓扑选择应从业务数据所有权出发而不是从产品界面中“能选哪个”出发。先定义谁产生数据、谁有权修改、目标是否只读、冲突如何处理、故障时业务是否切换再设计 DRS 链路。十二、建立可交付的 DRS 实施与运维文档一条同步链路交付时至少应包含拓扑图、节点和端口表、数据源信息、同步对象清单、过滤与映射规则、全量策略、增量起点、校验结果、启停步骤、故障处理和回退方案。培训环境还需要记录快照和重置步骤保证下一位学员拿到的是同一初始状态。日常运维应关注链路状态、捕获与执行检查点、延迟、积压、错误记录、源端归档连续性、DSS 磁盘和目标端冲突。告警不能只看进程是否存在进程存活但检查点停止推进同样属于同步中断。DRS 学习的关键路径是先理解 CDC 和全量/增量关系再掌握 CPT、DSS、EXEC 等模块职责最后通过一条一对一链路把安装、配置、启动、验证和排障串起来。在这个基础上再扩展双向、多目标、转换和主备学习效率会更高。参考资料[1] 达梦技术文档《DMDRS 产品介绍》https://eco.dameng.com/document/dm/zh-cn/start/DMDRS_Product_Introduction.html[2] 达梦技术文档《DMDRS 安装部署》https://eco.dameng.com/document/dm/zh-cn/start/DMDRS_install.html[3] 达梦产品页《达梦数据复制软件 DMDRS》https://eco.dameng.com/info/products/dmdrs