注册
DMHS
培训园地/ 文章详情 /

DMHS

Talking 2023/09/15 1327 0 0

DMHS

一.概述

DMHS 同步服务主要包括四个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输模块(NET)以及执行模块(EXEC),这些模块统一由管理模块(MGR)进行管理执行。以下是DMHS模块组成图。
image20230817164445816.png

1.捕获模块(CPT)

对源数据库增量日志进行捕获并完成解析,结合数据字典信息提取其中数据的变化如插 入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),然后将这些操作及数据转换为内部的消息格式投递给网络(NET)模块。

2.装载模块(LOAD)

DMHS 在进行增量数据同步之前,需完成同步表的字典装载和表数据的初始装载。数据初始装载用于将源端数据库的初始数据同步至目标数据库,使得源库和目标库的初始数据保持一致。数据初始装载的有两种方式:直接的数据装载方式和备份文件装载方式。直接的数据装 载方式基于源数据库数据的直接查询抽取装载;备份文件装载方式则是基于数据库自身的数据备份还原,将源库初始数据备份后在目标库进行还原达到初始数据一致。备份文件装载方式要求源库和目标库为同一类型的数据库系统,目前 DMHS 仅支持 DM 数据库的备份文件 装载方式。

3.传输模块(NET)

  • NET 消息发送子模块:经过 CPT 捕获到的日志操作,在这里进行分发;
  • NET 消息接收子模块:经上一级 NET 消息发送子模块通过网络传输的消息,在这里由 NET 消息接收子模块通过网络(TCP/IP)接收并发送给 EXEC 模块。
  • 单独实现转发和路由功能,需要在配置文件中独立配置。

4.执行模块(EXEC)

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

image20230818100535483.png

系统特性

  • 高可扩展性:DMHS 的开放式体系结构使其能够适应各种异构数据平台。
  • 高可用性:DMHS 采用基于日志的结构化数据同步技术,实时数据同步不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响。
  • 实时同步:DMHS 采用并行处理体系,能够实时读取主机源数据库日志,以较低的资源占用实现大批量的数据实时同步。
  • 高可靠性:DMHS 的数据同步以源数据库的事务为单位,严格按照主机业务系统事务顺序实施数据同步,保障备机数据库与主机数据库的事务级完整性和一致性,确保备机数据库符合主机业务系统事务逻辑。
  • 备机可读写:备机数据库系统是一套独立的可读写数据库系统。
  • 同步内容可定制:DMHS 支持同步数据可筛选、数据过滤和简单的数据转换,数据筛选通过用户在需要同步的表上定义过滤和转换规则来实现。
  • 快捷部署:DMHS 采用轻量级框架设计,支持初次数据装载全同步功能,能够在不中断业务的情况下,将主机数据库中的当前数据平滑的装载到备机数据库中。
  • 跨平台:DMHS能够在目前流行的各种软硬件平台和数据库环境下传输数据。

二.管理模块

管理模块(MGR)是同步服务的启动框架,根据配置文件加载并启动 CPT、EXEC 或 NET 模块,从而提供完善的捕获器功能、执行器功能、路由器功能或转发器功能。

原理分析

MGR 模块可以解析配置参数,根据配置参数启动 DMHS 的捕获器功能、执行器功能、 转发器功能或路由功能。当 MGR 启动捕获器功能时,MGR 会调度 CPT 模块和 NET 模块 (发送子模块);当启动执行器功能时,会调度 NET 模块(接收子模块)和 EXEC 模块; 当启动转发器或路由器功能时,会调度 NET 模块(接收子模块和发送子模块)。 MGR 模块主要组成部分如下图(蓝色虚线为可选):

image20230818091337254.png

基本配置

