注册
dmdrs的安装部署与数据迁移和同步-以两个单节点dm8为例
技术分享/ 文章详情 /

dmdrs的安装部署与数据迁移和同步-以两个单节点dm8为例

。。 2025/11/07 275 0 0

一、安装部署

1.1 上传安装包

通过软件将安装包上传至对应系统的相应目录之后需要赋予权限

chmod -R 755 dmdrs_rev200238_x86_rh6_64_***.bin

1.2 切换至dmdba用户进行安装

切换用户并进行安装

su dmdba
# 这里加上-i参数进行静默安装
./dmdrs_rev200238_x86_rh6_64_***.bin -i

输入c选择中文安装

Extract install files......... 

Please select the installer's language (E/e:English C/c:Chinese)[E/e]:c

可以自己指定目录安装,这里采用默认安装路径

-----------欢迎使用达梦数据复制软件安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdrs5]:

1.3 安装组件

DMDRS 安装时提供 2 个组件进行选择安装。

  1. “达梦数据融合管理平台”:简称 DMDFM 是达梦为解决大型数据复制、数据集成项目的管理运维问题而推出的一款集安装配置、设计管理、监控运维于一体的软件。使用 DMDFM 可以快速安装配置达梦数据复制软件(DMDRS)、达梦数据集成软件(DMDIS)以及达梦数据校验软件(DMDVS),支持各种复杂拓扑结构同步链路的拖拽设计,支持监控大量的数据链路,极大地提升大型项目的实施和运维效率。
  2. 代理:DMDFM 通过代理来进行管理、监控和实现各项功能。
    如果已经在其他服务器安装了DMDFM,则无需再进行安装,只需要安装代理即可。这里将安装两个组件
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
请选择安装组件数字序号(使用空格间隔):1 2
选择的组件有:
1.安装达梦数据融合管理平台
2.安装代理
确认?[Y/y(确认选择) or N/n(重新选择)]:y
-----------许可证文件-----------
1.免费试用达梦数据复制软件(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:1
免费试用许可证文件限制信息如下:
有效日期:2025-10-16
版本类型:试用版
许可证编号:dm66n367
授权顾客名称:DEVELOP USER
当前选择为免费试用,是否继续安装?[Y/y or N/n]:y

1.4 安装配置

  1. 依赖: 安装dmdrs时需要提前安装好dm8,dmdrs会自动选择已安装好的dm数据库bin目录作为数据库动态库路径,用户也可自定义动态库路径,本文指定动态库路径为:/home/dmdba/dmdbms/bin
  2. 代理IP: 代理IP不能设置为127.0.0.1,可以选择使用本机IP,默认端口为19345,也可以在安装时更改
  3. 达梦数据融合管理平台配置: 默认端口号为8080,也可以在安装时更改
  4. 内置库/外置库: 可指定使用外置库,默认不使用外置库,使用内置库。
    如果配置使用外置库需指定外置库 IP、端口、用户名及密码,如果连接失败则会报错,连接成功则会输出“安装小结”。这里以安装内置库为例
-----------配置-----------
数据库驱动路径配置 -数据库驱动路径[]:/home/dmdba/dmdbms/bin
注意:代理配置IP不允许设置成127.0.0.1!
代理配置-代理IP(192.168.122.1,192.168.4.7):192.168.4.7
代理配置-代理端口[19345]:
达梦数据融合管理平台配置-管理平台端口[8080]:8090        
注意:密码必须至少8个字符,并且满足以下条件中的任意[两项]:数字、大写字母、小写字母、特殊字符(如!@#$%^&*等)。
达梦数据融合管理平台配置-管理平台密码:
达梦数据融合管理平台配置-管理平台确认密码:
是否使用外置库(0:不使用  1:使用 )[0]:0
注意:请输入9至48个字符长度的密码,并且满足以下条件中的任意[三项]:数字、大写字母、小写字母、特殊字符(如!@#$%^&*等)。
内置数据库配置-密码:
内置数据库配置-确认密码:
-----------安装小结-----------
安装目录:[/home/dmdba/dmdrs5]
数据库驱动路径:[/home/dmdba/dmdbms/bin]
代理IP:[192.168.4.7]
代理端口:[19345]
达梦数据融合管理平台IP:[127.0.0.1]
达梦数据融合管理平台端口:[8090]
内置库信息:
数据库IP:[127.0.0.1]
数据库端口:[15236]
用户名:[SYSDBA]
密码:[******]
所需磁盘空间/可用磁盘空间:[3,191 MB/9,244 MB]
确认安装?[Y/y or N/n]:y
-----------安装中-----------
server 正在安装 ...    server 安装完成.
default 正在安装 ...    default 安装完成.
agent 正在安装 ...    agent 安装完成.
web 正在安装 ...    web 安装完成.
doc 正在安装 ...    doc 安装完成.
db 正在安装 ...    db 安装完成.
安装成功

1.5 配置服务

-----------系统服务-----------
内置数据库服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:1
正在创建内置数据库服务....
达梦数据融合管理平台服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:1
正在创建达梦数据融合管理平台服务....
达梦数据融合管理平台代理服务设置
1.注册系统服务
2.不注册系统服务
启动方式(1,2)[2]:1
正在创建达梦数据融合管理平台代理服务....
以下配置脚本需要以"root"用户的身份运行.
/home/dmdba/dmdrs5/scripts/root/root_installer.sh
是否已执行shell脚本?(Y/y or N/n)[Y/y]:y

需要以root用户身份运行相应脚本完成服务配置

-----------安装总结-----------
达梦数据复制软件V5安装完成
地址:http://127.0.0.1:8090
用户名/密码:admin/******
更多安装信息,请查看安装日志文件:/home/dmdba/dmdrs5/log/install.log

安装完成后可以在通过http://本机IP:8090访问DMDFM

二、数据库准备

2.1 环境变量配置

在源DMDRS和目标DMDRS服务器修改bash_profile中的环境变量LD_LIBRARY_PATH,添加DMDPI驱动文件路径

vi ~/.bash_profile

# 修改变量
export LD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH

# 保存并退出vi编辑器,使环境变量生效,并查看更改是否生效
source ~/.bash_profile
echo $LD_LIBRARY_PATH

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

为了保证源DMDRS服务运行中数据的一致性,源DMDRS服务需要读源数据库的归档和逻辑日志,因此源数据库需要开启归档和逻辑日志功能。可以通过静态配置和动态配置完成。

  1. 静态配置
    1. 配置dm.ini
     #configuration file
     ARCH_INI = 1
    
     #redo log
     RLOG_APPEND_LOGIC = 1
    
    其中RLOG_APPEND_LOGIC为控制是否启用在日志中记录逻辑操作的功能的参数,取值范围为0-4,0为不启用,1、2、3、4为启用
    1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息;
    2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息;
    3:记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID;
    4:只生成事务以及DDL相关的逻辑日志
    注:DELETE和UDPATE操作日志中描述的“所有列的信息”不包含大字段列(如BLOB和CLOB类型的列)
    2. 配置dmarch.ini
    dm8单机
     [ARCHIVE_LOCAL1]
     ARCH_TYPE = LOCAL
     ARCH_DEST = /home/dmdba/dmarch
     ARCH_FILE_SIZE = 512
     ARCH_SPACE_LIMIT = 10240
    
  2. 动态配置
    dm8单机版
    启动归档
     SQL> alter database mount;
     executed successfully
     used time: 00:00:01.144. Execute id is 0.
     SQL> alter database archivelog;
     executed successfully
     used time: 10.277(ms). Execute id is 0.
     SQL> alter database add archivelog        'DEST=/home/dmdba/dmarch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
     executed successfully
     used time: 7.437(ms). Execute id is 0.
     SQL> alter database open;
     executed successfully
     used time: 00:00:01.262. Execute id is 0.
    
    调用系统过程SP_SET_PARA_VALUE配置DM8数据库配置文件“dm.ini”中RLOG_APPEND_LOGIC参数值
    SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
    
    完成后检查ARCH_INI和RLOG_APPEND_LOGIC参数配置是否生效<br>
    ARCH_INI部分:
     SQL> select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'ARCH_INI';
     行号        PARA_NAME PARA_VALUE SESS_VALUE FILE_VALUE
     ---------- --------- ---------- ---------- ----------
     1          ARCH_INI  1          1          1
    
     已用时间: 4.117(毫秒). 执行号:13307.
    
    RLOG_APPEND_LOGIC部分:
     SQL> select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'RLOG_APPEND_LOGIC';
     行号        PARA_NAME         PARA_VALUE SESS_VALUE FILE_VALUE
     ---------- ----------------- ---------- ---------- ----------
     1          RLOG_APPEND_LOGIC 1          1          1
    
     已用时间: 3.857(毫秒). 执行号:13308.
    

2.3 配置DDL同步

在源数据库执行“ddl_sql_dm8.sql”脚本创建触发器和辅助表,脚本默认位置在DMDRS执行程序目录下的scripts子目录中

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

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

SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status = 'Y';
行号     owner  trigger_name           
---------- ------ -----------------------
1          SYSDBA DRS_$DDL_TRIGGER_AFTER
2          SYSDBA DRS_$DDL_TRIGGER_BEFORE
3          SYSDBA DRS_$DDL_TRIGGER_GRANT
4          SYSDBA DRS_$DDL_TRIGGER_REVOKE

SQL> select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';
行号     owner  table_name       
---------- ------ -----------------
1          SYSDBA DRS_$DDL_COL
2          SYSDBA DRS_$DDL_SQL
3          SYSDBA DRS_$DDL_CONS
4          SYSDBA DRS_$DDL_IDX
5          SYSDBA DRS_$DDL_RENAME
6          SYSDBA DRS_$DDL_SEQ
7          SYSDBA DRS_$DDL_PART
8          SYSDBA DRS_$DDL_COMMMENT
9          SYSDBA DRS_$DDL_LOG

9 rows got

2.4 创建数据库同步用户DMDRS

源数据库管理员和目标数据库管理员分别创建数据库同步用户DMDRS,同时该用户需要被赋予一定的权限,一般建议赋予所需的最小权限<br>

## 创建数据库同步用户DMDRS(源库和目标库都需要进行)
CREATE USER DMDRS IDENTIFIED BY "Dmglydmm@2025";

DM8源数据库同步用户最小权限脚本示例:

-- ## 基础权限
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 需要系统表、系统字典和动态视图的查询权限
GRANT SOI,VTI TO DMDRS;
-- 需要创建会话权限
GRANT CREATE SESSION TO DMDRS;
-- ## 装载相关权限
-- 需要非同步用户下待装载表/序列上的查询权限
GRANT SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名> TO DMDRS;
-- ## 同步相关权限
-- DM8触发器同步时,如果数据库用户不是SYSDBA用户,需要对SYSDBA.DRS_$DDL_LOG具有查询权限
GRANT SELECT ON SYSDBA.DRS_$DDL_LOG TO DMDRS;
-- ## DSC同步相关权限
-- DSC时,需要新增以下权限:
GRANT CREATE TABLE TO DMDRS;
GRANT CREATE PACKAGE TO DMDRS;

DM8目标数据库同步用户最小权限脚本示例:

-- ## 基础权限
-- 插入、删除、更新数据时,需要数据操作权限
GRANT PUBLIC TO DMDRS;
-- 启动时需要在目标数据库中创建辅助表和辅助存储过程
GRANT RESOURCE TO DMDRS;
-- 需要查询数据库的相关参数信息、系统表字典信息
GRANT SOI,VTI TO DMDRS;
-- 需要创建会话权限
GRANT CREATE SESSION 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;
-- 需要非同步用户模式下创建表注释的权限
GRANT COMMENT ANY TABLE TO DMDRS;
-- 需要非同步用户模式下对象的DDL权限
GRANT CREATE ANY <对象类型> TO DMDRS;
GRANT ALTER ANY <对象类型> TO DMDRS;
GRANT DROP ANY <对象类型> TO DMDRS;
-- 需要非模式对象(表空间、用户、角色和公共同义词)的DDL权限
GRANT CREATE <对象类型> TO DMDRS;
GRANT ALTER <对象类型> TO DMDRS;-- 角色和公共同义词不需要此权限
GRANT DROP <对象类型> TO DMDRS;
-- 需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限
GRANT EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC" TO DMDRS;
GRANT CREATE PROCEDURE TO <非同步用户下模式所属的用户>;

三、通过DMDFM进行数据迁移和同步-以两个单节点dm8为例

3.1 登录DMDFM后添加数据源

在登录DMDFM后首先需要分别补充代理信息,选择左侧菜单栏中的运维-代理管理,分别补充两个代理的信息
dmdr0.png
在完成内容补充后同样在左侧菜单栏中选择数据源-数据源管理,然后在关系型数据库中新增数据源,将源数据库和目标数据库都添加进去
dmdr1.pngdmdr2.png

3.2 新建对应同步工程

新建工程选择一对一场景模板<br>
在基本配置中分别配置源dmdrs和目标dmdrs
dmdr3.png
在链路配置中添加对应信息
dmdr4.pngdmdr5.png

3.3 部署对应dmdrs服务

点击立即部署即可安装部署dmdrs服务,但是出现链路预检察未通过时需要先处理预检察未通过的相应问题
dmdr6.png
在处理完成后安装部署dmdrs服务
dmdr7.png

3.4 启动服务

启动服务时,先启动目的端,待目的端成功启动变蓝后,再启动源端,否则会因为源端先启动,目的端未启动报错“连接失败”。<br>
右键对应node选择启动,当图标由灰变蓝时说明服务启动成功
dmdr8.png

3.5 启动装载

选择上方菜单栏的装载按钮开始配置装载设置
dmdr装载.png
配置相关信息,选择合适的装载模式和需要装载的表,这里选择模式“全量装载+增量同步”并选择对应的测试表
dmdr9.pngdmdr10.png
测试表初始化如下

CREATE TABLE TEMP.TEST_DRS (
    ID INT PRIMARY KEY,
    NAME VARCHAR(50),
    CREATE_TIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
INSERT INTO TEMP.TEST_DRS(ID, NAME) VALUES(1, 'Test_Record');

在完成配置后需要进行预检查查看是否存在未通过的检测,如果有需要相应的去处理
dmdr预检察.png
完成以上工作后启动link1
dmdr11.pngdmdr启动成功.png

3.6 校验

查看源库对应测试表与数据是否成功迁移至目标库
dmdr12.png
在源库插入新数据查看是否能够同步至目标库
dmdr13.pngdmdr14.png

四、通过命令行方式进行数据迁移和同步-以两个单节点dm8为例

4.1 配置DMDRS服务

分别配置源DMDRS服务和目标DMDRS服务

  1. 源DMDRS服务需要修改cpt.xml,该文件在dmdrs安装目录的bin目录下的conf_sample目录下,本次实验目录为/home/dmdba/dmdrs5/bin/conf_sample
# 将cpt.xml复制到上一级目录中
cp cpt.xml ../cpt.xml
< -- 源DMDRS -- >
<?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.4.7</server>
            <user>DMDRS</user>
            <pwd>Dmglydmm@2025</pwd>
            <port>5237</port>
        </login>
        <send>
            <ip>192.168.4.8</ip>
            <port>5345</port>
            <target_name>exec_dm8</target_name>
            <map>
                <item>TEMP.*==TEMP.*</item>
            </map>
        </send>
    </cpt>
</drs>
  1. 目标DMDRS服务需要修改exec.xml,该文件在dmdrs安装目录的bin目录下的conf_sample目录下,本次实验目录为/home/dmdba/dmdrs5/bin/conf_sample
<?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.4.8</server>
            <user>DMDRS</user>
            <pwd>Dmglydmm@2025</pwd>
            <port>5237</port>
        </login>
    </exec>
</drs>

4.2 运行DMDRS服务

按照服务的运行顺序,启动目标DMDRS服务和源DMDRS服务(先目标再源)

  1. 启动目标DMDRS服务
    将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
cp TemplateService ../DrsService

修改DrsService内容

vi DrsService

# 修改内容
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"

启动服务
./DrsService start

  1. 启动源DMDRS服务
    将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService。
cp TemplateService ../DrsService

修改DrsService内容

vi DrsService

# 修改内容
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"

启动服务

./DrsService start

4.3 在源DMDRS中执行数据迁移命令

启动控制台

./drcsl cpt.xml

# 连接源DMDRS
CSL> connect
# 将目标模式TEMP下的表TEST_DRS进行迁移
CSL> alter cpt_dm8 cp "sch.name='TEMP' and tab.name='TEST_DRS'"

迁移完成后使用命令查看数据迁移的监控信息

4.4 在源DMDRS中执行数据同步命令

启动控制台

./drcsl cpt.xml

# 连接源DMDRS
CSL> connect
# 设置数据库当前最新的日志LSN作为日志解析的起始位置。
CSL> alter cpt_dm8 set lsn
# 启动源DMDRS服务中的CPT模块。
CSL> start
# 将目标模式TEMP下的表TEST_DRS进行同步
alter cpt_dm8 add table "sch.name='TEMP'" 

迁移完成后使用命令查看数据迁移的监控信息

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服