注册
DMDRS快速上手
技术分享/ 文章详情 /

DMDRS快速上手

,,, 2025/12/26 117 0 0

DMDRS快速上手

一、概述

二、简介

功能介绍

模块介绍

三、部署

安装DRS

配置数据库

配置DRS

四、使用

启动服务

常见命令

五、总结

一、概述

参考文章:代码数据复制软件DMDRS快速上手

达梦数据复制软件(DMDRS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实同步复制。

本文将介绍dmdrs以及部署和简单的使用。

二、简介

功能介绍

DMDRS主要有以下功能

  • 数据迁移

数据迁移是指将源数据库的全量数据一次性迁移到目标数据库

与DTS有什么区别?

DMDTS通常要求在迁移过程中进行停机,以防止源端和目的端数据出现不一致的情况。尤其是在大数据量迁移的情况下,DMDTS可能需要较长的停机时间
而DMDRS则通过增量同步数据的方式,能够在不需要长时间停机的情况下完成数据迁移

  • 数据同步

通过全量数据装载和增量数据同步的组合来实现数据复制功能,实现源数据库在动态的场景下和目标数据库数据的一致性,支持一对一,双向,一对多,多对一,级联,环形等,具体的概念参考DRS数据同步

  • 数据转换

对需要同步或者分发的数据进行高度自定义的转换

模块介绍

详细模块介绍见DMDRS产品模块,这里只简单介绍与本文较为相关的模块

  • Manager模块

负责加载其他模块,以及客户端监听,执行控制命令等

  • cpt模块

主要负责对数据的解析,装载和投递

  • exec模块

负责接受cpt模块发送的数据,在目标库进行应用

三、部署

本次部署的类型:单节点一对一同步 DM - DM

演示的环境:

​ 源库:DM8 CentOS7

​ 目的库:DM8 CentOS7

安装DRS

参考DMDRS的安装,源库和目标库都需要,只需要DMDRS的功能的话可以不勾选达梦融合平台和代理。

配置数据库

除非特殊说明,否则源库和目标库都要执行

创建数据库

在源库和目标库各创建一个名为testdrs的库,使用dbca图形化界面,其中源库勾选创建示例库dmhr,用于模拟后续的数据同步。

屏幕截图 20251219 104554.png

开启归档

在dm.ini中将ARCH_INI设为1,然后创建dmarch.ini,写入以下内容,归档路径,归档文件大小和归档空间限制根据实际填写

[ARCHIVE_LOCAL1] 

ARCH_TYPE = LOCAL 

ARCH_DEST = F:\dmdbms\data\TESTDRS\arch

ARCH_FILE_SIZE = 1024 

ARCH_SPACE_LIMIT = 2048

开启逻辑日记

将dm.ini中的RLOG_APPEND_LOGIC设为1,记得重启数据库

扩大redo日志(可选

可选,使用下述语句查看并修改redo日志大小

SELECT PATH,RLOG_SIZE/1024/1024 FROM SYS.V$RLOGFILE; ALTER DATABASE RESIZE LOGFILE 'F:\dmdbms\data\TESTDRS\TESTDRS01.log' TO 6144

创建同步用户

创建一个用户用来执行dmdrs操作

CREATE USER DMDRS IDENTIFIED BY Dameng123; GRANT DBA TO DMDRS; GRANT PUBLIC TO DMDRS;

创建辅助表

只需源库执行

执行dmdrs目录中的script中的ddl_sql_dm8.sql脚本

执行完检查辅助表和触发器

select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status ='Y'; select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';

结果中应包含4个触发器和9个表

image20251219162555569.pngimage20251219162611812.png

配置DRS

配置源端

源端服务主要包括manager和cpt模块,所以这里只要配置cpt就好

在conf_sample文件夹中,cpt.xml

<?xml version="1.0" encoding="GB18030"?> <drs> <base> <mgr_port>5345</mgr_port><!--如:5345--> <siteid>1</siteid><!--如:1--> </base> <cpt> <name>cpt_dm8</name><!--如:cpt_dm8--> <login> <dbtype>dm8</dbtype><!--如:dm8--> <server>127.0.0.1</server><!--如:192.168.20.24--> <user>DMDRS</user><!--如:DMDRS--> <pwd>Dameng123</pwd><!--如:DMDRS--> <port>5238</port><!--如:5236--> </login> <send> <ip>192.168.221.130</ip><!--如:192.168.20.21--> <port>5345</port><!--如:5345--> <target_name>exec_dm8</target_name><!--如:exec_dm8--> <map> <item type="table">*.*==*.*</item><!--如:*.*==*.*--> <item type="object">*.*==*.*</item> </map> </send> </cpt> </drs>

配置目的端

目的端服务包含manager和exec模块,所以这里只配置exec模块就好

在conf_sample文件夹中,exec.xml

<?xml version="1.0" encoding="GB18030"?> <drs> <base> <mgr_port>5345</mgr_port><!--如:5345--> <siteid>2</siteid><!--如:2--> </base> <exec> <name>exec_dm8</name><!--如:exec_dm8--> <login> <dbtype>dm8</dbtype><!--如:dm8--> <server>192.168.221.130</server><!--如:192.168.20.21--> <user>DMDRS</user><!--如:DMDRS--> <pwd>DMDRS</pwd><!--如:DMDRS--> <port>5238</port><!--如:5236--> </login> </exec> </drs>

四、使用

启动服务

dmdrs提供了启动服务脚本的模板,默认在bin目录下的service_template文件夹中的TemplateService,修改其中的部分参数,并将其移动到bin目录下,可以根据自己的需求更改名字。本文中将其命名为了DrsService

其中的需要配置的参数如下:

INSTALL_HOME=<安装目录>
PROG_DIR=<执行程序目录>
CONF_PATH=<配置文件路径>
EXEC_PROG_NAME=<可执行程序名>
SERVICE_TYPE_NAME=<服务类型名>
服务名 服务脚本模板目录 安装目录 执行程序目录 配置文件路径(以默认配置文件名为例) 默认服务脚本名 可执行程序名 服务类型名
源DMDRS /home/dmdrs/dmdrs5/bin/service_template /home/dmdrs/dmdrs5 /home/dmdrs/dmdrs5/bin /home/dmdrs/dmdrs5/bin/drs.xml DrsService drsvr “drs server”
目标DMDRS /home/dmdrs/dmdrs5/bin/service_template /home/dmdrs/dmdrs5 /home/dmdrs/dmdrs5/bin /home/dmdrs/dmdrs5/bin/drs.xml DrsService drsvr “drs server”
DMDSS /home/dmdrs/dmdrs5/bin/service_template /home/dmdrs/dmdrs5 /home/dmdrs/dmdrs5/bin /home/dmdrs/dmdrs5/bin/dss.xml DssService dssvr “dss server”

默认配置文件是drs.xml,该文件并未提供,你可以在bin目录下新建一个drs.xml然后根据源端或者目的端将上文中在cpt.xml/exec.xml的配置复制过来

源端和目的端都要启动,先启动目的端再启动源端

# 目的端 ./DrsService start # 源端 ./DrsService start

在源端连接Manager模块

# 默认使用同目录下的drs.xml文件 ./drcsl # 或者 指定其他地方的xml文件 ./drcsl ./conf_sample/cpt.xml CSL> connect

屏幕截图 20251224 115000.png

常见命令

装载,同步命令

-- 设置数据库当前lsn值 ALTER cpt_dm8 set ls -- 按模式对数据进行装载 cp cpt_dm8 "sch.name in ('schema_name1','schema_name2')" drop|create|insert -- 按表名对数据进行装载 cp cpt_dm8 "sch.name = 'schema_name' and tab.name = 'table_name'" drop|create|insert -- 对同步的模式进行字典的更新 alter cpt add dict "sch.name in ('schema_name')" -- 启动所有模块 start

检查同步状态命令

-- 检查同步状态(源端 cpt -- 检查exec站点状态(目的端 show exec -- 检查检查点信息(源端 show ckpt -- 检查源端工作线程信息(目的端 show thr -- 检查事务信息(目的端 show trx
  • 实操

使用以下命令启动同步

cp cpt_dm8 "sch.name in ('DMHR')" drop|create|insert
start

使用以下命令查看同步状态

cpt

image20251222103700947.png

使用dm数据管理工具连接目标库查看迁移情况

image20251222103503851.png

可见到模式DMHR已成功迁移。

五、总结

类似dmdrs的软件还有dmhs,经过测试,dmdrs的同步效率明显高于dmhs,因为dmhs采用归档的的方式进行日志的解析,而dmdrs优先解析redo日志。

本文介绍了DMDRS的功能模块,数据同步的原理,以及dmdrs的部署和简单应用,方便读者快速上手dmdrs。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服