购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 达梦实时同步工具系统架构

DMHS同步服务主要包括4个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输模块(NET)和执行模块(EXEC),这4个模块统一由管理模块(MGR)进行调度执行,如图1-2所示。

图1-2 DMHS系统架构

1.3.1 管理模块

管理模块(MGR)是 DMHS 同步服务的启动框架,根据配置文件加载并启动捕获模块、装载模块、传输模块和执行模块,同时管理模块还负责相关调度功能线程的执行、运行统计信息的输出及控制台命令的处理等。

1.3.2 捕获模块

捕获模块负责对源数据库日志进行捕获解析,结合数据字典信息提取其中数据的变化,如插入(Insert)、删除(Delete)、修改(Update)和对象DDL(Data Definition Language,数据定义语言)操作,然后将这些操作及数据转换为内部的消息格式投递给传输模块。

不同的源数据库管理系统具有不同的日志格式,但是在日志文件中通常都会记录操作的类型、操作的时间戳、事务ID、操作数据等信息。DMHS源端针对每一种支持的关系型数据库系统,均提供相应的捕获模块,用以识别和解析不同的关系型数据库系统的日志数据。管理模块提供通用的调用接口,通过配置的数据库类型,调用相应的捕获模块。

捕获模块通常还需要结合数据字典信息才能正确解析同步数据,因此在启动捕获模块时,首先要进行数据字典装载操作,生成同步表的字典目录,保存字典信息后才能启动捕获模块。

1.3.3 装载模块

DMHS在进行增量数据同步之前,需要完成同步表的字典装载和表数据的初始装载。表字典装载将所有同步表的数据字典信息从源数据库中抽取出来,保存为本地的数据字典文件,用于在数据同步过程中提供准确的表定义信息。数据初始装载用于将源数据库的初始数据同步到目的数据库,使得源数据库和目的数据库的初始数据保持一致。

数据初始装载有两种方式:直接数据装载方式及备份文件装载方式。直接数据装载是基于源数据库数据的直接查询抽取装载;备份文件装载则是基于数据库自身的数据备份还原,将源数据库初始数据备份后在目的数据库进行还原达到与初始数据一致。备份文件装载方式要求源数据库和目的数据库为同一类型的数据库系统,目前 DMHS 仅支持 DM 数据库的备份文件装载方式。

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

1.3.4 传输模块

传输模块用于完成不同数据源间的数据传递,分为NET消息发送子模块和NET消息接收子模块。

1.NET消息发送子模块

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

2.NET消息接收子模块

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

除作为CPT模块和EXEC模块的传输媒介外,NET模块还能够单独实现转发和路由功能,这两个功能需要在配置文件中独立配置,通过转发和路由功能实现多对多、一对多、文件中转和FTP中转的高级功能。

1.3.5 执行模块

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

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

点击中间区域
呼出菜单
上一章
目录
下一章
×