达梦数据实时同步软件(DMHS)是一个支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。可以通过秒级实时数据同步复制可以有效避免传统备份系统导致的无法完全满足企业对于信息系统不中断服务的问题;通过变化日志捕捉可以有效降低传统 ETL 工具因创建触发器、影子表等对业务系统带来的性能影响;通过可读写的备机数据库系统可以解决传统备机系统仅作为后备而无法对外提供数据服务的问题。
本文主要介绍DMHS 数据实时同步软件和数据对比工具的工作机制,简单比较了DMETL和DMHS。
一、数据实时同步软件
1.1 简单介绍
达梦数据实时同步软件(DMHS)是一个支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。
该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。
DMHS 基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。
1.2 模块说明
DMHS同步服务主要分为三大模块,分别是日志分析(CPT)、消息发送(NET)、数据入库(EXEC)。这三个模块由管理模块(MGR)统一调度执行。
日志分析(CPT)
负责对源数据库日志进行解析,联合字典信息提取其中数据的变化如插入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),这些操作通过包装后投递给信息发送(NET)模块。
CPT分析日志时,需要从数据库中查询表的字典信息以及日志文件发生切换时需要访问日志文件信息,也就是说,日志分析过程中CPT会和源数据库创建链接进行交互,若是同步需要支持同步DDL,那么还需要在源数据库上创建事件触发器,用来捕获DDL操作,这些配置需要在搭建同步时完成。
消息发送(NET)
NET消息发送子模块
通过CPT捕获到的日志操作,进行分发,分发前能够对操作进行过滤,或者对表进行过滤和映射,还能够对消息中的列进行映射(更名、剔除和函数计算)。通过处理的消息经过网络(TCP/IP)发送给下一级,或者保存到本地文件。
NET消息接收子模块
经过上一级NET消息发送子模块经过网络传输的消息,由NET消息接收子模块经过网络(TCP/IP)接收并发送给EXEC模块。
数据入库(EXEC)
EXEC模块接收到NET接受子模块发来的信息,把这些消息按事务分类,若是某个事务上收到了提交消息,则构造相应的SQL,使用ODBC驱动接口对这些数据进行入库;若是某个事务在源端回滚,则直接丢弃不执行,同步中若是使用了中文表明或者字段名,要使用支持中文字符集的unixODBC,否则描述会出错。
EXEC模块在运行过程中需要不断的刷新检查点,以便推动入库的LSN。为适应不一样的应用场景,DMHS提供的功能能够细分为捕获器功能、执行器功能等。
二、数据对比工具
2.1 简单介绍
DMETL提供数据对比方案,包括 VERI 对比模块,主要进行模式下对象对比,和数据对比,并且生成对比报告,AGENT 对比工具代理,主要用作数据获取,并计算行数据的 MD5,发送给对比模块。
VERI 可对数据进行进行静态对比、动态对比、二次对比和快速对比。
动态对比:对比工具与 DMHS 协同工作,保证源表与目的表都是执行完相同事务后对查询结果集进行对比。
静态对比:对比工具单独对比,没有 DMHS 的协同。
二次确认对比:在静态对比过程中,由于 DMHS 同步的时间差,第一次对比会存在不一致,因此需要针对第一次对比的结果,再次进行第二次确认对比,确定 DMHS 同步是否存在延迟或失败。
快速对比:仅仅对表进行记录行数的对比。
2.2 架构说明
系统主要分为对比代理服务和对比校验进程。
对比代理服务分源对比代理服务和目的对比代理服务。
对比代理服务的作用是从数据服务器取得数据记录,并取得数据记录的 MD5 值发送到对比校验进程进行校验。对比校验进程对数据进行比对后,直接访问源数据库服务器和目的数据库服务器,生成详细的对比报告。
对比工具代理服务(AGENT 服务)
主要用作数据获取,并计算行数据的MD5 ,发送给对比模块。
对比校验进程(VERI 进程)
主要进行模式下对象对比,数据对比,并且生成对比报告。
三、DMETL vs DMHS
DMETL 和 DMHS 两者都可以实现异构数据的整合,以及数据的清洗转换功能。
DMETL 设计重点目标是用于数据中心进行异构数据的整合,因此支持完善、复杂的数据清洗、转换规则,能够支持灵活的2次开发,但对源端的逻辑存储结构产生影响,占用资源较多。
DMHS 设计重点目标是支持异构数据库之间的秒级数据同步,是基于源库的联机日志分析捕获,不会对其逻辑存储结构产生影响,占用资源较少,效率更高,而清洗转换规则方面较ETL简单。
达梦技术社区:https://eco.dameng.com