注册
数据迁移、集成与监控实践:DTS、DMDRS、DMDIS与DEM
专栏/技术分享/ 文章详情 /

数据迁移、集成与监控实践:DTS、DMDRS、DMDIS与DEM

巨浪 2026/08/28 137 0 0
摘要

第二个月的产品工具学习主要围绕四个名字展开:DTS、DMDRS、DMDIS和DEM。刚开始看时,它们都和“数据”有关,很容易混在一起。真正动手之后,四个工具的边界就比较清楚了:

  • DTS负责一次性迁移,把源库的对象和数据搬到DM;
  • DMDRS负责持续同步,先装载历史数据,再追踪后续增量;
  • DMDIS负责数据集成,通过图形化流程完成文件、数据库之间的抽取、转换和装载;
  • DEM负责运行后的集中监控,把主机和数据库纳入统一管理。
    本文将原来的DMDIS部署、DMDIS操作、DTS迁移、DMDRS同步和DEM部署五份材料合在一起,按“数据怎么进来、怎么搬迁、怎么持续同步、怎么监控”的顺序记录

一、实验环境与工具分工

项目 实验内容
Oracle FREEPDB1,端口1521,源模式DRS_SRC
MySQL dts_src数据库,customer测试表
DM8 本机实例,端口5236
DMDIS 单机模式,管理端口8080
DMDRS cpt_oracle捕获端、exec_dm8执行端
DEM 服务端口32156,dmagent采集端

二、DMDIS单机部署

DMDIS本次采用Windows单机模式。学习环境使用内置元数据库,减少组件数量;正式环境可以按数据规模改用外置DM元数据库,并进一步部署控制器、调度器和执行器。

安装前主要检查:

systeminfo java -version netstat -ano | findstr ":8080" netstat -ano | findstr ":9080"

安装时选择单机模式,使用安装包自带JDK,管理平台端口设置为8080。安装目录避免中文和过长路径。本机启动方式为:

cd /d C:\dmdis5\20260730142800253000\standalone set JAVA_HOME=C:\dmdis5\20260730142800253000\jdk standalone_start.bat

确认8080端口监听后,通过浏览器访问:

http://localhost:8080/

进入“设计—数据源”,新增DM数据源DM_DMDIS_DEMO_NEW,连接127.0.0.1:5236。测试连接成功后,可以在设计器中展开表、视图等对象。

三、DMDIS文件写入DM

第一组流程为FILE_TO_DB_01,把CSV文件写入DM目标表。

源文件包含3条员工数据:

ID,NAME,DEPT,SALARY
1,ZhangSan,DEV,8500
2,LiSi,FIN,7200
3,WangWu,MKT,6800

流程中使用两个节点:

CSV文件读取
→ 字段解析与映射
→ DM表写入

CSV按UTF-8读取,第一行为列名。目标表为DMDIS_DEMO.DIS_FILE_TARGET,四个字段分别映射到ID、NAME、DEPT、SALARY

01dmdisfiletodbflow.jpeg

运行日志显示CSV读取3行、处理3行,目标表插入3行,整个流程耗时约1秒。流程节点全部显示绿色成功状态。

随后在DM管理工具中查询目标表:

SELECT ID, NAME, DEPT, SALARY FROM DMDIS_DEMO.DIS_FILE_TARGET ORDER BY ID;

02dmdisfiletodbresult.jpeg

目标端得到ZhangSan、LiSi和WangWu三条记录,部门及工资与CSV一致。这一组实验走通了最基础的“文件读取—字段映射—数据库写入—SQL校验”闭环。

四、DMDIS将DM数据导出为文件

第二组流程DB_TO_FILE_02反向操作,从DIS_FILE_TARGET读取数据,再输出为CSV。

DM表/视图读取
→ 选择ID、NAME、DEPT、SALARY
→ CSV文件写入

输出文件设置为UTF-8、逗号分隔,并写入列名。

03dmdisdbtofileflow.jpeg

运行日志中,表读取3行、CSV写出3行,流程耗时约1秒。生成的文件为db_to_file_output.csv

04dmdisdbtofilecsv.jpeg

导出后不能只看文件存在,还要打开文件检查列名、数据、分隔符和中文编码。实际结果中3条记录均正常写出。

五、DMDIS多表合并