MGR 模块在配置文件中对应的 XML 元素为 base,MGR 模块必须在配置文件中设置站点号和管理端口号,并给出正确的参数值,否则 MGR 模块无法正常启动。

  • 站点号siteid:由于数据实时同步常常是由多个 DMHS 数据实时同步服务组成,为了避免造成数据 同步混乱,每个 DMHS 服务必须有唯一标识,即站点号。在一个数据实时同步系统中,站点号不能重复,取值范围是 1 到 30000。
  • 管理端口号 mgr_port:MGR 管理端口号用于监听该端口上的连接,用于执行客户端工具发过来的命令和用来接收统计信息,取值范围在 1000~ 65535。

MGR可选功能

  • 统计信息:用于 WEB 客户端显示历史曲线图。
  • 内置FTP:提供了内置 FTP 功能,不需要额外配置 FTP 服务器。
  • 数据库登录口令加密:在选择使用加密功能后,填写配置文件中的数据库登录口令参数时, 需要通过控制台工具(dmhs_console)获得相应密文,再将密文写入配置文件。
  • 日志记录策略:用户可以通过配置文件的设置,将 DMHS 运行的错误消息和正常消息分开记录;或者,将错误消息和正常消息都记 录在一个日志文件中,同时冗余出一份单独记录错误消息。
  • DMHS主备:DMHS 支持数据同步的主备服务,要启用 DMHS 主备功能, 需要设置 group 参数。在配置文件的 base 功能标签中配置 group 参数,默认不启用。

三.DMHS部署

1.MGR配置方法

要启动 DMHS 数据实时同步服务,首先要启动 MGR 模块的管理调度功能,然后 MGR 模块作为启动框架再进行日志捕获、数据执行等功能的调度及使用。在启动 MGR 启动框架运行之前,必须完成配置文件的参数设置。配置文件位于 DMHS 安装程序目录的 bin 文件
夹中,是以 dmhs.hs 命名的 XML 文件,遵循 XML 标准格式。创建或添加配置文件的方法如下:

  • 安装程序及配置助手 HSCA 提供了 MGR 模块的参数配置功能,配置完 标签后以 dmhs.hs 命名保存到 DMHS 安装程序目录的 bin 文件夹中。
  • 直接编写配置文件,新建并完成 dmhs.hs 配置文件的标签,保存到 DMHS 安装程序目录的 bin 文件夹中。

2.启动停止MGR

在使用 DMHS 软件时,必须先启动 MGR。在软件中对应的程序在安装目录的 bin 文件 夹下,名为 dmhs_server,启动命令:./dmhs_server。在停止所有的捕获器模块、执行器模块、路由器模块、转发器模块之后,才能停止 DMHS 管理模块 MGR,在运行的 dmhs_server 程序中,执行以下 DMHS 命令:exit。

3.启动捕获器

确保 DMHS 配置文件中已有该捕获器配置参数,如果并非首次启动该捕获器,可直接启动该捕获器。首次启动该捕获器,请先确保以下准备工作是否完成:

  • MGR 启动框架已处于正常运行状态
  • 下一级 DMHS 服务(包括与当前捕获器关联的执行器、路由器或转发器)已开启,且处于正常运行状态
  • 如果需要同步 DDL,必须在源库建立一个全库级的事件触发器
  • 源端日志开始分析的日志起始位置已完成初始化
  • 初始数据已从源端数据库管理系统装载到目标端数据库管理系统

当以控制台方式启动 dmhs_server 时,用户可以在服务器控制台输入服务器命令:start cpt。

4.启动执行器

如果要启动 DMHS 执行器功能,那么就需要已启动的 MGR 管理模块根据数据实时同步系统的需求去调度 EXEC 模块和 NET 接收子模块。当以控制台方式启动 dmhs_server 时,用户可以在服务器控制台输入服务器命令:start exec。

5.启动路由器

DMHS 数据实时同步系统中的路由器适用于捕获器和执行器被网关隔断的环境,捕获器和执行器无法通过 NET 实现网络直连,需要经过第三台机器中转的情况。DMHS 的路由功能一般配置在除捕获器、执行器之外的第三台机器上,它负责把源端的 CPT 模块和执行端的 EXEC 模块进行映射,从而实现跨网关同步,并且一个 DMHS 的路由器可以实现 N 对 N 的映射。

