达梦数据库-DMHS介绍

目录

1.  DMHS模块分析

2.  DMHS功能划分

3.  DMHS技术优势

4.   MGR管理模块-调度管理

5.  CPT模块-日志捕获

6.  NET-数据传输

7.  EXEC-数据入库


1.  DMHS模块分析

  (1)日志分析(CPT):

      负责对源数据库进行解析,联合字典信息,提取其中数据的变化:比如DML操作,DDL操作,对这些操作进行包装后,投递给消息发送(NET)模块。

  (2)数据传输(NET)-CPT和EXEC之间的传输媒介:

  • NET消息发送子模块:分发CPT捕获到的日志操作,分发前可对操作进行过滤、对表进行过滤和映射。经过处理的消息通过网络(TCP/IP)发送给下一级,或者保存到本地文件。
  • NET消息接收子模块:接收NET发送子模块通过网络传输的消息,完成接收之后,通过网络(TCP/IP)发送给EXEC模块.。

  (3)数据入库(EXEC):

      接收NET接收子模块发送的消息,并对这些消息,按照事务分类,如果某一个事务上收到了提交消息,则构成相应的SQL,使用ODBC接口对这些数据进行入库;值得注意的是:EXEC模块在运行的过程中需要不断刷新检查点,以便推进入库的LSN

2.  DMHS功能划分

      DMHS提供的功能可以细分为:捕获器功能、执行器功能、路由器功能、转发器功能。这里主要介绍捕获器和执行器的功能。

  (1)捕获器:

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

  (2)执行器:

      执行器将接收到的数据入库执行,可以和目标端数据库处于不同机器。执行器有MGR模块、EXEC模块、NET接收子模块组成。XML配置文件中对应的元素为base、exec、recv。recv元素是exec元素的子元素。执行器中主要的模块是EXEC模块,主要用来进行数据入库。

3.  DMHS技术优势

  • 高可扩展性:适应各种异构数据平台
  • 高可用性:基于日志的结构化数据同步技术
  • 实时同步:采用并行处理体系,实时读取主机源数据库日志
  • 高可靠性:DMHS数据同步以源数据库的事务为单位,且严格主机业务系统事务顺序实施数据同步。粒度为事务级粒度;为保障数据传输的无丢失,DMHS使用检查点机制实现断点续传
  • 备机可读写:DMHS的备机数据库系统是一套独立的可读写数据库系统
  • 同步内容可定
  • 快捷部署
  • 跨平台

4.   MGR管理模块-调度管理

      MGR是DMHS同步服务的启动框架,根据配置文件加载并启动:日志分析(CPT)、数据传输(NET)、数据入库(EXEC)三个模块。

  • 当MGR启动捕获器功能时,MGR会调度CPT模块和NET模块(发送子模块)
  • 当MGR启动执行器功能时,MGR会调度EXEC模块和NET模块(接收子模块)
  • 当MGR启动转发器或路由器功能时,会调度NET模块(接收子模块和发送子模块)

        

配置文件元素解析

  • 站点号:siteid

数据实时同步常常是多个DMHS数据实时同步组成,为了避免造成数据的同步混乱,每个DMHS服务必须有唯一标识即站点号。

  • 管理端口号:mgr_port

MGR管理端口号用于监听该端口上的连接,用于执行客户端工具发过来的命令和用来接收统计信息,取值范围在1000~65535。

  • 检查点间隔:ckpt_interval

当同步服务中存在EXEC模块时,该参数表示EXEC模块检查点刷新的时间间隔,单位为秒,默认是60秒,取值范围是10~65535。

  • 配置文件版本号:version

配置文件的版本号,可选1.0或2.0。1.0兼容旧版本配置格式。如果指定为2.0,则按最新的配置格式解析。

注:旧版本配置格式,仅支持直连模式下源端到目标端的同步配置。如果需要使用一对多,转发和路由等,则必须使用2.0的版本格式。

5.  CPT模块-日志捕获

    

日志读取线程:负责读取交易日志数据,并按照数据库中定义的逻辑单元,对文件数据进行分割,将分割后的逻辑单元添加到日志分析链表中。当前交易日志读取完成后,该线程会自动获取下一个交易日志,进行数据读取。

日志分析线程:负责解析日志逻辑单元,解析完成后,会生成DMHS消息,并将DMHS消息添加到发送链表中。

日志发送线程:负责与NET模块进行交互。该线程从发送链表中获取DMHS消息,调用NET模块功能,将DMHS消息根据过滤规则发送到目标端或丢弃。

日志文件处理线程:负责交易日志信息的处理及物理文件的处理,CPT模块在运行过程中,根据最小的LSN对交易日志进行处理。

CPT模块基本配置:

      1)CPT模块对应配置文件中的XML元素为cpt,cpt模块的所有参数都是作为cpt元素的子元素存在,cpt模块需要调用NET发送子模块参数配置,对应的元素为send元素。

      2)CPT模块的日志读取与分析功能需要获取源端数据库信息,日志发送使用的网络发送功能(发送子模块<send>)需要获取目标端信息及过滤信息。

6.  NET-数据传输

NET模块主要分为两个部分:发送子模块(<SEND>)、接收子模块(<RECV>),在同步中承担节点之间数据的接发任务。

原理解析:

NET模块在各个功能模块之间,负责连接通信,信息交换和负责传输

