当前位置: 首页 > news >正文

DMDRS搭建

DMDRS搭建

本次进行DMDRS工具的部署搭建以及使用

环境配置

操作系统及数据库配置

  • 操作系统:使用CentOS7
  • 数据库:dm8_20240408_x86_rh7_64

服务器配置

实例名服务器IP
DM1192.168.19.7(源DMDRS)
DM2192.168.19.4(目的DMDRS)

目录配置

目录类型源DMDRS数据库目的DMDRS数据库
安装路径/home/dmdba/dmdrs5/home/dmdba/dmdrs5
执行程序目录/home/dmdba/dmdrs5/bin/home/dmdba/dmdrs5/bin
配置文件路径/home/dmdrs/dmdrs5/bin/cpt.xml/home/dmdrs/dmdrs5/bin/exec.xml
服务脚本目录/home/dmdrs/dmdrs5/bin/home/dmdrs/dmdrs5/bin
console远程控制工具/home/dmdrs/dmdrs5/bin/drcsl/home/dmdrs/dmdrs5/bin/drcsl

数据库准备工作

开启源数据库的归档和逻辑日志(源端)

  • 动态配置(推荐)

    • 使用disql登录数据库,执行命令进行归档配置

      SQL> alter database mount;
      SQL> alter database add archivelog 'DEST=/home/dmdba/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
      SQL> alter database archivelog;
      SQL> alter database open;
      

      在这里插入图片描述

    • 调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_LOGIC参数值

      SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
      

      在这里插入图片描述

  • 静默配置

    • 进入DM数据库的配置文件dm.ini中修改ARCH_INI参数为1,RLOG_APPEND_LOGIC根据情况配置

      #configuration file
      ARCH_INI = 1#redo log
      RLOG_APPEND_LOGIC = 1
      
    • 在dm.ini同目录下,新建配置文件dmarch.ini,并添加归档配置文件

      [ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = /home/dmdba/archARCH_FILE_SIZE = 512ARCH_SPACE_LIMIT = 10240
      
    • 配置完毕后重启服务器

配置DDL同步(源端)

  • 辅助表方式(推荐)

    • 在源数据库执行ddl_sql_dm8.sql脚本创建辅助表,脚本默认在DMDRS执行程序目录下的scripts目录中

      SQL>set define off;
      SQL>start /home/dmdba/dmdrs5/bin/scripts/ddl_sql_dm8.sql
      

      ​ 建议:

      ​ 这里建议使用manager工具执行脚本,使用disql执行的话很容易出现部分语句报错

      在这里插入图片描述

    • 检查创建的触发器和辅助表是否有效

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

      在这里插入图片描述

      • 出现4个触发器、9个辅助表则表示配置成功
  • 系统表方法

    • 静默配置

      • 设置数据库配置文件dm.ini中RLOG_APPEND_LOGIC参数值为1

        #redo log
        RLOG_APPEND_SYSTAB_LOGIC = 1
        
      • 重启数据库服务,使配置生效

    • 动态配置

      • 调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_SYSTAB_LOGIC参数值

        SQL> call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',1);
        

创建数据库同步用户DMDRS(源端&目的端)

  • 在源端和目的端创建数据库同步用户DMDRS,并赋予同步权限

    注:

    如果是在测试环境下学习,可以直接赋予DBA权限;如果是在生产环境下,需要执行权限管控,配置同步用户最小权限

    • 这里我使用manager工具创建用户

      在这里插入图片描述

DMDRS准备工作

DMDRS服务管理规划(源端&目的端)

  • DMDRS服务运行过程中,需要使用数据库的驱动文件访问数据库数据,需要为运行DMDRS的用户设置环境变量

    • 在系统中查询驱动文件的所在位置

      find /home/dmdba/dmdbms -name *dmdpi*
      

      在这里插入图片描述

    • 设置环境变量,添加驱动文件路径

      export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/drivers/dpi"
      echo $LD_LIBRARY_PATH
      

      在这里插入图片描述

DMDRS配置

配置源DMDRS

  • 源DMDRS服务包括Manager管理模块和CPT模块,在dmdrs安装目录下的bin/conf_sample下存有配置文件模板

    <?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>192.168.19.142</server><!--如:192.168.20.24--><user>DMDRS</user><!--如:DMDRS--><pwd>DMDRS</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login><send><ip>192.168.19.139</ip><!--如:192.168.20.21--><port>5345</port><!--如:5345--><target_name>exec_dm8</target_name><!--如:exec_dm8--><map><item>*.*==*.*</item><!--如:*.*==*.*--></map></send></cpt>
    </drs>
    

    在这里插入图片描述

配置目标DMDRS

  • 目标DMDRS服务包括Manager管理模块和EXEC模块

    <?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.19.139</server><!--如:192.168.20.21--><user>DMDRS</user><!--如:DMDRS--><pwd>DMDRS</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login></exec>
    </drs>
    

    在这里插入图片描述

DMDRS运行

管理服务(源端&目的端)

  • 配置DMDRS服务脚本

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

      cp /home/dmdba/dmdrs5/bin/service_template/TemplateService /home/dmdba/dmdrs5/bin/DrsService
      
    • 打开并修改服务脚本中的相关配置参数

      ##源端DMDRS配置
      INSTALL_HOME=/home/dmdba/dmdrs5
      PROG_DIR=/home/dmdba/dmdrs5/bin
      CONF_PATH=/home/dmdba/dmdrs5/bin/cpt.xml
      EXEC_PROG_NAME=drsvr
      SERVICE_TYPE_NAME="drs server"##目的端DMDRS配置
      INSTALL_HOME=/home/dmdba/dmdrs5
      PROG_DIR=/home/dmdba/dmdrs5/bin
      CONF_PATH=/home/dmdba/dmdrs5/bin/exec.xml
      EXEC_PROG_NAME=drsvr
      SERVICE_TYPE_NAME="drs server"
      

      在这里插入图片描述

启动DMDRS服务

  • 启动源DMDRS服务器

    ./DrsService start
    

    在这里插入图片描述

  • 启动目的端服务器

    ./DrsService start
    

    在这里插入图片描述

数据复制

数据迁移

  • 在源端DMDRS服务中执行数据迁移命令

    说明:

    ​ 数据迁移功能无需启动CPT功能模块,直接执行相应的数据迁移命令即可

    • 启动控制台

      ./drcsl cpt.xml
      
    • 连接源DMDRS服务

      CSL> connect
      
    • 将源数据库DMDRS模式下表EMPLOYEE的全量数据迁移到目标数据库

      CSL> alter cpt_dm8 cp "sch.name='DMDRS' and tab.name='EMPLOYEE'"
      

      在这里插入图片描述

  • 验证迁移结果
    • 到目的端数据库上去查看是否存在表EMPLOYEE,表中是否存在数据,数据是否能够对得上

      ##查看表EMPLOYEE中的所有数据
      select * from DMDRS.EMPLOYEE;##查看EMPLOYEE表中的数据量
      select count(*) from DMDRS.EMPLOYEE;
      

      在这里插入图片描述

      • 35个数据完完整整地迁移过来了

数据同步

  • 配置目标DMDRS服务
    • 在目标DMDRS服务中打开exec.xml配置文件,修改配置文件内容

      <?xml version="1.0" encoding="GB18030"?>
      <drs><base><mgr_port>5345</mgr_port><siteid>2</siteid></base><exec><name>exec_dm8</name><login><dbtype>dm8</dbtype><server>192.168.19.4</server><user>DMDRS</user><pwd>DMDRS</pwd><port>5236</port>    </login><group><item><id>35</id><exec_policy>0</exec_policy>                    <desc><table>*.*</table></desc></item></group></exec>
      </drs>
      

      在这里插入图片描述

  • 配置源端DMDRS服务器
    • 在源端DMDRS服务中打开cpt.xml配置文件,修改配置文件内容

      <?xml version="1.0" encoding="GB18030"?>
      <drs><base><mgr_port>5345</mgr_port>     <siteid>1</siteid></base><cpt><name>cpt_dm8</name><login><dbtype>dm8</dbtype><server>192.168.19.7</server><user>DMDRS</user><pwd>DMDRS</pwd><port>5236</port></login><send><ip>192.168.19.4</ip><port>5345</port><target_name>exec_dm8</target_name><map><item>*.*==*.*</item></map></send></cpt>
      </drs>
      
  • 运行DMDRS服务器
    • 启动目标DMDRS服务器

      ./DrsService start
      
    • 启动源DMDRS服务器

      ./DrsService start
      
  • 启动源端CPT模块
    • 启动控制台,连接服务

      ##启动控制台
      ./drcsl cpt.xml##连接DMDRS服务
      CSL> connect
      
    • 设置数据库当前最新的日志LSN作为日志解析的起始位置

      CSL> alter cpt_dm8 set lsn
      
    • 启动CPT模块,将源数据库中DMDRS模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库

      ##启动CPT模块
      CSL> start##添加同步
      CSL> alter cpt_dm8 add table "sch.name='DMDRS'" 
      

      在这里插入图片描述

  • 验证同步结果
    • 在源DMDRS服务上创建表test,并插入数据

      ##创建表test
      CREATE TABLE DMDRS.test(id INTEGER,name VARCHAR(20)
      );##插入数据
      INSERT INTO DMDRS.TEST VALUES(1,'Tom'),(2,'Jerry');##提交
      commit;
      
    • 到目的DMDRS服务上查看数据是否同步过来

      在这里插入图片描述

      • 源端DMDRS服务上的表已经同步过来了,同时表中的数据也过来了

至此,DMDRS工具的数据迁移和同步已经验证成功。

总结

  • 本次主要是DMDRS工具的搭建使用,需要注意许可证的时间,我最开始搭建的时候没有注意到这个问题,在配置完后启动服务就报错了。还有要多注意源端DMDRS的LSN序列与目的端DMDRS的LSN是否能够对得上,不然就会报错网络连接失败,数据也会同步不过去。

参考

  • 达梦在线服务平台——https://eco.dameng.com

相关文章:

DMDRS搭建

DMDRS搭建 本次进行DMDRS工具的部署搭建以及使用 环境配置 操作系统及数据库配置 操作系统&#xff1a;使用CentOS7数据库&#xff1a;dm8_20240408_x86_rh7_64 服务器配置 实例名服务器IPDM1192.168.19.7&#xff08;源DMDRS&#xff09;DM2192.168.19.4&#xff08;目的…...

【油猴脚本】00006 案例 Tampermonkey油猴脚本自定义表格列名称,自定义表格表头,自定义表格的thead里的td

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 【油…...

JS - 获取剪切板内容 Clipboard API

目录 1&#xff0c;需求最终效果 2&#xff0c;实现示例 3&#xff0c;注意点1&#xff0c;只支持安全上下文环境2&#xff0c;只能读取当前页面的剪切板3&#xff0c;权限获取问题4&#xff0c;获取内容的 MIME_TYPE 问题1&#xff0c;文本内容2&#xff0c;图片内容 5&#x…...

Qt自动打开文件夹并高亮文件

在Qt中&#xff0c;如果你想要打开一个文件夹并在文件管理器中高亮显示&#xff08;选中&#xff09;某个文件&#xff0c;你可以使用以下方法&#xff1a; 对于Windows系统&#xff0c;你可以使用QProcess来启动explorer命令&#xff0c;并带上/select,参数来高亮显示文件。以…...

神经网络-MNIST数据集训练

文章目录 一、MNIST数据集1.数据集概述2.数据集组成3.文件结构4.数据特点 二、代码实现1.数据加载与预处理2. 模型定义3. 训练和测试函数4.训练和测试结果 三、总结 一、MNIST数据集 MNIST数据集是深度学习和计算机视觉领域非常经典且基础的数据集&#xff0c;它包含了大量的手…...

数据结构二

求 sizeof(name1)&#xff1f;(晟安信息) struct name1{ char str; short x; int num; }; sizeof name1内存对齐 8个字节 char分配8个字节 然后 short节省空间在4个字节中 而这个int独自分配分配内存 4个字节所以共8个字节 (电工时代) typedef struct _a { char c1; long i…...

Python|基于Kimi大模型,删除已上传的“指定文档”或“全部文档”(6)

前言 本文是该专栏的第6篇,后面会持续分享AI大模型干货知识,记得关注。 在本专栏上一篇《Python|基于Kimi大模型,实现上传文档并进行对话(5)》中,笔者有详细介绍“基于kimi大模型,上传指定文档并结合prompt,获取目标文本数据”。对此感兴趣的同学,可以直接点击翻阅查…...

CenterPoint-KITTI:环境配置、模型训练、效果展示;KITTI 3D 目标检测数据集下载

目录 前言 Python虚拟环境创建以及使用 KITTI3D目标检测数据集 CenterPoint-KITTI编译遇到问题合集 ImportError: cannot import name VoxelGenerator from spconv.utils 失败案例 最终解决方案 对于可选参数&#xff0c;road plane的处理 E: Unable to locate packag…...

【Android】ViewPager

1.ViewPager的简介和作用 ViewPager是android扩展包v4包中的类&#xff0c;这个类可以让用户左右切换当前的view&#xff0c;用于允许用户在几个页面&#xff08;或称为碎片&#xff09;之间左右滑动切换。它通常用于创建像画廊或轮播图那样的用户体验。 ViewPager类直接继承了…...

[go] 命令模式

命令模式 将“请求”封装成对象&#xff0c;以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 模型说明 触发者类负责对请求进行初始化&#xff0c;其中必须包含一个成员变量来存储对于命令对象的引用。触发命令&#xff0c;而不同接受者直接…...

代码随想录冲冲冲 Day48 单调栈Part2

42. 接雨水 关键点有以下几个 首先是怎么去理解接雨水 其实就是找每一个段的左边第一个最大值和右边第一个最大值 既然是最大值 那么单调栈就是递增的 左边第一个最大值其实就是pop掉中间的之后st.top 由于是出现大于等于情况时候进行操作 所以右边最大值就是i 接下来就…...

企业内训|Nvidia智算中心深度技术研修-某智算厂商研发中心

课程概述 此企业内训课程“Nvidia智算中心的深度技术研修”专为某智算厂商研发中心设计&#xff0c;内容涵盖了从基础设施构建到高性能计算优化的全方位技术要点。课程为期七天&#xff0c;分模块详细讲解了NV算力资源的网络架构、存储优化、智算集群的建设与自动化管理、NCCL…...

《算法笔记》例题解析 第3章入门模拟--3图形输出(9题)2021-03-03

例题 旋转方阵 题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 打印出一个旋转方阵,见样例输出。 输入描述: 输入一个整数n(1 < n < 20), n为方阵的行数。 输出描述: 输出一个大小为n*n的距阵 输入 5 输出 1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 1…...

合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题

不知不觉间&#xff0c;我们已经发布拉期课程&#xff1a;hello world初体验&#xff0c;点灯、远程控制、定位和扩展功能&#xff0c;你学的怎么样&#xff1f;很多伙伴表示已经有点上瘾啦&#xff01;合宙Air201&#xff0c;如同我们一路升级打怪的得力法器&#xff0c;让开发…...

Kafka 命令详解及使用示例

文章目录 Kafka 命令详解及使用示例Kafka 命令详解kafka-topics.sh&#xff1a;主题管理创建主题创建带副本的主题修改主题分区数了解分区分布列出主题查看主题详情删除主题 kafka-console-producer.sh&#xff1a;消息生产者发送消息到主题带键值对的消息消息生产性能优化带分…...

重生归来之挖掘stm32底层知识(1)——寄存器

概念理解 要使用stm32首先要知道什么是引脚和寄存器。 如下图所示&#xff0c;芯片通过这些金属丝与电路板连接&#xff0c;这些金属丝叫做引脚。一般做软件开发是不需要了解芯片是怎么焊的&#xff0c;只要会使用就行。我们平常通过编程来控制这些引脚的输入和输出&#xff0c…...

Qt构建JSON及解析JSON

目录 一.JSON简介 JSON对象 JSON数组 二.Qt中JSON介绍 QJsonvalue Qt中JSON对象 Qt中JSON数组 QJsonDocument 三.Qt构建JSON数组 四.解析JSON数组 一.JSON简介 一般来讲C类和对象在java中是无法直接直接使用的&#xff0c;因为压根就不是一个规则。但是他们在内存中…...

合宙Air201模组LuatOS扩展功能:温湿度传感器篇!

通过前面几期的学习&#xff0c;同学们的学习热情越来越高。 合宙Air201模组除了支持3种定位方式外&#xff0c;还具有丰富的扩展功能&#xff0c;比如&#xff1a;通过外扩BTB链接方案&#xff0c;最多可支持21个IO接口&#xff1a;SPI、I2C、UART等多种接口全部支持。 本期…...

主流敏捷工具scrum工具

在当今的快速变化和高需求的业务环境中&#xff0c;敏捷开发已经成为许多企业实现快速迭代和响应市场需求的重要方法。而在众多敏捷工具中&#xff0c;选择适合自己团队的工具尤为重要。 今天&#xff0c;我们将对比几款主流的敏捷工具&#xff0c;供参考 1. Leangoo领歌&…...

探索微服务架构:从理论到实践,深度剖析其优缺点

微服务架构&#xff08;Microservice Architecture&#xff09;是一种软件开发架构形式&#xff0c;它的核心 思想是将大型应用程序拆分成一组小的服务&#xff0c;每个服务都运行在其独立的进程中&#xff0c;并且 服务与服务之间通过轻量级的通信机制&#xff08;如HTTP REST…...

亚马逊卖家公开信息数据提取:反爬攻防战与 Python 批量采集实战

摘要&#xff1a; 批量获取亚马逊&#xff08;Amazon&#xff09;第三方卖家的商业名称、信用代码和注册地址等信息&#xff0c;对于跨境 B2B 拓客和供应链分析具有重要意义。然而&#xff0c;亚马逊的 Cloudflare 盾和 Robot 验证码构成了极高的反爬门槛。本文将深度解析亚马逊…...

三十岁想从零转行现实吗?带你分辨真正有前景的好工作

![](https://img-blog.csdnimg.cn/direct/b0bfa28b59f9478dae4e6feee6659cce.png)我是29岁那年&#xff0c;完成从转行裸辞副业的职业转型。 如果你把职业生涯看成是从现在开始30岁&#xff0c;到你退休那年&#xff0c;中间这么漫长的30年&#xff0c;那么30岁转行完全来得及…...

为什么软件开发偏爱 Linux?深度剖析 Linux 相较于 Windows 的核心优势

引言 在软件开发的世界里&#xff0c;一个有趣的现象是&#xff1a;无论是大型互联网公司的服务器集群&#xff0c;还是资深程序员的个人开发机&#xff0c;Linux 操作系统的身影无处不在。与之形成鲜明对比的是&#xff0c;尽管 Windows 在个人消费市场占据绝对主导地位&…...

DragonBones与Godot集成:骨骼动画的可编程化实践

1. 为什么在Godot里用DragonBones不是“锦上添花”&#xff0c;而是“绕不开的刚需” 去年上线一个横版动作手游Demo时&#xff0c;美术团队交来一套20个角色、每个角色含8套动画&#xff08;待机/跑动/跳跃/攻击/受击/死亡/闪避/必杀&#xff09;的Spine资源。我兴冲冲导入God…...

别急着扔!12年老ThinkPad X230升级SSD和内存后,Win10流畅得像新电脑

12年老ThinkPad X230重生指南&#xff1a;极简升级打造流畅办公利器每次打开抽屉看到那台积灰的ThinkPad X230&#xff0c;总有种说不出的情感。这款2012年问世的经典商务本&#xff0c;曾陪伴无数人度过加班到凌晨的夜晚。如今性能确实有些力不从心&#xff0c;但直接丢弃又觉…...

保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的IO重定向与签名绕过

在Ubuntu上构建Android逆向工程环境&#xff1a;Frida实战与IO重定向技术解析 对于习惯Linux环境的安全研究人员而言&#xff0c;Windows-centric的逆向工具链往往带来诸多不便。本文将系统性地介绍如何在Ubuntu上搭建完整的Android逆向环境&#xff0c;并深入探讨如何利用Frid…...

如何通过Joy-Con Toolkit实现专业级Switch手柄控制与硬件逆向工程

如何通过Joy-Con Toolkit实现专业级Switch手柄控制与硬件逆向工程 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 在游戏开发、硬件调试和嵌入式系统研究中&#xff0c;与游戏手柄等专业输入设备进行深度交互一直…...

微信聊天图片丢了别慌!保姆级教程:找回并解密DAT文件(支持新旧版微信路径)

微信DAT图片恢复实战&#xff1a;从文件定位到批量解密的完整指南 微信聊天记录中的图片突然消失&#xff1f;别急着放弃&#xff01;那些看似无法打开的DAT文件里&#xff0c;可能藏着您的重要回忆或工作资料。本文将带您深入微信存储机制&#xff0c;手把手完成从文件定位到…...

AI算法工程师如何进行模型部署?这2个工具+3个技巧,快速上线

对于软件测试从业者来说&#xff0c;模型部署并不是一个陌生的概念——随着AI功能逐渐渗透到各类应用软件中&#xff0c;测试工程师不仅需要验证模型输出的准确性&#xff0c;更需要理解部署流程对模型稳定性、响应速度和结果一致性的影响。很多测试同学会有这样的困惑&#xf…...

机器学习赋能矩方法:破解稀薄气体强非平衡流动模拟难题

1. 项目概述&#xff1a;当矩方法遇见机器学习在计算流体力学领域&#xff0c;模拟稀薄气体动力学和强非平衡流动&#xff0c;一直是个让工程师和科学家们头疼的“硬骨头”。想象一下&#xff0c;你正在设计一架高超音速飞行器&#xff0c;当它以数倍音速在大气层边缘飞行时&am…...