DMDRS部署:搭建DM8-DM8数据同步

一、部署要求

1.1 硬件要求

DMDRS服务描述
DMDRS
  • 内存要求
至少2GB的内存空间。推荐配置4GB及以上的内存空间。

源DMDRS对内存空间的需求主要与装载的并发数相关。当内存空间配置低于2GB时,可以调整装载的线程数来降低源DMDRS对内存空间的需求。
  • 磁盘要求
至少10GB的磁盘空间。推荐配置200GB及以上的磁盘空间。

源DMDRS对磁盘空间的需求与应用场景相关。当源DMDRS需要处理大规模查询建表同步、大事务同步和启用大对象延时装载时,建议预留200GB及以上的磁盘空间。
目标DMDRS
  • 内存要求
至少4GB的内存空间。推荐配置8GB及以上的内存空间。

目标DMDRS对内存空间的需求与应用场景相关。目标DMDRS内存空间不足会导致频繁的检查点读写从而影响同步性能。建议配置8GB以上的内存空间。
  • 磁盘要求
至少10GB的磁盘空间。推荐配置1TB及以上的磁盘空间。

目标DMDRS对磁盘空间的需求与应用场景相关。目标DMDRS的磁盘空间不足会影响无主键表同步和大事务同步的性能。当磁盘空间低于20GB时,目标DMDRS将不再执行检查点,从而阻塞源DMDRS服务的检查点。建议预留1TB以上的磁盘空间
DMDSS
  • 内存要求
至少8GB的内存空间。推荐配置32GB及以上的内存空间。

DMDSS对内存空间的需求与应用场景的性能需求相关。充足的内存可以减小IO的次数从而提升数据存储和数据消费的性能,建议配置32GB以上的内存。
  • 磁盘要求
至少16GB的磁盘空间。推荐配置1TB及以上的磁盘空间。

DMDSS对磁盘空间的需求主要与数据同步延时和日志流量相关。充足的磁盘空间可以在同步延时较高或日志流量较大的情况下有效降低源数据库机器对归档存储空间的需求。建议配置为源数据库三天归档日志文件量的磁盘空间大小。当磁盘空间低于10GB时,DMDSS将挂起同步数据的接收,从而间接阻塞源DMDRS服务的日志解析。

 1.2 软件要求

环境项目描述
操作系统CentOS Linux 7
源数据库类型及驱动DM8(单机):DMDPI驱动。
目标数据库类型及驱动DM8(单机):DMDPI驱动。
DMDRS安装包 dmdrs_rev166696_x86_rh6_64_20240808.bin

二、 数据库准备工作 

 在运行DMDRS服务前,数据库管理员需要对数据库做如下准备工作:

配置服务准备工作
源DMDRS除数据迁移场景外,其他应用场景均需要开启源数据库的归档和逻辑日志。
除数据迁移场景外,其他应用场景均需要配置DDL同步。
创建源数据库同步用户DMDRS。
配置源数据库同步用户最小权限。
目标DMDRS创建数据库同步用户DMDRS。
配置目标数据库同步用户最小权限。
DMDSS

 2.1 开启源数据库的归档和逻辑日志

  • 动态开启数据库给归档日志
alter database mount;
alter database add archivelog 'DEST=/data/dmarch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
alter database archivelog;
alter database open;
  • 动态开启数据库附加日志(调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_LOGIC参数值)
call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);

 2.2 配置DDL同步

set define off;
start /home/dmdrs/dmdrs5/bin/scripts/ddl_sql_dm8.sql

 注: /home/dmdrs/dmdrs5 为DMDRS软件安装目录

 2.3 创建数据库同步用户DMDRS

  • 源数据库同步用户最小权限 
-- ## 基础权限
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 需要系统表、系统字典和动态视图的查询权限
GRANT SOI,SVI,VTI TO DMDRS;
-- ## 装载权限
-- 需要非同步用户下待装载表/序列上的查询权限
GRANT SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名>TO DMDRS;
-- ## 同步权限
-- DSC时,需要新增以下权限:
GRANT CREATE TABLE TO DMDRS;
GRANT CREATE PACKAGE TO DMDRS;
  • 目的端数据库同步用户最小权限 
