DMHS介绍及部署

一、DMHS系统组成

DMHS 同步服务主要包括四个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输模块(NET)以及执行模块(EXEC),这些模块统一由管理模块(MGR)进行管理执行,管理模块(MGR)是 DMHS 同步服务的启动框架,根据配置文件加载并启动相关的功能模块。

1.1捕获模块(CPT)

对源数据库增量日志进行捕获并完成解析,结合数据字典信息提取其中数据的变化如插入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),然后将这些操作及数据转换为内部的消息格式投递给网络(NET)模块。

CPT 模块对应配置文件中的 XML 元素为 cpt,即 CPT 模块的所有参数都是作为 cpt 元素的子元素存在,这些子元素的值就是对应 CPT 模块参数的参数值。XML 配置文件 cpt 元素中除了 CPT 模块的参数设置,还包含了 CPT 模块需调用的 NET 发送子模块参数配置,以 send 元素作为标识。

1.2装载模块(LOAD)

DMHS 在进行增量数据同步之前,需完成同步表的字典装载和表数据的初始装载。数据初始装载用于将源端数据库的初始数据同步至目标数据库,使得源库和目标库的初始数据保持一致。

数据初始装载的有两种方式:直接的数据装载方式和备份文件装载方式。备份文件装载方式要求源库和目标库为同一类型的数据库系统,目前 DMHS 仅支持 DM 数据库的备份文件装载方式。

初始装载使用 LOAD/COPY 控制台命令,该命令可以在不中断源数据库服务的情况下把源表初始基础数据装载到目的库上,同时配合日志分析模块完成该表后续的增量数据同步。初始装载模块不能跟日志分析模块同时运行,在执行 COPY 命令时,必须首先使用 STOP CPT 命令停止日志捕获分析模块的运行。

1.3传输模块(NET)

传输模块 NET 应用于捕获器 CPT、路由器 ROUTE、转发器 TRANSFER、执行器 EXEC,分为接收子模块(RECV)与发送子模块(SEND),在同步中承担节点之间数据的收发任务。

1)日志捕获 CPT 模块需要通过 NET 模块来发送数据。

2)EXEC 模块则需要通过 NET 模块接收数据。

3)ROUTE 通过 NET 模块进行消息转发。

4)TRANSFER 通过 NET 模块进行消息转发。 同步链路中多对一、一对多和多对多的数据传输都是通过 NET 模块来实现的。RECV 子模块与 SEND 子模块在 DMHS 配置文件中的位置如下所示

(1)NET 消息发送子模块

经过 CPT 捕获到的日志操作,在这里进行分发,分发前可以对操作进行过滤,或者对表进行过滤和映射,还可以对消息中的列进行映射(改名、剔除和函数计算)。经过处理的消息通过网络(TCP/IP)发送给下一级,或者保存到本地文件。

(2)NET 消息接收子模块

经上一级 NET 消息发送子模块通过网络传输的消息,在这里由 NET 消息接收子模块通过网络(TCP/IP)接收并发送给 EXEC 模块。而上一级 NET 消息发送子模块保存消息的本地文件目录,既可以是一般的本地文件目录,也可以是提供 FTP 服务的 FTP 文件目录。当上一级 NET 消息发送子模块将消息保存在一般本地文件目录时,NET 消息接收子模块读取本地文件并发送给 EXEC 模块;当上一级 NET 消息发送子模块将消息保存在 FTP 文件目录时,NET 消息接收子模块可通过 FTP 服务器下载数据,并发送给 EXEC 模块。

1.4执行模块(EXEC)

DMHS 目标端通过 NET 模块接收源端发送过来的日志消息,然后把这些消息按事务分类,如果某个事务上收到了提交消息,则通过 SQL 逆向生成的技术构造还原相应的事务SQL 语句,使用 ODBC 驱动接口对这些数据进行入库执行,完成数据同步;如果某个事务在源端回滚,则直接丢弃不执行。

EXEC 模块使用多线程并行执行的方式,对多个提交事务同时进行入库执行,以提高入库执行的效率。由于事务之间的关联关系以及事务提交策略的影响,多个执行线程之间可能存在一定的等待关系,以满足事务的逻辑要求。EXEC 模块还可以通过事务合并、事务分裂等事务重组技术,以及 rowid 映射、批量绑定执行等技术加快同步执行的效率。

