达梦异构数据库同步软件DMHS(Heterogeneous database Synchronization for DM),是达梦数据推出的一款支持异构环境的高性能、高可靠、高可扩展数据库实时同步系统。该产品基于数据库日志分析的结构化数据复制技术,不依赖源数据库的触发器或规则,对源业务系统资源占用极低,可实现秒级数据实时同步,同时全面适配国内外主流数据库、操作系统与硬件平台,是企业级数据容灾备份、数据流转、多业务中心建设的核心基础软件。
一、DMHS系统组成及核心技术原理
1.1 DMHS系统整体组成
DMHS系统采用松耦合的模块化架构,整体可划分为核心同步服务集群 、管理运维体系 、配套工具集三大组成部分,三大组件相互配合,完成从数据同步、状态监控到故障运维的全流程数据同步管理,形成了完整的企业级数据同步解决方案。

(1)核心同步服务集群
这是DMHS的核心功能主体,是数据同步链路的核心载体,由源端同步节点 与目标端同步节点两大核心角色组成。两个节点可部署在同一台服务器,也可跨网络、跨地域分布式部署,节点之间通过TCP/IP协议完成安全、可靠的数据交互;在复杂网络与多节点同步场景下,还可扩展部署中转同步节点,适配企业级复杂拓扑的同步需求。
-
源端同步节点:是数据同步的发起端,对接同步任务的源数据库,核心职责是完成源数据库增量日志的捕获解析、全量基准数据的抽取、同步数据的过滤转换与发送,是整个同步链路的数据采集入口。
-
目标端同步节点:是数据同步的接收端,对接同步任务的目标数据库,核心职责是完成同步数据的接收、事务还原、冲突处理、入库执行与一致性校验,是整个同步链路的数据落地出口。
-
中转同步节点:复杂拓扑场景下的扩展节点,仅启用传输模块的转发与路由能力,不直接对接源库与目标库的业务数据,主要用于跨网闸、跨地域、多分支的同步数据中转,可有效降低源端出口带宽占用,适配复杂的企业网络环境。
(2)管理运维体系
这是DMHS的运维管控核心,为同步服务提供全生命周期的管理能力,覆盖从部署、配置、启停到监控、告警、故障排查的全流程,分为三层核心架构:
-
控制台交互层:提供原生命令行控制台(DMHS Console),是DMHS最基础的运维入口,支持同步服务启停、模块调度、全量装载、状态查询、配置热更新等所有核心操作,可适配无图形化界面的服务器环境。
-
可视化管理层:提供WEB可视化管理平台,支持图形化的同步任务配置编辑、同步拓扑搭建、实时状态监控、告警阈值配置、运行日志查询、差异数据修复等功能,大幅降低运维门槛,适配企业级集中化运维需求。
-
监控统计层:内置stat监控统计模块,可实时采集同步链路的TPS、同步延迟、处理行数、异常信息、资源占用等核心指标,同时提供标准化的监控接口,支持与Prometheus、Zabbix、Nagios等第三方监控平台无缝对接,可直接融入企业现有运维体系。
(3)配套工具集
DMHS提供了丰富的配套辅助工具,覆盖同步全流程的辅助需求,解决异构同步、数据校验、故障排查等场景的核心痛点,核心工具包括:
-
数据对比校验工具:支持源端与目标端同步数据的全量比对与增量比对,可快速定位两端数据差异,生成详细的差异报告,同时支持一键自动修复差异数据,保障同步链路的数据最终一致性。
-
数据类型转换工具:提供异构数据库之间的数据类型映射配置与自定义转换能力,内置主流数据库的默认类型映射规则,同时支持用户自定义转换函数与规则,适配特殊的异构同步场景。
-
日志分析工具:支持DMHS运行日志、数据库重做/归档日志的快速解析与异常定位,可自动识别日志中的错误信息、同步阻塞位点、事务异常等问题,输出故障排查建议,辅助运维人员快速定位并解决同步故障。
-
守护进程工具(dmhs_guard):提供同步服务的进程守护、故障自动重启、双机主备切换能力,当同步服务异常退出时,可自动重启服务;在双活容灾场景下,可配合数据库集群实现同步服务的主备自动切换,保障同步服务的7×24小时高可用。
1.2 DMHS核心底层技术原理
DMHS的核心技术底座是基于数据库重做日志的增量数据捕获技术(CDC,Change Data Capture) ,辅以事务级一致性保障机制 、全链路并行执行优化技术三大核心技术,彻底解决了传统同步方案的侵入性高、性能损耗大、同步延迟高、数据一致性难保障的痛点,实现了低侵入、高性能、高可靠的企业级数据库实时同步。
(1)基于日志的CDC增量捕获技术
这是DMHS区别于传统数据同步方案的核心技术,也是其实现业务零侵入、低资源占用的核心基础。
传统数据同步方案主要采用两种增量捕获模式:一是触发器模式 ,需要在源库的同步表上创建INSERT/UPDATE/DELETE触发器,当数据发生变更时,触发器将变更记录写入中间表,同步程序读取中间表完成增量同步,该方案需要修改源库结构,对业务系统有强侵入性,高并发场景下会严重占用数据库资源,影响业务性能;二是表轮询模式,需要为同步表增加时间戳或版本号字段,同步程序定时轮询表中变更的数据,该方案需要修改业务表结构,同时频繁查询数据库会占用大量数据库CPU与IO资源,且同步延迟高,无法实现实时同步。
而DMHS采用的基于数据库重做日志的CDC技术,直接读取数据库原生的在线重做日志(Redo Log)与归档日志------这些日志是数据库原生用于故障恢复、事务回滚的核心文件,完整记录了数据库所有的数据变更操作与事务信息。DMHS通过优化的日志扫描与解析算法,直接从日志文件中提取增量数据变更,无需在源库创建任何触发器、无需修改业务表结构、无需对业务表执行任何查询操作,仅需占用源端服务器极少的CPU与内存资源,对源数据库业务系统几乎无性能损耗,真正实现了业务零侵入。
同时,该技术可实现毫秒级的增量数据捕获,只要数据库的变更操作写入重做日志,DMHS即可快速捕获并完成解析,为秒级端到端实时同步提供了核心技术基础。
(2)事务级一致性保障原理
数据库的核心特性是ACID,其中原子性(Atomicity)与一致性(Consistency)是业务逻辑的核心保障,DMHS的同步机制完全遵循数据库的事务原生特性,以完整事务为最小同步单位,从同步全链路的各个环节保障源端与目标端的事务级数据一致性。
其核心实现原理分为三个维度:
-
事务原子性保障:DMHS在捕获增量日志时,会严格按照事务ID对数据变更操作进行分组,同一个事务的所有DML/DDL操作会被完整封装与缓存,只有当捕获到该事务的COMMIT提交记录时,才会将该完整事务发送至目标端执行;若捕获到事务的ROLLBACK回滚记录,或事务长时间未提交触发超时机制,则直接丢弃该事务的所有操作,确保目标端仅执行源端已提交的完整事务,完全遵循源端的事务原子性,杜绝部分事务执行导致的数据不一致。
-
事务顺序性保障:DMHS严格按照源数据库的事务提交顺序,将事务串行发送至目标端,目标端也严格遵循该顺序完成入库执行,避免因事务乱序导致的数据覆盖、外键约束冲突、逻辑不一致等问题,保障源端与目标端的事务级逻辑一致性,确保目标库的业务逻辑与源库完全匹配。
-
全链路数据完整性保障:DMHS对同步全链路的所有数据进行CRC循环冗余校验,确保数据在传输过程中不被篡改、无字节丢失;同时通过双检查点机制记录同步位点,分别记录源端的日志捕获位点与目标端的事务执行位点,当出现网络中断、服务重启、服务器宕机等异常时,服务恢复后可自动从检查点位点继续同步,无需重新执行全量装载,彻底避免数据重复同步与数据丢失。
(3)全链路并行执行与性能优化原理
为了适配高并发、大数据量的企业级同步场景,DMHS采用了全链路的并行优化技术,解决了传统同步方案单线程执行效率低、大事务阻塞同步链路的核心痛点,可在高并发业务场景下仍保持毫秒级同步延迟。
其核心优化逻辑包括:
-
流水线并行处理:源端的日志读取、日志解析、数据预处理、网络发送采用流水线并行架构,四个环节可同时异步执行,即上一个事务完成解析进入发送环节时,下一个事务已进入日志读取环节,彻底消除了串行处理的性能瓶颈,大幅提升同步链路的整体吞吐量。
-
目标端多线程并行执行:目标端采用多线程并行执行架构,支持用户自定义配置执行线程数,可对无表依赖、无锁冲突的多个事务同时并行入库,大幅提升数据写入效率;针对有主键依赖、外键关联的事务,通过智能等待机制保障执行顺序,兼顾执行效率与数据一致性。
-
事务重组优化技术 :针对高并发OLTP场景下的大量短事务,支持事务合并技术 ,可将多个时间窗口内的短事务合并为一个大事务批量执行,大幅减少目标库的事务提交次数,降低磁盘IO与日志写入开销;针对批量操作、数据初始化场景下的超大长事务,支持事务分裂技术,可将单个无依赖的大事务拆分为多个小事务并行执行,避免大事务阻塞整个同步链路。
-
批量写入优化技术:支持批量绑定执行、数组提交、rowid快速映射等优化手段,可将多条数据变更操作合并为一次批量执行,大幅减少目标库的网络交互次数与SQL解析开销,在大批量数据同步场景下,可将写入效率提升数倍至数十倍。
二、DMHS整体架构与核心运行体系
DMHS采用单进程多线程 的轻量化架构,核心进程名称为dmhs_server,整体分为源端 与目标端两大核心角色。其中源端是数据同步的起点,负责数据库增量数据的捕获、解析、预处理与传输;目标端是数据同步的终点,负责同步数据的接收、还原、冲突处理与入库执行。两端均通过统一的管理服务模块实现组件调度,同时搭配专属功能模块完成全流程同步,各模块解耦设计,可灵活适配不同的同步拓扑与业务场景。
除核心功能模块外,DMHS还提供了完整的配套扩展组件,包括guard进程守护模块、stat监控统计模块、数据对比校验工具、WEB可视化管理平台,形成了从部署、运行、监控到故障排查的全生命周期管理体系。
DMHS 系统可以按照源端和目标端分为多个模块。
| 分类 | 核心模块 |
|---|---|
| 源端 | 装载模块(LOAD)、日志捕获分析模块(CPT)、传输模块(NET)以及管理服务模块(MGR) |
| 目标端 | 执行模块(EXEC)、传输模块(NET)和管理服务模块(MGR) |