-- ## 基础权限
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
GRANT RESOURCE TO DMDRS;
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 启动时需要查询数据库的相关参数信息
GRANT SOI TO DMDRS;
-- ## 装载、同步相关权限
-- 需要如下系统表、系统字典及动态视图的查询权限
GRANT SVI,VTI TO DMDRS;
-- ## 装载与同步相关权限
-- 需要非同步用户模式下已存在的待同步表/序列的操作权限
GRANT INSERT ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT UPDATE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT DELETE ON <目标表的模式名>.<目标表名> TO DMDRS;
GRANT SELECT ON <目标序列的模式名>.<目标序列名> TO DMDRS;
-- 需要非同步用户模式下未存在的表/序列的数据的操作权限。也可以在目标同步表创建后,同上行所述单独为每张表赋予操作权限
GRANT INSERT ANY TABLE TO DMDRS;
GRANT UPDATE ANY TABLE TO DMDRS;
GRANT DELETE ANY TABLE TO DMDRS;
GRANT SELECT ANY TABLE TO DMDRS;
GRANT SELECT ANY SEQUENCE TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
GRANT CREATE ANY <对象类型> TO DMDRS;
GRANT ALTER ANY <对象类型> TO DMDRS;
GRANT DROP ANY <对象类型> TO DMDRS;
-- 需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限
GRANT EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" TO DMDRS;
GRANT CREATE PROCEDURE TO <非同步用户下模式所属的用户>;

三、 DMDRS准备工作

本文搭建是一对一同步,将源数据库的数据通过DMDRS单向地同步到目标数据库。

3.1 安装部署dmdrs软件

 上传软件安装到指定目录,如:/data/dmsoft,执行以下命令开始安装:

/dmdrs_xxx.bin -i

根据需求,安装相关的管理组件或代理组件

建议元数据库选择外置库,方便查询和管理

接着就是根据提示选择下一步即可。

需要注意,如果自带的dmdrs授权过期,启动时会报错,需要将dmdrs授权放置在安装目录的bin目录下,重启服务即可。

3.2 设置运行用户权限

#设置源DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限,并设置运行用户同数据库归档文件所在目录属同一用户组,此用户组应对归档文件所在目录及子目录有读权限。


#设置目标DMDRS服务的运行用户对服务所在目录及子目录的读、写和执行权限。

3.3 源端和目的端设置环境变量

#在源DMDRS和目标DMDRS服务器的环境变量中添加DMDPI驱动文件路径。

#打开.bash_profile配置文件。
$ vi ~/.bash_profile

#在.bash_profile配置文件末尾增加DMDPI驱动路径。
export LD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH

#保存并退出vi编辑器,使环境变量生效。
$ source ~/.bash_profile

#查看环境变量是否设置成功。
$ echo $LD_LIBRARY_PATH

四、DMDRS配置

4.1 配置源DMDRS

进入安装目录下的bin目录,新建drs.xml:

cd /home/dmdrs/dmdrs5/bin/
vi drs.xml

配置源端的配置文件内容,如下:


<?xml version="1.0" encoding="GB18030"?>
<drs>
    <base>
        <mgr_port>5345</mgr_port><!--如:5345-->
        <siteid>1</siteid><!--如:1-->
        <mem_size>1</mem_size>
    </base>
    <cpt>
        <name>cpt_dm8</name><!--如:cpt_dm8-->
        <login>
            <dbtype>dm8</dbtype><!--如:dm8-->
            <server>192.***.**.100</server><!--如:192.168.20.24-->
            <user>DMDRS</user><!--如:DMDRS-->
            <pwd>密码</pwd><!--如:DMDRS-->
            <port>5236</port><!--如:5236-->
        </login>
        <send>
            <ip>192.***.**.101</ip><!--如:192.168.20.21-->
            <port>5345</port><!--如:5345-->
            <target_name>exec_dm8</target_name><!--如:exec_dm8-->
            <map>
                <item>TEST.*==TEST.*</item><!--如:*.*==*.*-->
            </map>
        </send>
    </cpt>
</drs>

4.2 配置目的端DMDRS

进入安装目录下的bin目录,新建drs.xml:

cd /home/dmdrs/dmdrs5/bin/
vi drs.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.***.**.101</server><!--如:192.168.20.21-->
            <user>DMDRS</user><!--如:DMDRS-->
            <pwd>密码</pwd><!--如:DMDRS-->
            <port>5236</port><!--如:5236-->
        </login>
    </exec>
</drs>

五、管理DMDRS

5.1 配置源端DMDRS服务(目的端一样)

5.1.1 配置DMDRS服务脚本

将服务脚本模板TemplateService拷贝到执行程序目录,并修改服务脚本的名称为默认服务脚本名。

cd /home/dmdrs/dmdrs5/bin/service_template
mv TemplateService ../DrsService

打开并修改服务脚本中的相关配置参数。

INSTALL_HOME=<安装目录>
PROG_DIR=<执行程序目录>
CONF_PATH=<配置文件路径>
EXEC_PROG_NAME=<可执行程序名>
SERVICE_TYPE_NAME=<服务类型名>

5.1.2 启动目的端、源端DMDRS服务

cd /home/dmdrs/dmdrs5/bin
./DrsService start/stop

5.2 数据迁移

数据迁移启动顺序:先启动EXEC模块,无需启动CPT模块。

5.2.1 启动目的端exec模块

cd /home/dmdrs/dmdrs5/bin 
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务