1.5管理模块(MGR

MGR 模块可以解析配置参数,根据配置参数启动 DMHS 的捕获器功能、执行器功能、转发器功能或路由功能。当 MGR 启动捕获器功能时,MGR 会调度 CPT 模块和 NET 模块(发送子模块);当启动执行器功能时,会调度 NET 模块(接收子模块)和 EXEC 模块;当启动转发器或路由器功能时,会调度 NET 模块(接收子模块和发送子模块)。

MGR 模块主要组成部分如下图(蓝色虚线为可选):

MGR 模块在配置文件中对应的 XML 元素为 base,即 MGR 模块的所有参数都是作为base 元素的子元素存在,这些子元素的值就是对应 MGR 模块参数的参数值。MGR 模块必须在配置文件中设置站点号siteid和管理端口号mgr_port,并给出正确的参数值,否则 MGR模块无法正常 启动。

二、DMHS功能划分

为适应不同的应用场景,DMHS 提供的功能可以细分为捕获器功能、执行器功能、路 由器功能、转发器功能。

2.1 捕获器

捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上。捕获器由 MGR 模块、CPT 模块、NET 发送子模块组成,XML 配置文件中对应元素为 base、cpt、send。NET 发送子模块不能单独存在,必须由 CPT 模块调用;在 XML 配置文件中也是一样的,send 元素为 cpt 元素的子元素。

2.2 执行器

执行器将接收到的数据入库执行,它可以与目标端数据库处于不同机器。执行器由 MGR模块、EXEC 模块、NET 接收子模块组成,XML 配置文件中对应元素为 base、exec、recv。NET 接收子模块不能单独存在,必须由 EXEC 模块调用;在 XML 配置文件中也是一样的,recv 元素为 exec 元素的子元素。

2.3 路由器

路由器一般配置在第三台机器上,对捕获器中 CPT 模块和执行器中的 EXEC 模块进行映射,从而实现跨网关同步,并且一个路由服务可以实现 N 对 N 的映射。路由器由 MGR模块、NET 接收子模块、NET 发送子模块组成,XML 配置文件中对应元素为 base、route、recv、send。NET 接收子模块和 NET 发送子模块由 MGR 模块调度,从而实现路由功能;在XML 配置文件中 recv 元素和 send 元素均为 route 元素的子元素。

2.4 转发器

转发器将接收到的数据通过网络进行转发或是直接落地成本地文件。网络转发可以实现异步的一对多的需求,而落地成本地文件可以实现 FTP 的同步模式或者穿透网闸的需求。转发器由 MGR 模块、NET 接收子模块、NET 发送子模块组成,XML 配置文件中对应元素为 base、transfer、recv、send。NET 接收子模块和 NET 发送子模块由 MGR 模块调度,从而实现转发功能;在 XML 配置文件中 recv 元素和 send 元素均为 transfer 元素的子元素。

(注意:转发和路由的不同在于,路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行修改,而转发功能则可以针对每个下一级配置不同的过滤和映射。)

三、约束

3.1 支持

1) DMHS 支持的数据类型包括:数值类型(INT、NUMERIC、DOUBLE)、字符类型(CHAR、VARCHAR)、二进制数据类型(BINARY、VARBINARY)、时间日期类型(DATE、TIME、DATETIME)、大对象类型(CLOB、BLOB)。

2) DMHS 支持的语句类型包括:DML 语句(INSERT、UPDATE、DELETE)、DDL 语句(CREATE TABLE、DROP TABLE、TRUNCATE TABLE、ALTER TABLE)。

3.2 限制

  1. 当源表只包含一列时,该列的数据类型不能是大对象和时间间隔数据类型。
  2. 不支持组合主键中的列带 NULL 值。
  3. 以 DMHS_开头的表是 DMHS 内部系统表,不支持表名为 DMHS_开头的表同步。

四、配置过程

4.1开启归档和逻辑日志

(1)打开配置文件“dm.ini”,修改以下参数:

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1

(2)配置dmarch.ini 归档路径、归档大小、归档上限

4.2两边安装DMHS工具

(1)上传DMHS安装包

(2)修改可执行文件后执行安装程序

chmod +x dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin

./dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin -i

(3)并执行/dmhs/scripts/ 下的sql文件

(4)源端DMHS配置文件dmhs_source.xml上传改名为dmhs.xml,并修改 dmhs.xml中字典文件路径  <dict_dir>/dbbak/dmhs_dict</dict_dir>

(5)目的端DMHS配置文件dmhs_des.xml上传改名为dmhs.xml

(6)修改dmhs_serverd启动脚本中路径:

DMHS_HOME='/home/dmdba/dm/dmhs/bin'

path='/home/dmdba/dm/dmhs/bin/dmhs.xml'

(7)源端和目的端再启动DMHS

./dmhs_serverd start

(8)目的端启动执行线程

./dmhs_console

CSL[INFO]: DMHS console tool: V3.0.2.01-Build(2015.10.09)

DMHS >connect

CSL[UNKNOW]: execute success

DMHS >start exec

CSL[UNKNOW]: execute success

(9)源端执行装载命令

./dmhs_console

CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2015.10.09)

DMHS >connect

CSL[UNKNOW]: 执行成功

DMHS >COPY 0 "SCH.NAME IS NOT NULL"  DICT|LSN

(10)当源端数据量十分大时可选择使用模式同步

./dmhs_console

CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2015.10.09)

DMHS >connect

CSL[UNKNOW]: 执行成功

DMHS >COPY 0 "SCH.NAME='****'" TRUNCATE|INSERT|LOCK|DICT|LSN

(11)源端开启数据同步

在数据装载完毕后,在源端开启数据同步

DMHS >start cpt

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值