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模块(接收子模块和发送子模块)
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模块完成的。
过滤规则执行流程:
首先验证黑名单,如存在,则不允许同步
接着验证白名单,如存在,则允许同步
如果白名单也不存在,则不允许同步
操作过滤规则:
支持的操作包括:INSERT、DELETE、UPDATE、DROP、CREATE、TRUNCATE、ALTER、LOB
(2)接收子模块
1)接收子模块可对网络、本地磁盘、FTP服务器获取数据,按照参数配置,将接收到的数据保存到本地文件或将数据提供给其他模块使用。
2)接收子模块,对应着dmhs.hs配置文件中的<recv>元素。当NET模块接收的消息来源于NET网络数据时,NET接收子模块必须配置为网络接收方式。在NET接收子模块配置了data_port参数后,NET接收子模块。
7. EXEC-数据入库
(1)原理解析:
DMHS在数据同步的时候,源端不同数据库的交易日志经过CPT的解析,封装成统一的数据格式,经过NET模块一级级投递,EXEC通过RECV模块接收到源端的数据以后,对接收到的数据提取进行事务归类。在明确收到提交操作后,再把提交的事务交由执行线程进行入库处理。
EXEC模块在事务数据入库时,采用ODBC标准的接口操作数据库。
(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。
达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心达梦数据库产品体验站,DM8在线试玩,达梦数据库全系列产品免费下载,官方权威的快速上手文档和产品手册,最活跃的达梦技术社区,面向全行业ISV厂商免费的云适配服务。https://eco.dameng.com