1 系统介绍
达梦数据实时同步软件(DMHS)是一个支持异构环境的高性能、高可靠、高可扩展是数据库实时同步复制系统。该系统基于成熟的关系数据库模型和标准接口,跨越多种软硬件平台实现秒级数据实时同步,可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、和多业务中心等领域。
达梦数据实时同步结构图
源端:是数据实时同步系统中的数据来源端。
目标端:是数据实时同步系统中的数据接收端。
捕获器:在数据实时同步系统中负责读取、解析源端数据库管理系统的归档日志,并发送解析后的数据。
执行器:在数据实时同步系统中负责接收数据,并进行数据映射及事务的入库(目标库)执行。
路由器:是数据实时同步系统中负责传输数据的网络路由。
转发器:是数据实时同步系统中负责传输数据的过滤和转发。
2 系统架构
MDHS同步服务主要分为三大模块,分别是日志分析(CPT)、消息发送(NET)、数据入库(EXEC)。这三个模块由管理模块(MGR)统一调度执行。
2.1日志分析(CPT)
负责对源数据库日志进行解析,联合字典信息提取其中数据的变化如插入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),这些操作通过包装后投递给信息发送(NET)模块。
CPT分析日志时,需要从数据库中查询表的字典信息以及日志文件发生切换时需要访问日志文件信息,也就是说,日志分析过程中CPT会和源数据库创建链接进行交互,若是同步需要支持同步DDL,那么还需要在源数据库上创建事件触发器,用来捕获DDL操作,这些配置需要在搭建同步是完成。
2.2消息发送(NET)
- NET消息发送子模块
通过CPT捕获到的日志操作,进行分发,分发前能够对操作进行过滤,或者对表进行过滤和映射,还能够对消息中的列进行映射(更名、剔除和函数计算)。通过处理的消息经过网络(TCP/IP)发送给下一级,或者保存到本地文件。
- NET消息接收子模块
经过上一级NET消息发送子模块经过网络传输的消息,由NET消息接收子模块经过网络(TCP/IP)接收并发送给EXEC模块。
2.3 数据入库(EXEC)
EXEC模块接收到NET接受子模块发来的信息,把这些消息按事务分类,若是某个事务上收到了提交消息,则构造相应的SQL,使用ODBC驱动接口对这些数据进行入库;若是某个事务在源端回滚,则直接丢弃不执行,同步中若是使用了中文表明或者字段名,要使用支持中文字符集的unixODBC,否则描述会出错。
EXEC模块在运行过程中需要不断的刷新检查点,以便推动入库的LSN。为适应不一样的应用场景,DMHS提供的功能能够细分为捕获器功能、执行器功能等。
3 各部件功能
3.1捕获器
捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上。捕获器由MGR模块、CPT模块、NET发送子模块组成,XML配置文件中对应元素为base、cpt、send。NET发送子模块不能单独存在,必须由CPT模块调用;在XML配置文件中也是同样的,send元素为cpt元素的子元素。
捕获器中包含日志分析模块CPT,因为日志分析需要用到数据库中的表信息,因此捕获器在首次启用时,要进行初始化加载需要同步的表的字典信息,把这些信息存在到本地。即便源数据库中断了服务,也不会影响日志分析,所以需要在捕获器中配置源数据库链接相关的信息,包括链接数据库的用户名和口令。
3.2执行器
执行器将接受到的数据执行入库,它能够与目标端数据库不同在一台机器上,执行器由MGR模块、EXEC模块、NET接受子模块组成,XML配置文件中对应元素为base、exec、recv。NET接受子模块不能单独存在,必须有EXEC模块调用;在XML配置文件中也是同样的,recv元素为exec的子元素。
执行器中的主要模块EXEC模块,主要用来进行数据入库,为了兼容大多数的数据库,它采用标准的ODBC驱动接口和符合SQL92标准的SQL语句访问数据库。此处需要配置的参数有数据库链接信息、事务缓存信息以及事务入库的方式等,数据入库是DMHS数据同步的性能瓶颈所在,因此这块参数配置很是重要,需要结合实际的运行环境,源端应用事务的特色来针对性的配置,实现入库性能的最大化。