第三组流程MERGE_TABLES_03把两张结构相同的表纵向合并到一张结果表。

DIS_MERGE_A:2行
        ↘
         联合 → DIS_MERGE_RESULT
        ↗
DIS_MERGE_B:2行

这里的“联合”更接近UNION ALL,不是按照主键连接的JOIN。两路数据的列数量、顺序和类型需要能够对应。

05dmdismergeflow.jpeg

运行日志显示两张源表各读取2行,联合节点处理4行,目标表插入4行。

06dmdismergeresult.jpeg

结果表包含4条记录:张三、李四、王五和赵六。数据量符合:

2行 + 2行 = 4行

如果业务要求去重,不能把“联合”本身当成去重操作,还需要增加去重、聚合或业务主键判断。

六、DMDIS按条件拆分数据

第四组流程SPLIT_TABLE_04把一张源表按地区拆到两张目标表。

源表共4行,其中NORTH两行、SOUTH两行。流程使用两个SQL查询节点:

SELECT ID, NAME, REGION, AMOUNT FROM DMDIS_DEMO.DIS_SPLIT_SOURCE WHERE REGION='NORTH'; SELECT ID, NAME, REGION, AMOUNT FROM DMDIS_DEMO.DIS_SPLIT_SOURCE WHERE REGION='SOUTH';

两路分别写入DIS_SPLIT_NORTHDIS_SPLIT_SOUTH

07dmdissplitflow.jpeg

运行日志显示两个查询节点各读取2行,两个写入节点各插入2行。

08dmdissplitresult.jpeg

图中DIS_SPLIT_NORTH包含客户A和客户C两条数据,地区均为NORTH。SOUTH表按相同方式得到另外两条数据。

四组DMDIS结果可以汇总为:

流程 输入 输出 结果
FILE_TO_DB_01 CSV 3行 DM表3行 成功
DB_TO_FILE_02 DM表3行 CSV 3行 成功
MERGE_TABLES_03 2行+2行 结果表4行 成功
SPLIT_TABLE_04 源表4行 NORTH 2行、SOUTH 2行 成功

七、DTS完成Oracle到DM迁移

DTS主要用于一次性迁移。本次建立ORACLE_TO_DM_01工程,将Oracle FREEPDB1.DRS_SRC.SYNC_GUI_DEMO迁移到DM的DRS_SRC.SYNC_GUI_DEMO

连接信息如下:

Oracle:localhost:1521/FREEPDB1
DM:localhost:5236
源模式:DRS_SRC
目标模式:DRS_SRC

迁移任务包含对象分析、创建模式、创建表、复制数据、添加主键和依赖分析。

09dtsoracletasks.jpeg

运行结果为:

项目 数值
任务总数 6
完成 6
失败 0
迁移数据 5行

DTS页面显示6项任务进度均为100%,执行完成6、失败0。

迁移后在DM目标端查询DRS_SRC.SYNC_GUI_DEMO

10dtsoracletarget.jpeg

目标表得到5条数据,包含3条历史记录和2条后续记录,与Oracle源端对应。

DTS能完成常用表、数据、主键和自增属性迁移,但过程、函数、包、复杂视图、字符语义和Oracle特有类型仍要单独检查。任务全部成功不等于应用已经可以直接切换,源端和目标端还要继续做行数、主键范围、金额汇总和抽样明细校验。

八、DTS完成MySQL到DM迁移

第二个DTS工程为MYSQL_TO_DM_02,将MySQL的dts_src.customer迁移到DM的DTS_SRC.CUSTOMER

源表包含3行,字段包括自增主键、姓名、城市、金额和创建时间。迁移时选择创建模式、创建表、复制数据、添加主键和添加自增列。

11dtsmysqltasks.jpeg
运行结果为任务总数7、完成7、失败0。日志显示复制数据3行,并完成主键和AUTO_INCREMENT自增列处理。

12dtsmysqltarget.jpeg

DM目标表中有张三、李四、王五3条数据,金额和城市信息正常。

MySQL连接如果提示No default drivers found,需要加载匹配版本的Connector/J。工具连接成功后还要确认选中的是业务数据库dts_src,避免连到默认系统库。

九、DMDRS历史数据初始化

DTS解决一次性迁移,DMDRS则继续解决“迁移过程中源库还在写”的问题。

