注册
DMHS、DMDRS、DMDVS
专栏/技术分享/ 文章详情 /

DMHS、DMDRS、DMDVS

DM_lll 2026/09/11 10 0 0
摘要

一、DMHS

  • DMHS是⼀个⽀持异构环境的⾼性能、⾼可靠、⾼可扩展的数据库实时同步系统,可⽤于容灾备份、数据移植、联机维护、订阅分发、多业务中⼼等领域。
  • 使⽤DMHS服务时需要在源端数据库和⽬标端数据库同时部署DMHS。
    源端DMHS服务主要包含MGR管理服务模块、LOAD装载模块、CPT⽇志捕获分析模块、NET发送⼦模块。
  • ⽬标端DMHS主要包含MGR管理服务模块和EXEC执⾏模块、NET接收⼦模块。
  • 数据装载模块主要负责数据字典装载、数据库数据装载,将源端同步表的数据字典信息提取出来保存为离线数据字典⽂件以及进⾏初始同步数据的迁移或者数据修复。
  • CPT模块负责将源端数据库⽇志读取解析后发送给⽬标端(通过NET发送⼦模块)。
  • EXEC模块负责接受源端的⽇志(通过NET接收模块)然后在⽬标库执⾏。

1、安装前环境准备

在两台虚拟机分别准备DM8单机数据库,设置静态IP地址。
Vmware虚拟机设置IP方法:
打开‘编辑’—‘虚拟网络编辑器’,点击VMnet8,点击NAT设置,记住子网掩码与网关IP;
image.png
两台虚拟机分别打开并设置/etc/sysconfig/network-scripts/ifcfg-ens33文件;
image.png
image.png
重启网络服务使配置生效:systemctl restart network;
检查IP配置是否成功:ip addr show ens33;
image.png
image.png
测试虚拟机间连通性,在vm1中ping 192.168.178.102,在vm2中ping 192.168.178.101;
image.png
image.png

2、命令行安装dmhs

将dmhs_V4.3.42_dm8_rev218429_rh6_64_20260410_sp2.bin和dmhsFF01181390.key文件传送至两台虚拟机中

Extract install files......... 

1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/home/dmdba/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/home/dmdba/dmhsFF01181390.key
Key文件限制信息如下:
有效日期:2026-12-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:485 MB
安装目录: [/home/dmdba/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:2
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
实时同步服务(DMHS)配置
1.英文(English)
2.简体中文(简体中文)
Dmhs语言[2.简体中文(简体中文)]:
请输入mgr端口号 (1000-65535)[5345]:
请输入信息收集间隔 时间(1-60)秒[3]:
请输入检查点间隔时间(10-65536)秒[60]:
请输入站点id(0-65536):1
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.178.101](192.168.178.101):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.178.101
内置数据库端口[15236](1000-65535):5236
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:QWEasd~123
1.命令行方式
2.系统服务方式
3.脚本服务方式
Dmhs启动方式[2.系统服务方式]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:/home/dmdba/dmdbms/bin:/home/dmdba/dmhs/bin
远程控制服务
1.自动
2.手动
启动方式:[2.手动]1
正在创建远程控制服务
达梦数据实时同步服务
1.自动
2.手动
启动方式:[2.手动]1
正在创建达梦数据实时同步服务
状态监控服务
启动方式:[1.自动]
正在创建状态监控服务
以下配置脚本需要以"root"用户的身份运行.
要执行以下脚本命令:
要执行配置脚本,请执行以下操作:
1.打开终端窗口
2.以"root"身份登录
3.运行脚本命令
/home/dmdba/dmhs/scripts/root/root_installer.sh 

image.png

是否已执行shell脚本?yes/no[no]yes
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log

3、数据库初始化

开启归档⽇志和逻辑⽇志

[dmdba@localhost bin]$ ./disql SYSDBA/QWEasd~123

服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间 : 24.387(ms)
disql V8

# 开启归档⽇志
SQL> alter database mount;
SQL> alter database archivelog;
SQL> alter database add archivelog 'dest = /home/dmdba/dmarch,type = local,file_size = 512,space_limit=1024';
SQL> alter database open;

# 确认归档⽇志开启
SQL> select para_value from v$dm_ini where para_name in ('ARCH_INI');
行号       PARA_VALUE
---------- ----------
1          1
SQL> select value from v$parameter where name = 'ARCH_INI';
行号       VALUE
---------- -----
1          1

