注册
达梦DTS工具数据迁移
技术分享/ 文章详情 /

达梦DTS工具数据迁移

文橘本可 2026/07/31 261 0 0

一、实验背景

本次基于达梦8数据库完成同一服务器、不同端口两个DM实例间同构数据迁移验证

  • 源端实例:localhost:5236,新建测试表DTS并写入测试数据
  • 目标端实例:localhost:5237,空初始实例,无任何自定义数据表
  • 迁移工具:达梦官方自带 DTS图形化数据迁移工具
  • 实验目的:将源端SYSDBA模式下测试表结构、主键、自增序列、业务数据完整迁移至目标实例,熟悉国产化达梦数据库迁移流程。

二、源端测试环境搭建(关键踩坑前置点)

1. 建表与插入测试数据

在端口5236源实例执行SQL:

-- 创建带自增主键、非空约束测试表 CREATE TABLE DTS ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL ); -- 批量插入3条测试数据 INSERT INTO DTS(name) VALUES ('A'),('B'),('C'); -- 本地查询验证数据 SELECT * FROM DTS;

执行后查询窗口可以正常看到3条记录,直观上数据已入库。

⚠️ 核心失误:未执行事务提交 COMMIT;

达梦数据库默认开启自动事务隔离,手动DML插入语句执行后,数据仅存放于当前会话事务缓冲区,并未持久化写入磁盘文件。
在当前查询会话看到数据,未执行 COMMIT; 提交事务,缓冲区数据对数据库全局、其他会话均不可见。

2. 目标端初始状态校验

登录5237端口目标实例执行查询:

SELECT * FROM DTS;

返回错误:-2106:无效的表或视图名[DTS]
说明目标库无该表,迁移前置条件就绪。

三、DTS数据迁移完整配置流程

步骤1:创建迁移工程与任务

打开DTS迁移工具,新建工程,创建迁移任务,迁移方向选择:达梦数据库 → 达梦数据库(DM→DM同构迁移)

步骤2:配置两端数据库连接

  1. 源端连接:localhost:5236,账号SYSDBA,填写登录密码,连通测试通过
  2. 目标端连接:localhost:5237,账号SYSDBA,连通测试通过

本地双实例需保证两个端口正常监听、防火墙无端口拦截。

步骤3:选择待迁移模式

勾选系统默认业务模式 SYSDBA,迁移对象勾选:模式、表、索引、约束、序列、自增属性全部内容;源模式与目标模式均映射为SYSDBA。
QQ20260728091716.png

步骤4:自定义表迁移策略

选中DTS测试表,打开转换配置窗口,核心参数设置:

  1. 迁移内容:表定义、主键、约束、索引、表数据全部勾选
  2. 主键规则:保留原有主键类型,同步自增序列属性
  3. 目标表存在策略:不处理
  4. 开启批量读取、启用标志列,优化迁移读写效率
    QQ20260728091857.png

步骤5:审阅迁移任务汇总信息

系统汇总任务详情:
源库:jdbc:dm://localhost:5236
目标库:jdbc:dm://localhost:5237
迁移对象:1个模式、2张数据表
并发执行数:2,出错后继续执行
参数核对无误后,启动迁移任务。

四、迁移执行结果

  1. 整体耗时344ms,总计7项任务全部执行成功,无失败项
  2. 分步流程:对象分析→建表→拷贝数据→添加主键→同步自增序列全部完成
  3. 迁移日志无报错,流程显示数据拷贝步骤正常执行完毕
    QQ20260728092113.png

五、迁移后校验 & 问题发现

登录5237目标实例执行查询语句:

SELECT * FROM DTS;

现象:
✅ 数据表结构完整存在(字段、主键、自增属性、约束全部迁移成功)
❌ 表内无任何业务数据,0条记录

问题根因追溯

回到5236源端会话复盘:
插入数据之后未执行COMMIT提交事务
DTS工具属于独立外部会话,访问源数据库时只能读取已提交的持久化数据;未提交的事务内临时数据,外部会话无法读取,因此迁移工具仅拉取到表结构,读取不到行数据。

修正操作

  1. 回到源端5236会话执行事务提交:
COMMIT;
  1. 重新执行DTS迁移任务,目标端即可完整同步3条测试数据。

六、实操总结与避坑Tips

1. DTS工具能力总结

  1. 完美支持DM同构迁移,表结构、约束、索引、自增序列可一站式同步
  2. 可视化向导配置简单,迁移日志详尽,便于运维排查问题
  3. 支持本地多实例、跨服务器达梦库搬迁,适配国产化替换场景

2. 必看避坑小贴士

💡 Tip1:达梦DML操作务必提交事务后再执行迁移
达梦默认事务隔离级别为READ COMMITTED,外部迁移工具属于全新数据库会话,只能查询已COMMIT落地磁盘的数据;会话内未提交的临时数据,DTS无法读取,只会迁移空表结构。

💡 Tip2:自增主键表迁移必须勾选序列同步
若未勾选迁移自增序列,目标库自增计数器会从初始值开始,无法接续源端ID顺序。

💡 Tip3:同名表迁移策略按需选择
目标库已有同名表时,可选择:清空已有数据、跳过迁移、报错终止三种模式,避免主键冲突。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服