注册
DMDRS主备原理与搭建
专栏/技术分享/ 文章详情 /

DMDRS主备原理与搭建

济楚 2026/07/17 184 1 0
摘要

一、DMDRS主备简介

DMDRS主备由两个功能相同的DMDRS服务组成,一个作为主节点,另一个作为备节点。正常情况下由主节点承担数据捕获或数据写入任务;主节点异常时,备节点在满足切换条件的情况下接替工作,减少数据复制中断。

源DMDRS和目标DMDRS可以分别搭建主备:

  • 源DMDRS主备由Manager管理模块和CPT模块组成,CPT负责捕获源数据库的数据。
  • 目标DMDRS主备由Manager管理模块和EXEC模块组成,EXEC负责将接收到的数据写入目标数据库。

本文以“源数据库DSC→目标数据库Oracle 11g”为例,搭建源DMDRS主备和单节点目标DMDRS。

二、主备工作原理

数据同步开始后,源DMDRS主节点通过CPT模块读取源数据库的归档日志和逻辑日志,从指定LSN开始解析数据库变化,并将解析后的数据发送给目标DMDRS。目标DMDRS通过EXEC模块接收数据并写入目标数据库。

源DMDRS备节点与主节点保持主备关系,记录同步状态和检查点信息。当主节点无法继续工作时,备节点根据当前同步状态判断是否能够切换。

主备切换需要满足以下条件:

  • 主节点访问备节点的时间间隔不超过5分钟。
  • 主节点与备节点的同步时延不超过1小时。
  • 主备节点的检查点差值不超过规定阈值,Oracle为20000,DM8为100000。

三、环境规划

本次搭建环境如下:

服务 地址 站点号 作用
源DMDRS主节点 192.168.20.24:5345 1 捕获DSC数据
源DMDRS备节点 192.168.20.25:5345 1 作为源端备用节点
目标DMDRS 192.168.20.21:5345 2 向Oracle写入数据

源DMDRS服务器需要配置DMDPI驱动,目标DMDRS服务器需要配置Oracle OCI驱动。

export LD_LIBRARY_PATH=<数据库驱动路径>:$LD_LIBRARY_PATH source ~/.bash_profile

四、数据库准备

1. 开启归档和逻辑日志

源数据库需要开启归档,并将RLOG_APPEND_LOGIC设置为1。

ALTER DATABASE MOUNT; ALTER DATABASE ADD ARCHIVELOG 'DEST=<归档文件路径>,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240'; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN; CALL SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);

DSC环境还需要开启事务视图同步参数:

CALL SP_SET_PARA_VALUE(1,'DSC_TRX_VIEW_SYNC',1);

2. 配置DDL同步

需要同步DDL时,在源数据库执行DMDRS提供的脚本:

SET DEFINE OFF; START ddl_sql_dm8.sql;

3. 准备同步用户

源数据库和目标数据库分别创建DMDRS同步用户,并授予连接数据库、读取源表、访问日志信息和操作目标表所需的权限。

五、配置DMDRS主备

1. 配置目标DMDRS

目标端配置文件使用exec.xml

<?xml version="1.0" encoding="GB18030"?> <drs> <base> <mgr_port>5345</mgr_port> <siteid>2</siteid> </base> <exec> <name>exec_ora</name> <login> <dbtype>oracle</dbtype> <server>192.168.20.21:1521/orcl</server> <user>DMDRS</user> <pwd>DMDRS</pwd> </login> </exec> </drs>

2. 配置源DMDRS主节点

源端主节点使用cpt_dsc_master.xml。除数据库连接、发送目标和DSC信息外,需要将节点模式设置为master,并指定备节点。

<cluster> <mode>master</mode> <standby> <ip>192.168.20.25</ip> <port>5345</port> <target_name>cpt_dsc</target_name> </standby> </cluster>

源端发送目标配置如下:

<send> <ip>192.168.20.21</ip> <port>5345</port> <target_name>exec_ora</target_name> <map> <item>RESOURCES.EMPLOYEE==RESOURCES.EMPLOYEE</item> </map> </send>

3. 配置源DMDRS备节点

备节点使用cpt_dsc_slave.xml。数据库连接、CPT名称、发送目标和DSC配置应与主节点对应,节点模式设置为slave

<cluster> <mode>slave</mode> </cluster>

主备节点的siteid和CPT模块名称需要保持一致,Manager管理端口必须能够正常通信。

六、启动与同步

服务启动顺序为:

  1. 启动目标DMDRS。
  2. 启动源DMDRS主节点。
  3. 启动源DMDRS备节点。
  4. 在源DMDRS主节点启动CPT模块。

服务脚本主要配置安装目录、执行程序目录和XML配置文件路径。

INSTALL_HOME=/home/dmdrs/dmdrs5 PROG_DIR=/home/dmdrs/dmdrs5/bin CONF_PATH=<XML配置文件路径> EXEC_PROG_NAME=drsvr SERVICE_TYPE_NAME="drs server"

启动服务:

./DrsService start

三个DMDRS服务全部启动后,在源DMDRS主节点连接控制台:

./drcsl cpt_dsc_master.xml

设置日志解析起点并启动CPT:

CSL> connect
CSL> alter cpt_dsc set lsn
CSL> start

RESOURCES.EMPLOYEE加入同步,并先执行全量数据装载:

CSL> alter cpt_dsc add table "sch.name='RESOURCES' and tab.name='EMPLOYEE'"

全量装载完成后,CPT继续解析新增的日志,后续数据变化会持续同步到目标数据库。

七、结果验证

在源数据库的RESOURCES.EMPLOYEE表中插入一条测试数据,然后查询目标数据库中的对应表。如果目标端能够查询到相同数据,说明全量装载和增量同步已经正常运行。

主备环境还需要检查:

  • 主节点和备节点能否正常通信。
  • 主节点CPT是否处于运行状态。
  • 主备节点的同步时延和检查点差值是否正常。
  • 停止主节点后,备节点是否具备接管条件。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服