# 开启逻辑⽇志
SQL> SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
DMSQL 过程已成功完成
已用时间: 114.563(毫秒). 执行号:1803.
SQL> alter system set 'RLOG_APPEND_LOGIC' = 1;
DMSQL 过程已成功完成
已用时间: 56.012(毫秒). 执行号:1804.
SQL> select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');

行号       PARA_VALUE
---------- ----------
1          1

已用时间: 41.881(毫秒). 执行号:1805.
SQL>

4、DMHS参数配置

(1)源端dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base>
		<lang>en</lang>
		<mgr_port>5345</mgr_port> 
		<ckpt_interval>60</ckpt_interval>
		<siteid>1</siteid>
		<version>2.0</version>
	</base>
	<cpt>
		<db_type>dm8</db_type>
		<db_server>192.168.178.101</db_server>
		<db_user>SYSDBA</db_user>
		<db_pwd>QWEasd~123</db_pwd>
		<db_port>5236</db_port>
		<db_ssl_path></db_ssl_path>
		<db_ssl_pwd></db_ssl_pwd>
		<parse_thr>1</parse_thr>
		<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
		<arch><!-归档清理配置项-->
			<clear_interval>600</clear_interval>
			<clear_flag>0</clear_flag>
		</arch>
		<send><!-- 发送模块配置-->
			<ip>192.168.178.102</ip> <!—执⾏端IP-->
			<mgr_port>5345</mgr_port><!—执⾏端mgr_port -->
			<data_port>5346</data_port><!—执⾏端data_port -->
			<trigger>1</trigger><!-- 是否忽略触发器,默认为0,限定值0,1 -->
			<constraint>1</constraint><!-- 是否忽略约束,默认为0,限定值0,1-->
			<identity>1</identity>
			<net_turns>0</net_turns>
			<filter><!-过滤配置项-->
				<enable><!-- ⽩名单,所有允许同步的表-->
					<item>SYSDBA.*</item>
				</enable>
			</filter>
			<map><!-映射配置项-->
				<item>SYSDBA.*==DMHS.*</item>
			</map>
		</send>
	</cpt>
</dmhs>

(2)目标端dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
	<base>
		<lang>en</lang>
		<mgr_port>5345</mgr_port>
		<ckpt_interval>60</ckpt_interval>
		<siteid>2</siteid>
		<version>2.0</version>
	</base>
	<exec>
		<recv>
			<data_port>5346</data_port>
		</recv>
		<db_type>dm8</db_type>
		<db_server>192.168.178.102</db_server>
		<db_user>SYSDBA</db_user>
		<db_pwd>QWEasd~123</db_pwd>
		<db_port>5236</db_port>
		<db_name></db_name>
		<exec_thr>4</exec_thr>
		<exec_sql>1024</exec_sql>
		<exec_trx> 5000 </exec_trx>
		<exec_rows>1000</exec_rows>
	</exec>
</dmhs>

(3)主要参数解析

  • siteid:站点号,同步节点在同步链路中的唯⼀标识(源端和⽬标端需要不⼀致),取值范围在 1~ 30000
  • lang:语⾔,ch 代表 gb18030 ;ch-utf8 代表 utf8;en 代表英⽂(影响dmhs_server、dmhs_console)
  • mgr_port:服务管理端⼝,取值范围在 1000~ 65535
  • ckpt_interval:检查点间隔,取值范围在 10~ 65535, 默认值 60
  • db_type:数据库类型:DM、ORACLE等
  • db_server:服务名或 IP,服务名可通过/etc/dm_svc.conf配置
  • db_user:数据库⽤户
  • db_pwd:数据库密码
  • db_port:数据库服务端⼝,和 db_server 组合,如果 db_server 使⽤ IP,需要配置。

5、DDL同步配置

在源数据库执行“ddl_sql_dm8.sql”脚本创建触发器和辅助表,脚本默认位置在DMHS执行程序目录下的scripts子目录中

SQL> set define off;
SQL> set char_code utf8;
SQL> start /home/dmdba/dmhs/scripts/ddl_sql_dm8.sql

6、启动目标端

image.png
image.png
image.png

  • 问题:DMHS> start exec CSL[ERROR]: load execute module failure。
    解决:ldd libdmhs_exec.so,将not found的.so文件拷贝到bin目录下。

image.png
image.png

7、启动源端

/home/dmdba/dmhs/bin/DmhsServiceHSSERVER start

image.png
image.png
image.png
image.png

8、创建测试表

