-
DMDRS介绍
达梦数据实时同步软件(以下简称 DMDRS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。
DMDRS基于成熟的关系数据模型和标准接口,支持多种软硬件平台,能够灵活的配置出一对一、一对多、多对一、多对多以及级联等多种形式的复制拓扑结构,可以广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发、多业务中心等业务领域。
DMDRS的组成原理框图中包含源端数据库、目标端数据库、源端DMDRS服务以及目标端 DMDRS 服务,其中源端DMDRS服务主要由装载模块(LOAD)、日志捕获分析模块(CPT)、传输模块(NET)以及管理服务模块(MGR)组成;
目标端DMDRS服务则由执行模块(EXEC)和管理服务模块(MGR)组成。
在源端DMDRS的CPT模块采用优化的日志扫描算法实现增量日志数据的快速捕获分析,并将分析完成后的日志数据转换为内部的消息格式,然后通过网络将消息发送至目标端DMDRS服务;
在目标端DMDRS服务接收到源端的日志消息后,对消息进行处理,通过多线程并行执行的方式将同步数据应用至目标端数据库,实现数据实时同步。
DMDRS 同步服务主要包括四个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输模块(NET)以及执行模块(EXEC),这些模块统一由管理模块(MGR)进行管理执行。
管理模块(MGR):MGR模块可以解析配置参数,根据配置参数启动DMDRS的捕获器功能、执行器功能、转发器功能或路由功能。当MGR启动捕获器功能时,MGR会调度CPT模块和NET模块(发送子模块);当启动执行器功能时,会调度NET模块(接收子模块)和EXEC模块;当启动转发器或路由器功能时,会调度NET模块(接收子模块和发送子模块)。
捕获模块(CPT): 对源数据库增量日志进行捕获并完成解析,结合数据字典信息提取其中数据的变化如插入(INSERT)、删除(DELETE)、修改(UPDATE)和对象操作(DDL),然后将这些操作及数据转换为内部的消息格式投递给网络(NET)模块。
装载模块(LOAD):DMDRS 在进行增量数据同步之前,需完成同步表的字典装载和表数据的初始装载。表字典装载将所有同步表的数据字典信息从源库中抽取出来,保存为本地的数据字典文件,用于数据同步过程中提供准确表定义信息。数据初始装载用于将源端数据库的初始数据同步至目标数据库,使得源库和目标库的初始数据保持一致。
传输模块(NET): 传输模块NET应用于捕获器CPT、路由器ROUTE、转发器 TRANSFER、执行器 EXEC,分为接收子模块(RECV)与发送子模块(SEND),在同步中承担节点之间数据的收发任务。
1) 日志捕获 CPT 模块需要通过 NET 模块来发送数据。
2) EXEC 模块则需要通过 NET 模块接收数据。
3) ROUTE 通过 NET 模块进行消息转发。
4) TRANSFER 通过 NET 模块进行消息转发。
同步链路中多对一、一对多和多对多的数据传输都是通过 NET 模块来实现的。RECV子模块与 SEND 子模块在 DMDRS 配置文件中的位置如下所示:
执行模块(EXEC) EXEC 模块主要的功能是对 CPT 捕获的增量数据进行入库,它目前采用符合 SQL92 标准的 SQL 语句,通过 ODBC 接口和目标端数据库交互(在初始化装载时如果选择快装功能,它需要加载快装模块,快装模块使用了 OCI 接口),所以它可以部署在能够和目标端数据库连通的任意一个节点上。在整个同步链路中,EXEC 模块对整个同步的性能起着决定性的作用,需要根据相应的同步场景配置好 EXEC 模块参数,方可达到最优的同步性能。
节点 |
操作系统 |
IP地址 |
数据库类型 |
源端 |
麒麟v10SP3 |
84.0.191.2 |
DM8单机 |
目标端 |
麒麟v10SP3 |
84.0.191.3 |
DM8单机 |
#获取系统位数
# getconf LONG_BIT
64
#查询系统内核
# uname -a
Linux dm8db01 4.19.90-52.22.v2207.ky10.x86_64 #1 SMP Tue Mar 14 12:19:10 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
#检查内存
为了保证 DMDRS 的正确安装和运行,要尽量保证操作系统至少 1GB 的可用内存(RAM)。如果可用内存过少,可能导致 DMDRS 安装或启动失败.
# grep MemTotal /proc/meminfo