(一)管理服务模块MGR:全系统调度中枢
MGR是DMHS同步服务的核心启动框架与调度中枢,是源端与目标端均必备的基础模块,也是所有功能模块的统一入口。其核心职能是根据用户编写的XML格式配置文件,完成对应功能模块的加载、启动、生命周期管理与资源调度,同时为上层模块提供标准化的调用接口。
其详细核心能力包括:
-
配置解析与参数管理:负责解析配置文件中的基础参数、模块运行参数、同步规则等,完成参数合法性校验,并为各模块提供参数调用能力;
-
模块生命周期调度:根据配置启动对应功能模块,当启动捕获器功能时,调度CPT模块与NET发送子模块;启动执行器功能时,调度NET接收子模块与EXEC模块;启动转发/路由功能时,独立调度NET模块的收发子模块;
-
基础服务能力:内置FTP服务器、同步服务主备切换管理、控制台指令接收与处理、同步消息的反馈与应答管理;
-
监控与统计管理:负责收集各模块的运行统计信息,完成统计信息入库存储,为WEB管理平台与第三方监控工具提供数据支撑。
(二)源端核心功能模块
源端核心负责数据的全量基准装载、增量日志捕获解析与数据发送,包含装载模块LOAD、日志捕获分析模块CPT、传输模块NET三大核心功能组件,各模块通过MGR统一调度,协同完成数据同步的前置处理工作。
1. 日志捕获分析模块CPT:增量数据的"采集器"
CPT是DMHS实现增量实时同步的核心模块,如同同步系统的"侦探",持续监控源数据库的在线重做日志与归档日志,采用优化的日志扫描算法,实现增量日志数据的快速捕获与深度解析,是DMHS实现低侵入、高实时同步的核心基础。
(1)核心工作流程与底层原理
CPT模块的核心工作流程分为日志读取、日志解析、数据封装三大阶段,每个阶段均有精细化的技术实现:
-
日志读取阶段:模块启动时,首先通过NET模块向目标端发送LSN查询指令,获取目标端已完成同步的最大LSN位点,以此作为增量捕获的起始位置,避免重复同步与数据丢失;随后持续扫描源库的在线重做日志,当在线日志归档后,自动读取归档日志文件,确保无任何增量操作遗漏。
-
日志解析阶段:结合源库离线数据字典信息,从原始日志中提取完整的数据变更操作,包括INSERT、DELETE、UPDATE三类DML操作,以及表结构、索引、约束变更等DDL操作,同时提取操作类型、事务ID、操作时间戳、行数据前后镜像、会话信息等核心元数据。针对不同数据库的日志格式差异,DMHS为每一款支持的关系型数据库都开发了专属的日志解析子模块,通过MGR的通用接口实现灵活调用,保障不同源库日志解析的准确性,目前已适配DM全系列、Oracle、MySQL、PostgreSQL、DB2、SQL Server等主流数据库。
-
数据封装阶段:将解析完成的操作与对应数据转换为DMHS内部统一的标准化消息格式,按事务维度进行分组封装,确保同一个事务的所有操作被完整打包,再投递至NET传输模块,从源头保障事务的原子性。
(2)离线数据字典核心机制
CPT模块的正常运行高度依赖离线数据字典,这是日志解析的核心依据。DMHS在启动日志捕获前,必须先完成数据字典的装载,生成同步表的离线字典目录。
-
字典文件默认存储在DICT目录中,以同步表为单位进行保存,文件命名规则为
0_ID.dct,其中ID为同步表在源库中的对象ID,文件内存储了表的字段定义、数据类型、约束信息、索引信息等完整元数据; -
DICT目录中还包含两个核心控制文件:
0_disable.obj存放禁止同步的对象ID,0_disable.txt存放禁止同步的对象名称与对应ID,CPT模块解析日志时会自动过滤这些对象的操作; -
当源库发生DDL操作导致表结构变更时,DMHS会自动更新对应表的字典文件,将新的表定义追加到字典文件末尾,确保日志解析始终使用正确的表结构信息。
(3)DDL同步双实现机制
针对表结构等元数据变更的同步需求,DMHS提供了两种DDL捕获分析方式,可根据源库类型与业务需求灵活选择:
-
基于数据库日志的捕获方式:直接从源库的重做/归档日志中解析DDL操作,无需在源库创建任何数据库对象,对源库零侵入,是默认推荐的实现方式,目前已支持绝大多数主流数据库;
-
基于系统事件触发器的捕获方式:在源库创建系统级事件触发器,当检测到DDL操作时,触发器自动记录操作信息,CPT模块读取记录信息完成解析与同步,适用于部分日志格式兼容性有限的特殊数据库场景。
2. 装载模块LOAD:全量基准数据的"搬运工"
LOAD模块是DMHS实现初始全量数据同步的核心组件,负责在增量同步启动前,完成同步表的字典装载与表数据的初始全量装载,确保源库与目标库的基准数据完全一致,为增量同步提供准确的数据基础。
(1)核心工作流程
LOAD模块的执行分为两个核心阶段,两个阶段无缝衔接,共同完成基准数据同步:
-
字典装载阶段:将所有同步表的数据字典信息从源库中完整抽取,生成本地离线字典文件,为后续CPT模块的日志解析提供依据,同时为目标端表结构创建提供元数据支撑;
-
数据初始装载阶段:将源库的全量基准数据同步至目标库,完成源库与目标库的基准数据对齐。
(2)两种全量装载实现方式
DMHS提供了两种全量装载模式,可适配同构、异构等不同业务场景:
-
直接数据装载方式:基于源数据库的JDBC/ODBC接口,直接对源表执行查询操作,抽取全量数据后批量写入目标库。该方式支持异构数据库场景,适配绝大多数主流数据库,同时支持在不中断源端业务的情况下完成装载,装载过程中产生的增量数据会被CPT模块记录,装载完成后自动衔接增量同步;
-
备份文件装载方式:基于数据库自身的备份还原能力,先对源库进行备份,再将备份文件在目标库还原,实现初始数据一致。该方式的装载效率远高于直接查询方式,适用于TB级大库的初始同步场景,但仅支持DM同构数据库环境。
(3)核心使用规则与优化能力
-
初始装载可通过
LOAD/COPY控制台命令执行,提供了丰富的装载选项,支持按模式、按表、按条件过滤数据,满足定制化全量同步需求;同时提供快速装载优化能力,针对大批量历史数据采用批量绑定、并行读取等优化手段,大幅提升装载效率; -
初始装载模块与CPT日志分析模块不可同时运行,执行COPY命令前必须先通过
STOP CPT命令停止日志捕获,避免字典信息与LSN位点不一致导致的同步异常;装载完成后,自动记录当前源库日志的检查点位置,启动CPT模块后从该位点开始增量捕获,实现全量到增量的无缝过渡。
3. 传输模块NET:数据流转的"桥梁"
NET模块是DMHS源端与目标端之间数据流转的核心通道,分为**发送子模块(源端)与接收子模块(目标端)**两个独立单元,除基础的网络传输能力外,还提供了丰富的数据预处理、中转路由、协议适配等高级能力。
(1)源端发送子模块核心能力
发送子模块负责接收CPT模块投递的标准化消息,在传输前完成精细化的预处理,再通过网络发送至目标端。核心能力包括:
-
数据过滤与映射:支持按操作类型、表、 schema、行数据条件进行过滤,支持表名、schema名的映射转换,支持列级的字段改名、字段剔除、函数计算等转换操作,满足用户定制化同步需求;
-
多模式数据分发:支持通过TCP/IP网络将消息实时发送至目标端,也支持将消息保存至本地文件或FTP服务器目录,适配离线同步、跨网闸同步等特殊场景;
-
传输优化与安全:支持数据压缩与SSL加密传输,降低网络带宽占用的同时保障数据传输安全;对所有传输数据进行CRC校验,确保目标端收到的数据完整无误;
-
消息应答与重传:与目标端接收子模块建立完备的消息应答机制,只有收到目标端的确认消息后,才判定数据传输完成,否则自动触发数据重传,保障数据无丢失。
(2)高级扩展能力
NET模块可脱离CPT与EXEC模块独立运行,实现数据转发与路由功能,通过配置可搭建多级中转、多对多同步等复杂拓扑结构,同时支持FTP中转、文件中转等特殊网络场景下的同步需求;最新版本的DMHS还支持直接对接Kafka消息队列,将捕获的增量数据直接写入Kafka,适配大数据平台的数据接入场景。
(三)目标端核心功能模块
目标端核心负责同步数据的接收、事务还原、冲突处理与入库执行,包含传输模块NET接收子模块、执行模块EXEC两大核心功能组件,同时通过内置系统表实现同步状态管理与一致性保障。
1. 传输模块NET接收子模块
接收子模块是目标端的数据入口,核心职能是通过TCP/IP协议接收源端发送的同步消息,或读取源端写入的本地文件、FTP服务器文件,完成数据校验后,将完整的消息数据投递至EXEC执行模块,同时向源端发送消息确认应答,是源端与目标端之间数据流转的核心桥梁。
2. 执行模块EXEC:同步数据的"执行者"
EXEC模块是目标端数据落地的核心,负责将同步消息还原为数据库可执行的操作,完成最终的数据同步,同时通过多维度优化技术提升入库效率,保障事务一致性。
(1)核心工作流程
-
事务缓存与分类 :EXEC模块初始化时,会根据
exec_sql参数配置的内存池大小,初始化专属事务内存池;接收NET模块投递的日志消息后,按事务ID对消息进行分类归集,同一个事务的所有操作会被存入同一个事务缓存中; -
事务状态判断:当接收到对应事务的提交消息时,判定该事务为可执行事务,进入SQL还原阶段;若接收到事务回滚消息,或超过超时时间未收到事务提交消息,则直接丢弃该事务的所有消息,不做任何执行处理,严格遵循源端的事务原子性;
-
SQL逆向还原:通过SQL逆向生成技术,将内部消息还原为符合目标库语法规范的SQL语句,同时自动完成不同数据库之间的数据类型映射转换;
-
并行入库执行:通过多线程并行执行架构,将还原后的SQL语句在目标库中批量执行,同时通过事务重组、批量绑定等优化技术提升写入效率,最终将源端的数据变更完整同步至目标库;
- 同步位点记录:事务执行完成后,将该事务的同步位点、事务ID等信息写入目标端系统表,更新检查点,为故障恢复、断点续传提供依据。
(2)核心性能优化技术
为适配高并发、大数据量的同步场景,EXEC模块提供了多项核心优化技术,可大幅提升同步执行效率:
-
事务重组技术:支持事务合并与事务分裂。事务合并可将多个短事务合并为一个大事务批量执行,减少目标库的事务提交次数,提升写入效率;事务分裂可将单个超大长事务拆分为多个小事务并行执行,避免大事务阻塞同步链路;
-
并行执行优化:支持配置多执行线程,对无依赖关系的多个事务同时并行入库;针对有依赖关系的事务,通过线程等待机制保障执行顺序,兼顾执行效率与数据一致性;
-
写入优化技术:支持rowid映射、批量绑定执行、数组提交等优化手段,减少目标库的网络交互次数与IO开销,大幅提升批量数据的写入效率;
-
智能锁机制:默认采用行级锁,仅锁定当前操作的数据行,对目标库业务影响极小;当检测到大量行锁冲突时,自动触发智能锁升级,短暂使用表级锁完成批量操作,执行完成后自动降级,平衡锁开销与执行效率。
(3)目标端核心系统表
DMHS目标端在初始启动时,会自动在目标数据库中创建5张核心系统表,这些表是保障同步一致性、实现故障恢复、监控同步状态的核心基础,由DMHS自动维护,无需人工干预:
-
提交事务表 :DMHS的核心系统表,记录已完成同步的事务ID、LSN位点、执行时间等信息,用于确定增量同步的起始位点、故障恢复后的断点续传,保障事务一致性;可通过
trxid_tables参数配置表的个数,避免单表热点问题; -
DMHS_DTYPE_MAP类型映射表:用于预定义不同数据库之间的数据类型映射规则,支持用户自定义修改,适配异构数据库的特殊类型转换需求;
-
DMHS_ERROR_TABLE错误表:记录入库执行出错的表信息,每个表每次启动仅登记一次,当同步出错时,可通过重新装载该表修复异常,装载成功后记录会自动删除;
-
DMHS_STATUS状态表:仅当开启统计信息历史记录功能时创建,由调度线程定时写入各模块的运行统计信息,为WEB管理平台的监控展示提供数据支撑;
- 冲突记录表:双向同步场景下自动创建,记录数据冲突的详细信息,包括冲突表、主键值、冲突时间、处理结果等,为冲突排查提供依据。
三、DMHS数据同步核心原理与全流程
DMHS的完整数据同步分为初始全量数据装载 与增量实时数据同步两个核心阶段,两个阶段无缝衔接,可在不中断源端业务的情况下,实现源库到目标库的全量+增量完整数据同步,保障两端数据的最终一致性。
(一)初始全量数据装载原理
初始全量装载是增量同步的前提,核心目标是让源库与目标库在增量同步启动前,实现基准数据的完全一致,同时完成离线字典的创建。
其完整执行流程为:
-
管理员通过DMHS控制台执行COPY/LOAD命令,MGR模块先停止CPT捕获模块,确保装载期间字典信息与LSN位点的一致性;
-
LOAD模块启动,先连接源库与目标库,完成连通性与权限校验,随后抽取同步表的元数据信息,在目标端创建对应的表、索引、约束等对象,同时生成本地离线字典文件;
-
根据配置的装载方式,执行全量数据抽取与写入:直接装载模式下,并行读取源表数据,批量写入目标库;备份装载模式下,调用源库备份工具生成备份文件,在目标端完成还原;
-
全量数据装载完成后,记录当前源库日志的检查点LSN位点,将该位点信息同步至目标端系统表;
- 启动CPT捕获模块,从记录的检查点位点开始扫描源库日志,捕获全量装载期间产生的增量数据,实现全量到增量的无缝过渡,全程无需中断源端业务运行。
(二)增量实时数据同步核心原理与全链路
增量实时同步是DMHS的核心能力,基于源数据库日志分析实现增量数据的无侵入捕获,以事务为最小单位完成全链路同步,保障数据的完整性、一致性与实时性,完整同步链路为:源端数据库→源端CPT捕获模块→源端NET发送模块→TCP/IP网络→目标端NET接收模块→目标端EXEC执行模块→目标端数据库。
其完整执行流程分为四大核心阶段,每个阶段均有严格的一致性保障机制:
-
增量日志捕获与解析:源端CPT模块持续监控源数据库的在线重做日志与归档日志,当源库发生DML/DDL操作并写入日志后,CPT模块通过优化的扫描算法快速捕获日志增量,结合离线数据字典完成日志解析,提取出操作类型、事务ID、数据变更内容、操作时间戳等核心信息,转换为DMHS内部统一的消息格式,按事务维度封装;
-
消息预处理与网络传输:解析完成的事务消息投递至源端NET发送模块,模块根据配置完成数据过滤、映射、转换等预处理,随后对数据进行压缩、加密与CRC校验,通过TCP/IP网络传输至目标端;同时等待目标端的应答消息,未收到应答时自动触发重传;
-
消息接收与事务还原:目标端NET接收模块接收到同步消息后,完成CRC校验与数据解密解压,将完整数据投递至EXEC模块;EXEC模块按事务ID对消息进行分类缓存,严格遵循源端的事务顺序,仅对源端已提交的事务进行SQL还原,对回滚事务直接丢弃,从根源上保障事务的逻辑一致性;
-
数据并行执行入库:EXEC模块通过多线程并行架构,将还原后的SQL语句在目标库中批量执行,执行完成后更新目标端系统表的同步位点与检查点,向源端发送确认应答,最终将源端的数据变更完整同步至目标库,实现两端数据的秒级一致。
四、DMHS高级功能与复杂场景实现原理
(一)双向同步与冲突处理机制
DMHS支持双向同步模式,是双活数据中心场景的核心支撑能力。双向同步本质上是两个单向同步任务的组合,两个数据库节点同时作为源端和目标端,节点A的增量数据同步至节点B,节点B的增量数据同步至节点A,两个节点均可对外提供业务读写服务。
1. 防事务死循环机制
双向同步的核心难点是避免事务死循环,即同一个事务在两个节点之间重复同步执行。DMHS通过事务标记机制解决该问题:当EXEC模块执行同步事务时,会在目标库的日志中写入特殊的事务标记;CPT模块捕获日志时,会自动识别带有该标记的事务,直接过滤不进行同步,从而避免了事务循环同步的问题。
2. 冲突检测与处理策略
双向同步场景下,当两个节点同时对同一行数据进行修改时,会产生数据冲突,可能导致数据覆盖或不一致。DMHS提供了完善的冲突检测与处理机制,支持用户自定义冲突解决规则,核心策略包括:
-
基于时间戳的冲突处理:为同步表增加时间戳字段,记录数据最后修改时间,发生冲突时优先保留时间戳最新的数据;
-
基于版本号的冲突处理:为同步表增加版本号字段,每次数据修改时版本号自增,发生冲突时保留版本号更高的数据;
-
主键冲突处理:针对INSERT操作的主键冲突,支持覆盖、忽略、告警三种处理策略;
-
字段值差异冲突处理:针对UPDATE操作的字段值不一致,支持按源端覆盖、按目标端保留、按规则合并三种处理策略;
-
事务中断重试机制:针对锁冲突、网络波动导致的事务执行失败,支持自动重试,重试失败后记录至错误表并触发告警。
(二)多拓扑结构部署实现原理
DMHS采用开放式体系结构,支持多种复制拓扑结构,可根据业务需求灵活组合,搭建复杂的多节点同步体系,适配不同的业务场景。
-
一对一同步:最基础的同步拓扑,一个源端对应一个目标端,主要用于本地/远程容灾备份、数据库迁移场景,配置简单、稳定性高;
-
一对多广播同步:一个源端对应多个目标端,将源库的核心数据同时同步至多个目标库,主要用于读写分离、报表分发、多业务系统数据共享场景,源端只需一次日志捕获,即可分发至多个目标端,大幅降低源库资源占用;
-
多对一聚合同步:多个源端对应一个目标端,将多个业务库的数据同步至同一个汇总库,主要用于数据仓库、大数据平台数据接入、总部数据汇总场景,支持不同源端的数据同步至目标端的不同schema,避免表名冲突;
-
级联中转同步 :多个节点形成链式同步结构,源端数据先同步至中转节点,再由中转节点同步至多个下游节点,主要用于跨地域、跨网络的多节点同步场景,可有效降低源端的出口带宽占用,通过配置
level参数控制同步层级,避免循环同步;
- 多对多同步:多个节点之间互相同步,形成网状同步结构,主要用于分布式多业务中心场景,保障多个数据中心之间的数据实时一致,支持灵活的过滤与映射规则,适配不同业务中心的数据同步需求。
五、DMHS核心技术特性与企业级能力保障
(一)高性能与轻量化设计
DMHS采用单进程多线程架构,资源占用极低,对源端业务系统几乎无影响,常规场景下CPU占用率低于5%,内存占用可控。
-
源端零侵入设计:基于日志分析实现增量数据捕获,无需在源库安装额外组件、无需配置触发器、无需对源表加锁,仅需读取源库的日志文件,对源库业务性能几乎无损耗;
-
全链路并行优化:源端支持日志读取、日志解析、数据发送的流水线并行处理,目标端支持多线程并行执行、事务重组、批量绑定等优化技术,可实现大批量数据的秒级实时同步,在高并发业务场景下仍能保持毫秒级同步延迟;
-
轻量化部署:支持绿色解压部署,无需依赖复杂的运行环境,最小部署包仅几十MB,可快速在各类服务器、国产化设备上完成部署。
(二)全场景异构环境兼容
DMHS具备极强的跨平台、跨数据库适配能力,是业内适配能力领先的异构同步软件,可实现企业不同平台、不同数据库之间的统一数据同步管理。
-
数据库兼容:源端支持达梦DM全系列、Oracle9i-19c、Oracle RAC集群、MySQL、PostgreSQL、DB2、SQL Server等主流关系型数据库;目标端支持所有具备ODBC标准接口的关系型数据库,同时支持同构与异构双向同步,完美适配数据库国产化替换场景;
-
操作系统兼容:支持Windows全系列、Linux全系列、IBM AIX、HP-UNIX、Solaris等主流商用操作系统,同时全面适配麒麟、统信、凝思等国产操作系统,支持32位与64位环境;
-
硬件平台兼容:兼容X86、SPARC、POWER等主流硬件架构,同时全面适配龙芯、鲲鹏、飞腾、海光、兆芯、神威等国产CPU平台,实现全栈国产化环境的适配支持。
(三)企业级高可靠数据保障
DMHS通过多层技术机制,全方位保障数据同步的完整性、一致性与可靠性,满足金融、政务、能源等核心行业的企业级容灾需求。
-
断点续传机制:通过双检查点机制记录同步位点,包括源端数据抽取位置检查点与目标端已装载位置检查点,当出现网络中断、服务重启、服务器宕机等异常时,服务恢复后可自动从检查点位置继续同步,无需重新全量装载,避免数据丢失与重复同步;
-
全链路数据完整性保障:对所有传输的同步数据进行CRC校验,保障数据传输过程中不被篡改、无传输错误;同时对数据的先后顺序进行严格的一致性验证,确保目标端严格按照源端的事务顺序执行,保障事务级的完整性与一致性,目标端执行的事务一定是源端已提交完成的事务;
-
可靠传输机制:源端与目标端采用完备的消息应答机制,源端只有在收到目标端的确认消息后,才判定数据传输完成,否则将自动触发数据重传,从传输链路层面保障数据无丢失;
-
全类型字段支持:全面支持数据库主流字段类型的同步,包括数值类型、字符类型、二进制类型、时间日期类型,以及CLOB、BLOB、NCLOB等大对象类型,覆盖企业业务系统的所有常见数据存储场景;
- 数据一致性校验能力:内置数据对比校验工具,可快速比对源端与目标端的同步数据差异,生成差异报告,同时支持自动修复差异数据,保障两端数据的最终一致性。
(四)完善的监控运维与安全体系
1. 全维度监控运维能力
DMHS提供了完善的监控与运维工具,可实现同步服务的全生命周期管理:
-
内置监控能力:自带stat监控统计模块,可实时采集各模块的运行状态、同步延迟、TPS、处理行数等核心指标,支持控制台指令实时查询;
-
WEB可视化管理平台:提供图形化的管理界面,支持同步服务的启停、配置管理、全量装载、同步状态监控、告警管理、日志查询等功能,大幅降低运维门槛;
-
第三方监控对接:支持与Prometheus、Zabbix、Nagios等主流监控平台对接,提供标准化的监控指标接口,可融入企业现有的监控运维体系;
-
日志与故障排查:提供分级日志管理功能,支持TRACE、DEBUG、INFO、WARN、ERROR等多个日志级别,可根据需求灵活配置;同时通过错误表、冲突表、系统表记录同步异常信息,为故障排查提供完整依据。
2. 企业级安全机制
DMHS提供了多层安全防护能力,保障同步数据与服务的安全:
-
传输安全:支持SSL/TLS加密传输,可对源端与目标端之间的同步数据进行全程加密,防止数据在网络传输过程中被窃取或篡改;
-
访问权限控制:同步服务与数据库的连接采用最小权限原则,仅需分配同步所需的最小数据库权限,避免高权限账号泄露风险;同时支持控制台操作的权限分级管理,不同运维人员分配不同的操作权限;
-
操作审计:支持全操作审计日志,记录所有控制台操作、配置变更、服务启停等行为,可追溯所有运维操作,满足等保合规要求。
六、DMHS典型应用场景
凭借领先的同步能力与全场景适配特性,DMHS可广泛应用于企业数据管理的各类业务场景,核心典型场景如下:
-
数据容灾备份与应急系统建设:通过远程数据实时同步,快速构建企业级本地/异地数据灾备环境,防范地域性灾难风险;当生产系统出现故障时,可快速切换至灾备系统,RTO与RPO可达到秒级,保障业务连续性,是金融、政务等核心行业数据容灾建设的核心组件。
-
读写分离与负载均衡:通过一对多数据分发,将生产库的业务数据实时同步至多个只读副本,将查询分析、报表统计、批量计算等读操作分流至副本节点,分散生产系统的访问压力,实现生产业务与分析业务的隔离,提升系统整体处理能力。
-
数据库国产化迁移与升级:支持在不中断源端业务的情况下,完成Oracle、MySQL等国外数据库到DM达梦数据库的全量+增量平滑迁移,解决企业数据库国产化替换过程中的数据迁移难题,实现业务系统的无感切换,同时支持迁移过程中的数据一致性校验,保障迁移零数据丢失。
-
订阅分发与多业务中心建设:通过数据实时同步,将企业核心业务系统的主数据,实时分发至多个下游业务系统,满足不同业务部门对核心数据的实时获取需求;同时支撑分布式架构下多活数据中心的数据实时一致,实现企业数据的统一流转与共享。
-
联机业务维护:可在业务系统7×24小时不间断运行的情况下,完成数据库版本升级、硬件更换、系统扩容、机房搬迁等维护操作,避免业务停机带来的损失,保障核心业务的持续运行。
-
大数据平台数据实时接入:通过Kafka对接能力,将业务库的增量数据实时同步至大数据平台,替代传统的批量抽取方式,实现T+0实时数仓建设,满足企业实时数据分析、实时风控、实时报表等业务需求。