#启动exec模块
CSL> start exec_dm8

 5.2.2 源端执行数据迁移

数据迁移装载示例如下:

cd /home/dmdrs/dmdrs5/bin 
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务

#全量装载TEST模式下的所有表数据
CSL> alter cpt_dm8 cp "sch.name='TEST' " 

#全量装载TEST模式下的表employee数据
CSL> alter cpt_dm8 cp "sch.name='TEST' and tab.name='employee'"

#装载一类对象:装载TEST模式下的所有触发器。
CSL> cp cpt_dm8 "sch.name='TEST'" CREATE TRIGGER

5.3 数据同步

数据同步启动顺序:先启动EXEC模块,再启动CPT模块。

5.3.1 启动目的端exec模块

(参考5.2.1)

5.3.2 启动源端cpt模块

cd /home/dmdrs/dmdrs5/bin 
./drcsl drs.xml #登录控制台
CSL> connect #连接源DMDRS服务

5.3.3 配置起始LSN并进行增量同步

#设置数据库当前最新的日志LSN作为日志解析的起始位置。如需指定归档文件作为起始位置,请参考《DMDRS参考手册》进行设置。
CSL> alter cpt_dm8 set lsn

#启动源DMDRS服务中的CPT模块。
CSL> start

#将源数据库中TEST模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库。
CSL> alter cpt_dm8 add table "sch.name='TEST'" 

资料参考:

更多的数据迁移,数据同步命令和搭建步骤查看《DMDRS参考手册》和《DMDRS搭建手册-DM8》,其中文中用到的命令详情可参考文档中如下几个章节的内容:

DMDRS中xml配置相关参数详解参考《DMDRS参考手册》中"1 DMDRS配置参数"。

对象装载查看文档《DMDRS参考手册》中"2.3.1 数据迁移"小节。

对象装载查看文档《DMDRS参考手册》中"2.3.2 对象装载"小节。

动态添加、更新、删除增量同步表等查看文档《DMDRS参考手册》中"2.3.4 添加、更新、删除和终止增量同步表"小节。

动态添加和删除同步表查看文档《DMDRS参考手册》中"2.3.5 添加同步表"小节。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/946549.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter:打包apk,详细图文介绍

困扰了一天&#xff0c;终于能正常打包apk安装了&#xff0c;记录下打包的流程。建议参考我这篇文章时&#xff0c;同时看下官网的构建说明。 官网构建并发布 Android 应用详情 1、AS创建Flutter项目 2、cmd执行命令 生成一个sunluyi.jks的文件&#xff0c;可以自行把sunluyi替…

【电源专题】LDO关键DC参数——效率

在讲到电源的效率方面,很多时候网上最经常看到的是“LDO的效率低,开关电源效率高,所以LDO需要更大的散热器来帮助耗散热能”。 比如如下所示为网上找到的一些总结,一般也是大家所熟知的: 是的,这描述在一定的使用条件下是正确对的,但并不完全对,因为不同的工作…

互联网直播点播平台EasyDSS无人机视频推拉流技术实现工地远程监控巡检直播

在建筑行业&#xff0c;施工现场的安全管理和实时监控一直是项目管理中的重点。随着技术的进步&#xff0c;无人机工地直播技术成为了一种新兴的解决方案&#xff0c;它不仅能够提高施工透明度&#xff0c;还能够加强现场安全管理。EasyDSS作为一种先进的流媒体技术平台&#x…

9.若依-自定义表单构建

表单构建工具&#xff0c;开发者通过图形界面和拖拽等操作&#xff0c;可以快速构建复杂的表单。 需求&#xff1a;做一些复杂的功能提交&#xff0c;涉及到多张标的数据提交。 自定义一个特殊表单页面 1.拖拉一个布局组件中行容器&#xff0c;然后在组件属性中设置表单删格在…

芊芊测字,免费测字,ai测字(1.0)

纯娱乐 芊芊测字网站&#xff1a;芊芊测字-ai免费测字

【Leecode】Leecode刷题之路第98天之验证二叉搜索树

题目出处 98-验证二叉搜索树-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 98-验证二叉搜索树-官方解法 方法1&#xff1a;递归 思路&#xff1a; 代码示例&#xff1a;&#xff08;J…

[Qt] 信号和槽(1) | 本质 | 使用 | 自定义

目录 一、信号和槽概述 二、本质 底层实现 1. 函数间的相互调用 2. 类成员中的特殊角色 三、使用 四. 自定义信号和槽 1. 基本语法 (1) 自定义信号函数书写规范 (2) 自定义槽函数书写规范 (3) 发送信号 (4) 示例 A. 示例一 B. 示例二 —— 老师说“上课了”&…

高效使用 cursor

