达梦数据库(七)DMDRS部署使用

软件环境

操作系统 centos 7
源数据库 dm8单机
目标数据库 dm8单机

数据库方面准备工作

1. 开启数据库归档和逻辑日志(在源端操作)

  • 动态配置(推荐)
## 配置归档日志
alter database mount;
alter database archivelog;
alter database add archivelog 'DEST=/path/to/arch,TYPE=LOCAL,FILE_SIZE=64,SPACE_LIMIT=10240';
alter database open;
## 配置逻辑日志
call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
  • 静态配置

编辑修改 dm.ini 文件

#configuration file
ARCH_INI = 1
#redo log
RLOG_APPEND_LOGIC = 1

新建 dmarch.ini 文件,并配置归档参数

[ARCHIVE_LOCAL1]
ARCH_DEST = /path/to/arch
ARCH_TYPE = LOCAL
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 10240

重启数据库

2. 配置 ddl 同步(在源端操作)

  • 辅助表方式(推荐)

在 dmdrs 的安装目录下找到 bin/scripts 下的 ddl_sql_dm8.sql 脚本并执行

ps:建议通过管理工具执行脚本,如果通过 disql 命令行执行 “start ddl_sql_dm8.sql” ,可能会出现部分语句报错(部分注释语言可能会被误解析,可以手动调整脚本解决)

  • 系统表方式

a. 静态配置

修改 dm.ini 文件参数,修改完后重启数据库生效

# redo log
RLOG_APPEND_SYSTAB_LOGIC=1 

b. 动态配置

调用系统过程实现

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

当配置两种方式时,dmdrs 会优先使用辅助表方式

3. 用户配置(在源端和目的端操作)

需要在源数据库和目标数据库创建用户DMDRS,并授予同步相关权限
如果在测试环境学习使用,可以直接授予dba权限;如果考虑安全性,需要执行权限管控,则配置同步用户最小权限

用户最小权限说明:

权限类别权限说明权限
基础权限DM8数据库用户默认具有PUBLIC角色权限。需要赋予如下权限:PUBLIC
基础权限DMDRS服务在启动、数据装载及同步过程中需要使用数据库数据字典表来查询如附加日志信息、日志信息、数据库实例名和表定义等相关信息。需要赋予如下权限:SOI、SVI、VTI
装载相关权限装载时,数据库用户需要具有装载表的查询权限。如果待装载的表或序列在当前用户下,不需要额外赋予任何查询权限。 如果待装载的表或序列在其他用户下,则需要赋予待装载表的查询权限。需要赋予如下权限:SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名>
DSC相关权限数据库为DSC时,数据库用户需要具有建表、INSERT和UPDATE权限,以及建包和调用的权限。需要赋予如下权限:CREATE TABLE

4. DMDRS服务管理规划

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

find /path/to/dmdbms -name *dmdpi*
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/ptah/to/DMDPI驱动路径"
echo $LD_LIBRARY_PATH

5. 运行 DMDRS 服务

在 dmdrs 的安装目录 bin/conf_sample 下,存放有 dmdrs 配置文件模板

模板文件的注释给出了参数格式及参考值,可以根据实际使用情况进行自定义设置

  • 源DMDRS cpt.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
    <base>
        <mgr_port>Manager管理模块的端口号</mgr_port><!--如:5345-->
        <siteid>站点号</siteid><!--如:1-->
    </base>
    <cpt>
        <name>CPT模块的名称</name><!--如:cpt_dm8-->
        <login>
            <dbtype>源数据库的类型</dbtype><!--如:dm8-->
            <server>源数据库的服务名或IP地址</server><!--如:192.168.20.24-->
            <user>源数据库的用户名</user><!--如:DMDRS-->
            <pwd>源数据库的登录密码</pwd><!--如:DMDRS-->
            <port>源数据库的监听端口号</port><!--如:5236-->
        </login>
        <send>
            <ip>下一级DMDRS服务的IP地址</ip><!--如:192.168.20.21-->
            <port>下一级DMDRS服务的Manager管理模块的端口号</port><!--如:5345-->
            <target_name>下一级DMDRS服务的接收模块的名称</target_name><!--如:exec_dm8-->
            <map>
                <item>对象名映射</item><!--如:*.*==*.*-->
            </map>
        </send>
    </cpt>
</drs>

send 部分信息需要与目标 DMDRS 保持一致

  • 目标DMDRS exec.xml
<?xml version="1.0" encoding="GB18030"?>
<drs>
    <base>
        <mgr_port>Manager管理模块的端口号</mgr_port><!--如:5345-->
        <siteid>站点号</siteid><!--如:2-->
    </base>
    <exec>
        <name>EXEC模块的名称</name><!--如:exec_dm8-->
        <login>
            <dbtype>目标数据库的类型</dbtype><!--如:dm8-->
            <server>目标数据库的服务名或IP地址</server><!--如:192.168.20.21-->
            <user>目标数据库的用户名</user><!--如:DMDRS-->
            <pwd>目标数据库的登录密码</pwd><!--如:DMDRS-->
            <port>目标数据库的监听端口号</port><!--如:5236-->
        </login>
    </exec>
</drs>

借助 DMDRS 服务脚本模版TemplateService进行配置,脚本内容很多,仅需修改如下参数值

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

拷贝 bin/service_template 目录下的 TemplateService ,为方便区分,分别重命名为Drs_sourceService、 Drs_targetService,并移动到 bin 目录下

对应需要修改的参数值对应下表

服务名服务脚本模板目录安装目录执行程序目录配置文件路径(以默认配置文件名为例)默认服务脚本名可执行程序名服务类型名
源DMDRS/home/dmdrs/dmdrs5/bin/service_template/home/dmdrs/dmdrs5/home/dmdrs/dmdrs5/bin/home/dmdrs/dmdrs5/bin/drs.xmlDrs_sourceServicedrsvr“drs server”
目标DMDRS/home/dmdrs/dmdrs5/bin/service_template/home/dmdrs/dmdrs5/home/dmdrs/dmdrs5/bin/home/dmdrs/dmdrs5/bin/drs.xmlDrs_targetServicedrsvr“drs server”

分别启动 Drs_sourceService、Drs_targetService 服务

bin/Drs_sourceService start 
bin/Drs_targetService start

数据迁移

在源端启动控制台

./drcsl cpt.xml

连接DMDRS服务

CSL> connect

迁移源数据库 TEST 模式下的数据到目标数据库

CSL> alter cpt_dm8 cp "sch.name='TEST'"

验证迁移结果
在目的数据库查看 TEST 下是否存在对应的表、数据

迁移可能遇到的问题:

  1. 目标数据库中不存在 TEST 模式,迁移会失败,需要提前手动创建模式名
  2. 内存太小导致迁移失败

数据同步

在源端启动控制台

./drcsl cpt.xml

连接DMDRS服务

CSL> connect

设置数据库当前最新的日志LSN作为日志解析的起始位置

CSL> alter cpt_dm8 set lsn

启动源DMDRS服务中的CPT模块

CSL> start

将源数据库中 TEST 模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库

CSL> alter cpt_dm8 add table "sch.name='TEST'"

验证同步结果

  1. 在目的数据库查看 TEST 下是否存在对应的表、数据
  2. 在源数据库创建新表,插入新记录,查看是否正常同步至目的数据库
  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值