1)表操作过滤:同步的过程中,NET模块根据配置,依照黑白名单的条件,将消息发送到目标端

2)列值转换及过滤

3)消息的本地存储:NET模块可将接收到的DMHS消息进行本地存储,可保证增量数据不丢失。

4)消息的本地读取:NET模块可从本地存储中读取DMHS消息,发送到目标端。

5)消息的FTP远程读取:NET模块可从远程FTP服务器中读取DMHS消息,发送到目标端。

6)消息的发送及接收:DMHS各站点之间数据的传递都是使用NET模块完成的。

  (1)发送子模块:

      CPT捕获器将日志读取分析后获取的数据,通过调用发送子模块进行过滤操作,并发送到下一级DMHS NET接收子模块或者保存到本地文件。

      i.  在CPT模块中的配置要求:

一个<cpt>元素中只能包含一个<send>元素,当<send>在<cpt>元素中时,<send>模块必须配置过滤

      ii .  发送子模块的数据过滤及映射:

对应着dmhs.hs配置文件中的<filter>标签,包含<enable>和<disable>子标签,分别对应白名单和黑名单。主要负责过滤条件的配置,NET模块将配置发送给EXEC模块,由EXEC模块完成映射操作

    

    

过滤规则执行流程:

  • 首先验证黑名单,如存在,则不允许同步
  • 接着验证白名单,如存在,则允许同步
  • 如果白名单也不存在,则不允许同步

1)列过滤规则:

    

    示例:

   

    使用限制:

    

2)操作过滤规则:

支持的操作包括:INSERTDELETEUPDATEDROPCREATETRUNCATEALTERLOB

    

    

示例:

    

3)映射规则

    a)  当DMHS目的端是DM7、Oracle10g、Oracle11g时,<item>采用以下格式:

    

    示例:

    

    b)  当DMHS目的端是DM6时,<item>采用以下格式:

    

    示例:

    

  (2)接收子模块

    1)接收子模块可对网络、本地磁盘、FTP服务器获取数据,按照参数配置,将接收到的数据保存到本地文件或将数据提供给其他模块使用。

    2)接收子模块,对应着dmhs.hs配置文件中的<recv>元素。当NET模块接收的消息来源于NET网络数据时,NET接收子模块必须配置为网络接收方式。在NET接收子模块配置了data_port参数后,NET接收子模块。

7.  EXEC-数据入库

    (1)原理解析:

  •       DMHS在数据同步的时候,源端不同数据库的交易日志经过CPT的解析,封装成统一的数据格式,经过NET模块一级级投递,EXEC通过RECV模块接收到源端的数据以后,对接收到的数据提取进行事务归类。在明确收到提交操作后,再把提交的事务交由执行线程进行入库处理。

    

  •     EXEC模块在事务数据入库时,采用ODBC标准的接口操作数据库。

(2)  辅助表

当EXEC模块启动的时候,它会在目标库上初始化一系列的表来记录同步的信息(辅助表)

    i.  DMHS_TRXID_TABLE

    记录源端事务日志中的事务入库信息,若事务已经被EXEC模块入库,不管入库成功与否,都会在该表中登记入库事务在日志中对应的LSN号。该表中会存在一条TID0的记录,该条记录用来表示当前同步在源端日志中完成的位置。

注:当DMHS启动的时候,EXEC模块需要加载该表中的记录来过滤已经入库的事务。

    ii.  DMHS_ERROR_TSK_TABLE

    负责登记出错事务信息

    iii.  DMHS_TABLE_SEQID

    装载信息登记表。当源端使用COPY命令进行初始化装载时,装载成功的表将会在该表中登记,且只有在重搭DMHS同步时才需要清空表。

    iv.  DMHS_DTYPE_MAP

类型映射信息表。可在该表预先定义各个数据库之间的数据类型的映射规则。

    v.  DMHS_ERROR_TABLE

    记录入库出错的表,每个表每次启动只会登记一次,当发现同步出错时,如果想简单处理,可以把该表中的记录导入源端数据库,然后在源端使用装载命令把这些表重新装载,装载成功的表将会从该表中自动删除。

    vi.  DMHS_STATUS

    该表只有开启了统计信息历史记录保存功能才会被创建,由调度线程定时地刷入当前DMHS运行时每个模块的统计信息,供WEB界面展示时使用。

(3)EXEC基本配置

     EXEC在配置文件中对应的XML元素为<exec>,运行EXEC模块,必须设置NET接收子模块参数、目标端数据库连接信息,事务入库方式。

  • NET接收子模块参数

    用于获取源端数据,对应的元素为<recv>;MGR模块调度NET接收子模块进行数据接收,并将数据供给EXEC模块进行事务入库。

  • 数据库连接信息

    EXEC模块在进行数据入库的时候,采用标准的ODBC驱动接口来访问数据库,使用的时候需要配置ODBC连接字符串所需要的相关参数。

  • 数据入库方式

    执行端的事务入库方式设置参数包括:允许缓存事务的个数:exec_trx、是否启用事务合并功能:enable_merge、事务出错时的执行策略:exec_policy、事务入库的事务提交策略:commit_policy、数据入库的工作线程数:exec_thr、数据入库时允许的最大批量行数exec_rows。

 

详细的DMHS配置方法见:https://blog.csdn.net/m0_37904750/article/details/108277986

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值