设置 cursor 基础规则&#xff1a; 在 settings > General > Rules for AI 中设置自定义规则&#xff0c;以后 cursor 生成代码会基于该规则生成&#xff1b; 如果要编写复杂代码&#xff0c;可以在项目根目录创建一个 .cursorrules 文件&#xff0c;设置复杂的规则&…

【Kafka 消息队列深度解析与应用】

Kafka 消息队列深度解析与应用 一、Kafka 概述 &#xff08;一&#xff09;产生背景 Kafka 最初是由 LinkedIn 开发&#xff0c;旨在解决其内部海量数据的实时传输问题。在现代大数据环境下&#xff0c;企业需要处理海量的数据流入和流出&#xff0c;包括用户的行为数据、系…

【无线传感网】无线传感器网络覆盖技术

文章目录 覆盖算法设计思路及性能评价标准覆盖感知模型布尔感知模型概率感知模型 无线传感网络覆盖算法分类按照配置方式确定性覆盖随机性覆盖 根据覆盖目标面覆盖点覆盖栅栏覆盖 典型的WSN覆盖算法与协议基于网格的覆盖定位传感器配置算法圆周覆盖连通传感器覆盖轮换活跃/休眠…

canvas+fabric实现时间刻度尺(二)

前言 我们前面实现了时间刻度尺&#xff0c;鼠标移动显示时间&#xff0c;接下来我们实现鼠标点击某个时间进行弹框。 效果 实现 1.监听鼠标按下事件 2.编写弹框页面 3.时间转换 <template><div><canvas id"rulerCanvas" width"1200"…

Python-MNE-源空间和正模型04:头模型和前向计算

我们知道&#xff0c;在MNE分析中坐标是很重要的&#xff0c;这个前面也提及过了配准的一些方法&#xff0c;总的来说&#xff0c;MNE和freesurfer中使用的配准系统以及他们之间的关系如下图所示&#xff1a;除了传感器坐标之外&#xff0c;所有的坐标系都是笛卡尔坐标系&#…

Linux 内核调试

系列文章目录 Linux内核学习 Linux 知识 QEMU 虚拟机 Linux 调试视频 近阶段补充知识 WSL Ubuntu 文章目录 系列文章目录一、WSL二、QEMU1、安装2、退出 三、构建根文件系统1、下载 BusyBox2、编译3、构建文件目录&#xff1a;Makefileinit 四、内核编译1、下载2、构建 五、调试…

SpringBoot 事务

前情提要 飞书的文档不好转移,可以直接看我的飞书:Docs 什么是事务 是一组操作的集合,是一个不可分割的操作 事物会将所有操作当作一个整体,同时对数据库进行操作请求,这些操作要么全部成功,要么全部失败 总会有一些操作,需要同步进行,这个时候就需要使用事务 数据库中,自…

汇川Easy系列正弦信号发生器(ST源代码)

正弦余弦信号发生器CODESYS和MATLAB实现请参考下面文章链接: 正弦余弦信号发生器应用(CODESYS ST源代码+MATLAB仿真)_st语言根据输入值,形成正弦点-CSDN博客文章浏览阅读410次。本文介绍了如何在CODESYS编程环境中创建正弦和余弦信号发生器。通过详细的PLC梯形图和SCL语言代码…

【JMeter详解】

JMeter详解 Apache JMeter 是一个开源的、100%纯Java应用程序&#xff0c;设计用于负载测试和性能测量。它最初是为测试Web应用程序而设计的&#xff0c;但后来扩展到其他测试功能。JMeter可以用来对静态和动态资源&#xff08;如静态文件、Servlets、Perl脚本、Java对象、数据…

uniapp:微信小程序文本长按无法出现复制菜单

一、问题描述 在集成腾讯TUI后&#xff0c;为了能让聊天文本可以复制&#xff0c;对消息组件的样式进行修改&#xff0c;主要是移除下面的user-select属性限制&#xff1a; user-select: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms…

查看 GitHub 仓库的创建时间

查看 GitHub 仓库的创建时间 1. https://api.github.com/repos/{owner}/{repository}2. curl -s https://api.github.com/repos/{owner}/{repository} | jq .created_atReferences 1. https://api.github.com/repos/{owner}/{repository} REST API endpoints for repositories…

VScode怎么重启

原文链接&#xff1a;【vscode】vscode重新启动 键盘按下 Ctrl Shift p 打开命令行&#xff0c;如下图&#xff1a; 输入Reload Window&#xff0c;如下图&#xff1a;

【无线传感网】WSN数据管理技术

文章目录 WSN数据管理的基本概念以数据为中心的WSN数据库与分布式数据库相比具有的特殊性WSN数据管理技术的研究热点 WSN数据管理的关键技术无线传感器网络数据存储结构网外集中式存储方案网内分层存储方案网内本地存储方案以数据为中心的网内存储方案 数据查询处理技术查询类型…