路由器由 DMHS 的 MGR 模块、NET 接收子模块和 NET 发送子模块组成,如下所示。

image20230818150517461.png

当以控制台方式启动 dmhs_server 时,用户可以在服务器控制台输入服务器命令:start recv。

6.启动转发器

DMHS 数据实时同步系统中的转发器器适用在数据转发适用在一个捕获器需要对应多个执行器的环境,或者捕获器和执行器之间存在物理隔离网闸,无法通过网络直连需要通过文件中转的情况。转发和路由的不同在于,路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行修改,而转发功能则可以针对每个下一级配置不同的过滤和映射。
image20230818152052300.png

当以控制台方式启动 dmhs_server 时,用户可以在服务器控制台输入服务器命令:start recv。

四.复杂应用场景

1.双向同步

双向同步适用于“双活”数据库场景,即一个系统中存在 2 个数据库实例,并且 2 个数据库实例不存在主备关系,每个数据库实例都对应用系统提供服务,应用系统可能对 2 个数 据库实例进行数据修改。双向同步方案中,需对 2 个数据库实例分别部署一套 DMHS,每套 DMHS 包含日志捕获模块、数据入库模块及数据传输模块,如下图所示:

image20230818150517461.png

双向同步中,数据库 A 的增量数据会同步到数据库 B,数据库 B 的增量操作会同步到数据库 A。为避免同一个事务在数据库 A、B 上重复执行,进入死循环状态,DMHS 必须对接收到的增量数据进行判断,对未执行过的事务,执行模块将增量数据入库;对已经执行过的事务,执行模块将增量数据丢弃。

2.级联同步

级联同步是多个一对一同步的组合,整个同步系统中,不存在同步环路,数据流向为树状结构,除根节点外,每个同步节点都有唯一的数据来源,同步子节点中的数据,为上层节点数据的超集。级联同步适用于以下两种情况:

  • 系统中数据有层次或有包含关系。此情况下,数据库节点,除从上层节点获取同步数据外,自身节点会产生数据。
  • 多节点的数据备份。此情况下,只有根节点数据库产生数据,每个非根节点都只从上层节点获取数据。

配置级联同步时,根节点不包含数据入库模块,叶子节点不包含日志捕获模块,其他的节点则必须包含日志捕获模块及数据入库模块。如果系统中数据有层次或有包含关系,装载时,需从树状结构的底层开始装载,A->B->C 的同步,需首先装载 B->C, 再装载 A->B。

3.环状同步

环状同步是对双向同步的扩展。环状同步系统中,至少存在三个同步节点,每个同步节点涉及的数据库完全独立,其中任意一个节点数据库的数据修改,都会同步到其他数据库中。

环状同步中,需对已经执行过的事务进行过滤,避免事务的重复执行。具体过程如下: 数据接收节点在接收到事务时,首先解析消息包中的事务标记信息,然后根据事务标记信息 判断事务是否已经执行,如果事务已经在本节点执行,则将事务丢弃,否则将事务入库,并 在事务标记中添加本节点信息。

4.一对多同步

一对多同步适用于向多个目标分发数据的场景,同时,可根据需要,对源端数据进行过滤或有选择发送。一对多中,每一个执行模块都有一个日志捕获模块与其对应,源端各个日志捕获模块互不干扰。进行日志分析时,各个日志捕获模块都需要进行日志读取、日志分析。

5.多对一同步

多对一同步方案,适用于从多个数据库到单个目标库进行数据汇总。多对一同步中,需首先在每个源端执行数据装载操作,该操作与一对一同步相同,需保证不同源端数据库中的数据映射到目的库中,没有数据冲突。

6.RAC 环境同步

DMHS 支持源端为 RAC 环境的数据库同步,在 RAC 环境中,源端数据库同样需要进行开启附加日志、开启归档的操作。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服