在源端创建测试表
image.png
在目标端进行查询
image.png

二、DMDRS

  • DMDRS采用模块化的框架设计,通过灵活搭配不同的功能模块,实现多功能的数据复制服务,以满足多种场景下的数据复制业务需求。
  • DMDRS总体架构主要包括Manager模块、CPT模块、DSS模块、DSSA模块、CVT模块以及EXEC模块等。
  • Manager模块主要负责模块的管理;CPT模块主要实现日志的捕获解析;DSS模块是流式存储引擎模块;DSSA模块是在DSS模块基础上的实现数据订阅功能的模块;CVT模块是数据实时转换模 块;EXEC模块是数据复制执行模块。
  • 各模块可根据复制需求进行灵活搭配,实现不同的功能

1、概述

  • DMDRS的核心工作原理可以概括为:源库产生日志,DMDRS解析日志,目标端执行日志。

  • 源数据库的每一次数据变更都会产生对应的重做日志(Redo Log),每条日志记录都有唯一的LSN(Log Sequence Number)。源端DMDRS从指定的起始LSN开始,持续捕获并解析增量日志,将解析出的INSERT、UPDATE、DELETE以及DDL操作转换为内部消息格式,通过网络发送至目标端;目标端DMDRS接收消息后,在目标数据库中执行相应操作,从而实现数据同步。

2、源端

(1)开启归档
image.png

(2)配置逻辑日志
image.png

(3)创建用户
image.png

(4)创建测试表
image.png

3、目标端

(1)开启归档
image.png

(2)创建用户
image.png

4、DMDRS安装

(1)修改bin文件所属用户
image.png
(2)dmdba运行bin文件
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

(3)准备辅助表信息(DDL同步)
image.png

5、目标端参数设置

(1)jdk环境配置
image.png
(2)DMDPI环境配置
image.png
(3)启动脚本配置
image.png
image.png
(4)exec模块配置
image.png
image.png
image.png

6、源端参数设置

(1)jdk环境配置
image.png
(2)DMDPI环境配置
image.png
(3)启动脚本配置
image.png
image.png

(4)cpt模块配置
image.png
image.png

7、运行同步服务

(1)前台启动目标端服务
image.png
(2)前台启动源端服务
image.png
(3)停止前台服务后启动目标端服务
image.png
(4)停止前台服务后启动源端服务
image.png

8、通过控制台执行同步命令

  • 服务启动后,通过DRS控制台(drcsl)执行同步操作。
    需要先连接DRS的管理端口,LSN(Log Sequence Number)是日志序列号,CPT模块从指定的LSN开始解析日志:
  • 如果不手动设置LSN,CPT模块会从当前最新的LSN开始捕获。手动设置LSN可以控制同步的起始点,在需要重新同步或跳过某些变更时非常有用。
    image.png
    image.png

三、DMDVS

  • DMDVS采用模块化的框架设计,通过灵活搭配不同的功能模块,实现不同的数据校验功能,满足多种场景下的数据校验业务需求。
  • DMDVS总体架构主要包括Manager模块、CMP模块、CMP_DSTB模块和Console远程控制工具。
  • Manager模块是DMDVS的管理模块,主要提供客户监听、CMP模块和CMP_DSTB模块的加载维护及执行控制台命令等功能。CMP模块主要提供数据校验、报告生成、数据修复、备份、还原及进度监控等功能。CMP_DSTB模块是分布式校验的控制中心,负责校验任务的分发与报告生成等。

1、概述

  • DMDVS产品架构:
模块 核心职责
Manager管理模块 负责客户端监听、加载和维护CMP与CMP_DSTB模块,执行控制台命令
CMP模块 提供数据校验、报告生成、修复、备份、还原及进度监控
CMP_DSTB模块 分布式数据校验中心,处理任务分配、结果统计及报告生成
Console远程控制工具 允许用户通过网络远程启动、停止校验任务,监控进度并查看报告
  • DMDVS支持四种核心校验模式,以适应不同场景:
校验模式 适用场景
静态数据校验 数据迁移验证、容灾基线核查——源库与目标库处于静止状态(无写入),校验服务器可同时访问两端
动态数据校验 DMDRS增量同步过程中实时校验,不影响同步性能。需要开启数据库闪回功能(ENABLE_FLASHBACK=1)
单向数据校验 涉密网络与互联网区域数据比对——存在网闸隔离,只能单向通信
分布式数据校验 PB级海量数据、资源受限环境、跨地域多数据中心并行校验
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服