本次DMDRS包含两个模块:

cpt_oracle:连接Oracle并捕获数据
exec_dm8:连接DM并执行数据变化

模式映射为:

FREEPDB1.DRS_SRC.*
→ DRS_SRC.*

增量捕获前,Oracle需要开启归档和补充日志:

SELECT LOG_MODE FROM V$DATABASE; SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

目标执行端和源捕获端启动后,通过drcsl查看状态,并对测试表发起历史装载:

CSL> connect
CSL> show mode
CSL> load cpt_oracle table DRS_SRC.SYNC_GUI_DEMO
CSL> show cpt_oracle load table DRS_SRC.SYNC_GUI_DEMO COMPLETE

13dmdrshistorycomplete.png

截图中cpt_oracle处于运行中,SYNC_GUI_DEMO已装载3行,状态为COMPLETE,耗时2秒。随后在DM目标端查询,3条history-row历史数据已经存在。

十、DMDRS增量同步验证

历史装载后保持cpt_oracleexec_dm8运行。在Oracle源表新增一条测试数据并提交:

INSERT INTO DRS_SRC.SYNC_GUI_DEMO(ID, NAME) VALUES(6, 'increment-live-6'); COMMIT;

14dmdrssourceincrement.png

源端显示已创建1行、提交完成,并能查询到ID=6 / increment-live-6

等待约10秒后,在DM目标端查询:

SELECT ID, NAME, CREATED_AT FROM DRS_SRC.SYNC_GUI_DEMO ORDER BY ID;

15dmdrstargetverify.png

目标端出现新增记录,总行数为6。这个结果说明DMDRS已经完成从Oracle提交事务到DM落库的增量链路。

十一、DEM部署与主机纳管

数据进入DM后,还需要持续观察数据库和主机状态。DEM采用B/S架构,由服务端、存储数据库、浏览器和被管主机上的dmagent组成。

本次部署涉及端口:

32156:DEM Web服务
6364:Agent通信相关端口
5236:DM数据库端口

DEM服务端启动:

cd /d E:\dmdem\bin start.bat netstat -ano | findstr ":32156"

Agent首次使用前生成service.key并启动:

cd /d E:\dmdbs\tool\dmagent start.bat INSTALL_SERVICE_KEY 999999 start.bat

Agent上线后,DEM已经能看到主机和主机告警,但数据库还没有纳入管理。

16demhostonly.jpeg

这个状态说明Agent通信正常,但数据库层还需要单独配置。

十二、DEM数据库节点纳管

在DEM中新增数据库节点,选择已在线的Agent主机,填写DM地址127.0.0.1、端口5236、监控账号和实例名称。保存前分别测试直连和代理连接。

第一次添加后数据库状态显示“未知”。排查内容包括:

  • 5236端口是否监听;
  • 相同账号能否从管理工具连接;
  • Agent是否在线;
  • center_url是否正确;
  • Agent与DEM主机时间是否同步;
  • 数据库账号和启用状态是否填写正确。

等待采集周期并刷新后,数据库状态转为正常:

17demdbnormal.jpeg

最终页面显示:

数据库总数:1
正常运行:1
告警中:0
未知:0
已停止:0

这说明主机上报、Agent采集、数据库连接和DEM展示链路均已打通。

十三、这几组实验里容易踩的坑

14.1 工具运行成功不等于数据正确

DTS显示100%、DMDIS节点变绿,只能说明流程没有报告失败。后面仍要查询目标表,比较行数、主键和实际内容。

14.2 驱动和服务名要对应

Oracle PDB使用服务名FREEPDB1,不能随意当作SID填写;MySQL要加载匹配的Connector/J;DM数据源还要确认实际连接的实例和模式。

14.3 增量同步依赖提交和日志

DMDRS要依赖Oracle归档、补充日志和已提交事务。只插入不提交,目标端不会得到可验收的增量结果。

14.4 DMDIS重复执行要考虑幂等

同一个文件或流程重复执行,可能再次插入相同数据。可以根据业务选择插入更新、目标表覆盖、批次号或主键去重。

14.5 DEM看到主机不代表已经监控数据库

Agent上报主机后,还需要增加数据库节点、测试连接并等待采集周期。数据库“未知”时,按端口、账号、Agent、时间同步和日志逐项检查。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服