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 添加同步表"小节。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仓颉笔记——windows11安装启用cangjie语言,并使用vscode编写“你好,世界”

2025年1月1日第一篇日记&#xff0c;大家新年好。 去年就大致看了一下&#xff0c;感觉还不错&#xff0c;但一直没上手&#xff0c;这次借着元旦的晚上安装了一下&#xff0c;今年正式开动&#xff0c;公司众多的应用国产化正等着~~ 第一步&#xff1a;准备 官网&#xff1a;…

datalist的作用?怎么用的?

在 HTML 中&#xff0c;<datalist> 元素用于为 <input> 元素提供一个可选项列表&#xff0c;帮助用户通过预定义的选项进行快速选择。它是一个增强输入体验的功能&#xff0c;类似于自动完成&#xff08;autocomplete&#xff09;&#xff0c;但与传统的 <selec…

Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配

这两天维护的一个项目&#xff0c;使用arm64-v8a指令集编译时遇到了报错&#xff0c;提示类型不匹配&#xff0c;具体报错的代码【脚本根据C源文件生成的中间文件】如下&#xff1a; const google::protobuf::RepeatedField<unsigned long long>& ret cobj->equi…

1、ELK的架构和安装

ELK简介 elk&#xff1a;elasticsearch logstash kibana&#xff0c;统一日志收集系统。 elasticsearch&#xff1a;分布式的全文索引引擎的非关系数据库&#xff0c;json格式&#xff0c;在elk中存储所有的日志信息&#xff0c;架构有主和从&#xff0c;最少需要2台。 …

常用的数据库类型都有哪些

在Java开发和信息系统架构中&#xff0c;数据库扮演着存储和管理数据的关键角色。数据库种类繁多&#xff0c;各有特色&#xff0c;适用于不同的应用场景。 1. 关系型数据库&#xff08;RDBMS&#xff09;&#xff1a; • 关系型数据库是最为人熟知的数据库类型&#xff0c;数据…

百度贴吧的ip属地什么意思?怎么看ip属地

在数字化时代&#xff0c;IP地址不仅是网络设备的唯一标识符&#xff0c;更承载着用户的网络身份与位置信息。百度贴吧作为广受欢迎的社交平台&#xff0c;也遵循相关规定&#xff0c;在用户个人主页等位置展示账号IP属地信息。那么&#xff0c;百度贴吧的IP属地究竟意味着什么…

微服务篇-深入了解 XXL-JOB 分布式任务调度的具体使用(XXL-JOB 的工作流程、框架搭建)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 XXL-JOB 调度中心概述 1.2 XXL-JOB 工作流程 1.3 Cron 表达式调度 2.0 XXL-JOB 框架搭建 2.1 XXL-JOB 调度中心的搭建 2.2 XXL-JOB 执行器的搭建 2.3 使用调度中心…

Unity Shader TexelSize的意义

TexelSize在制作玻璃折射效果时会用到。 // Get the normal in tangent space fixed3 bump UnpackNormal(tex2D(_BumpMap, i.uv.zw)); // Compute the offset in tangent space float2 offset bump.xy * _Distortion * _RefractionTex_TexelSize.xy; i.scrPos.xy offset * i…

Python面向对象进阶

思维导图 Python面向对象进阶的思维导图 私有权限 私有属性 为了更好的限制属性的访问和包含隐私&#xff0c;可以给属性设置私有权限。 当把属性设置为私有属性后&#xff0c;则该属性只能被本类直接访问。 定义私有属性语法&#xff1a; 设置和获取私有属性值语法&…

Github 正常访问但是ping不同也无法进行git操作

Github 正常访问但是ping不同也无法进行git操作 原因&#xff1a;在git push 的时候 发现一直push不上去。 $ git push interview master ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository.Please make sure yo…

基于Springboot + vue实现的夕阳红公寓管理系统

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵

gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵 题目描述 小杨想要构造一个 m m m \times m m

【brew安装失败】DNS 查询 raw.githubusercontent.com 返回的是 0.0.0.0

从你提供的 nslookup 输出看&#xff0c;DNS 查询 raw.githubusercontent.com 返回的是 0.0.0.0&#xff0c;这通常意味着无法解析该域名或该域名被某些 DNS 屏蔽了。这种情况通常有几个可能的原因&#xff1a; 可能的原因和解决方法 本地 DNS 问题&#xff1a; 有可能是你的本…

C++ 【回调函数】详解与代码解读

在现代软件开发中&#xff0c;回调函数是一个常用的工具&#xff0c;能够实现函数调用的延迟绑定&#xff0c;广泛应用于事件驱动、异步操作以及模块解耦等场景。本文将从基础概念、分类、实现方式到代码示例&#xff0c;全面讲解 C 回调函数的实现和应用。 什么是回调函数&…

嵌入式开发之使用 FileZilla 在 Windows 和 Ubuntu 之间传文件

01-FileZilla简介 FileZilla 是一个常用的文件传输工具&#xff0c;它支持多种文件传输协议&#xff0c;包括以下主要协议&#xff1a; FTP (File Transfer Protocol) 这是 FileZilla 最基本支持的协议。FTP 是一种明文传输协议&#xff0c;不加密数据&#xff08;包括用户名和…

IDEA XML 文件 SQL 提示

首先连接到对应的数据库。Database 里面要填写对应的数据库名称 配置当前项目的 SQL 方言&#xff0c;例如我这里是 MySQL 数据库管理系统&#xff0c;那么就选择 MySQL 此时就有 SQL 语法、表名、字段名等提示信息了

SSA-Transformer拿捏!麻雀搜索算法优化-Transformer多特征分类预测/故障诊断

SSA-Transformer拿捏&#xff01;麻雀搜索算法优化-Transformer多特征分类预测/故障诊断 目录 SSA-Transformer拿捏&#xff01;麻雀搜索算法优化-Transformer多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现SSA-Transformer麻雀搜索…

SimForge HSF 案例分享|复杂仿真应用定制——UAVSim无人机仿真APP(技术篇)

导读 「神工坊」核心技术——「SimForge HSF高性能数值模拟引擎」支持工程计算应用的快速开发、自动并行&#xff0c;以及多域耦合、AI求解加速&#xff0c;目前已实现航发整机数值模拟等多个系统级高保真数值模拟应用落地&#xff0c;支持10亿阶、100w核心量级的高效求解。其低…

bev and occupancy 3D视觉工坊

纯激光雷达的占据预测数据集制作 Allan 方差&#xff0c;零漂&#xff0c;把imu静止在一个地方&#xff0c;看它的偏差 评估指标 waymo

ts总结一下

ts基础应用 /*** 泛型工具类型*/ interface IProps {id: string;title: string;children: number[]; } type omita Omit<IProps, id | title>; const omitaA: omita {children: [1] }; type picka Pick<IProps, id | title>; const pickaA: picka {id: ,title…