注册
DRS_DM8到DM8迁移
专栏/技术分享/ 文章详情 /

DRS_DM8到DM8迁移

不夜侯 2026/08/21 184 0 0
摘要

创建安装目录并且给对应的权限(源端和目标端同时执行)

mkdir -p /dbbak/dmbak/dmdrs
mkdir -p /dbbak/dmbak/dsrsoft
chown -R dmdba:dinstall /dbbak/dmbak/dmdrs
chmod -R 755 /dbbak/dmbak/dmdrs

开始安装软件–到软件上传目录 /dbbak/dmbak/dsrsoft(源端和目标端执行)

–授权
chown -R dmdba:dinstall /dbbak/dmbak/dmdrs
chmod -R 755 /dbbak/dmbak/dmdrs
–开始安装
[dmdba@centos1 dsrsoft]$ ./dmdrs_rev218265_x86_rh6_64_20260409.bin -i
Extract install files…
Please select the installer’s language (C/c:Simplified Chinese, H/h:Hong Kong Traditional Chinese, E/e:English)[E/e]:c
-----------欢迎使用达梦数据复制软件安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdrs5]: /dbbak/dmbak/dmdrs
该路径不为空,是否继续安装?(Y/y or N/n)[N/n]:y
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
请选择安装组件数字序号(使用空格间隔):
未选择组件
确认?[Y/y(确认选择) or N/n(重新选择)]:y
-----------许可证文件-----------
1.免费试用达梦数据复制软件(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:2
请输入许可证文件路径:/dbbak/dmbak/dsrsoft/dmdrsC301900946.key
许可证文件限制信息如下:
有效日期:2026-09-25
版本类型:试用版
许可证编号:*******
授权顾客名称:达梦公司产品试用
项目名称:达梦公司产品试用
授权数据库类型:DM6、DM7、DM8、Oracle、SQL Server、MySQL、DB2、PostgreSQL
当前默认许可证文件支持数据库类型为[DM6、DM7、DM8、Oracle、SQL Server、MySQL、DB2、PostgreSQL],是否继续安装?[Y/y or N/n]:y
-----------配置-----------
数据库驱动路径配置 -数据库驱动路径[]:/home/dmdba/dm/dmdbms/bin
-----------安装小结-----------
安装目录:[/dbbak/dmbak/dmdrs]
数据库驱动路径:[/home/dmdba/dm/dmdbms/bin]
所需磁盘空间/可用磁盘空间:[637 MB/29,227 MB]
确认安装?[Y/y or N/n]:y
-----------安装中-----------
server 正在安装 … server 安装完成.
default 正在安装 … default 安装完成.
doc 正在安装 … doc 安装完成.
安装成功
-----------安装总结-----------
达梦数据复制软件V5安装完成
更多安装信息,请查看安装日志文件:/dbbak/dmbak/dmdrs/log/install.log

数据库准备工作

源数据库需要开启归档和逻辑日志

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.
如果存在以上查询结果,表示ARCH_INI参数配置已生效。
若非上面的按照规范开启归档。
检查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.

若非上面的指,用以下的办法开启 RLOG_APPEND_LOGIC。
SQL> call sp_set_para_value(1,‘RLOG_APPEND_LOGIC’,1);

配置DDL同步

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


SQL> set define off;
SQL>  start  /dbbak/dmbak/dmdrs/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_REVOKE
3          SYSDBA DRS_$DDL_TRIGGER_GRANT
4          SYSDBA DRS_$DDL_TRIGGER_BEFORE

已用时间: 194.838(毫秒). 执行号:1115269.
检查创建的辅助表。
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
已用时间: 408.042(毫秒). 执行号:1116762.

设置环境变量,上传依赖包

上传解压dm8_xxxx_dmdci.zip --按照实际版本来。
然后将dmoci下的
libdmdpi.so,libdmfldr.so,libdmoci.a,libdmoci.so 拷贝到/dbbak/dmbak/dmdrs/bin下
和将dmoci\dependencies下的
libcrypto.so,libssl.so 拷贝到/dbbak/dmbak/dmdrs/bin下
并且给以上的库授权
chown -R dmdba:dinstall /home/dmdba
chmod 775 /home/dmdba

DM8数据库:DMDPI驱动
在终端的配置文件中添加设置环境变量命令。
su - dmdba
vi ~/.bash_profile
export LD_LIBRARY_PATH= /dbbak/dmbak/dmdrs/bin:$LD_LIBRARY_PATH
source ~/.bash_profile

DMDRS配置

配置源DMDRS
cd /dbbak/dmbak/dmdrs/bin
[dmdrs@dm1 bin]$ vi cpt.xml

<?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-->
        <parse_thr>8</parse_thr>
        <ddl_mask>TABLE:INDEX:CHECK:OP</ddl_mask>
        <sel_ddl_convert>1</sel_ddl_convert>
        <parse_queue>512</parse_queue>
        <calc_md5_col_num>0</calc_md5_col_num>
        <send_queue>5000</send_queue>
        <log_buf_size>2048</log_buf_size>
        <op_dml_size>4096</op_dml_size>
        <login><!--源端数据库-->
            <dbtype>DM8</dbtype><!--如:dm7-->
            <server>192.168.247.131</server><!--如:192.168.20.24-->
            <user>SYSDBA</user><!--如:DMDRS-->
            <pwd>SYSDBA</pwd><!--如:DMDRS-->
            <port>5236</port><!--如:5236-->
        </login>
        <send><!--目标端数据库-->
            <ip>192.168.247.137</ip><!--如:192.168.20.21-->
            <port>5345</port><!--如:5345-->
            <target_name>EXEC_DM8</target_name><!--如:exec_dm8-->
            <map>
                <item>RESOURCE.*==RESOURCE.*</item><!--如:*.*==*.*-->
            </map>
        </send>
    </cpt>
</drs>

配置目标DMDRS
cd /dbbak/dmbak/dmdrs/bin
vi exec.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.168.247.137</server><!--如:目标端-->
            <user>SYSDBA</user><!--如:DMDRS-->
            <pwd>SYSDBA</pwd><!--如:DMDRS-->
            <port>5236</port><!--如:5236-->
        </login>
		<pub_buf_size>4096</pub_buf_size>
		<work_thr>64</work_thr>
		<size_buf_size>4096</size_buf_size>
		<recv_buf_size>512</recv_buf_size>
		<bind_rows>2000</bind_rows>
		<max_stmt_num>255</max_stmt_num>
		<enable_op_like>1</enable_op_like>
		<plan_vpool_size>128</plan_vpool_size>
		<use_plan_pool>1</use_plan_pool>
		<max_bind_buf_size>128</max_bind_buf_size>
		<load_thr>128</load_thr>
		<seq_sync_mode>0</seq_sync_mode>
		<exe_nowait>1</exe_nowait>
		<ckpt_interval>10000</ckpt_interval>
		<group>
			<item>
				<id>1</id>
				<exec_policy>0</exec_policy>
				<error_policy>1</error_policy>
				<merge_policy>3</merge_policy>
				<exec_mask>AFFECT_ROW|CHECK_COL|CHECK_KEY|UPDATE_DEPLICATE|ROW_HASH</exec_mask>
				<desc>
					<table>*.*</table>
				</desc>
			</item>
		</group>
    </exec>
</drs>

配置DMDRS服务脚本(源端和目标端同时执行)

打开并修改服务脚本中的相关配置参数
INSTALL_HOME=<安装目录>
PROG_DIR=<执行程序目录>
CONF_PATH=<配置文件路径>
EXEC_PROG_NAME=<可执行程序名>
SERVICE_TYPE_NAME=<服务类型名>

源端:
cd  /dbbak/dmbak/dmdrs/bin
cp service_template/TemplateService DrsService
vi DrsService
INSTALL_HOME= /dbbak/dmbak/dmdrs
PROG_DIR= /dbbak/dmbak/dmdrs/bin
CONF_PATH= /dbbak/dmbak/dmdrs/bin/cpt.xml
NEED_LIB_PATH= /dbbak/dmbak/dmdrs/bin
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME="drs server" 

目标端:
cd  /dbbak/dmbak/dmdrs/bin
cp service_template/TemplateService DrsService
vi DrsService
INSTALL_HOME= /dbbak/dmbak/dmdrs
PROG_DIR= /dbbak/dmbak/dmdrs/bin
CONF_PATH= /dbbak/dmbak/dmdrs/bin/exec.xml
NEED_LIB_PATH= /dbbak/dmbak/dmdrs/bin
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME="drs server" 

运行DMDRS服务

按照服务的运行顺序,先启动目标DMDRS服务和后源DMDRS服务。

启动目标DMDRS服务

启动服务。
./DrsService start
启动目标DMDRS服务中的EXEC模块
使用服务脚本启动服务后,需要使用远程控制台对服务中的模块执行启动命令。
启动控制台。
./drcsl exec.xml

连接目标DMDRS服务
CSL> connect

启动目标DMDRS服务中EXEC模块。
CSL> start

启动源DMDRS服务

将服务脚本模板TemplateService拷贝到服务脚本目录并修改服务脚本的名称为DrsService
./DrsService start
启动源DMDRS服务中的CPT模块
使用服务脚本启动服务后,需要使用远程控制台对服务中的模块执行启动命令。
启动控制台。
./drcsl cpt.xml
连接源DMDRS服务。

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

CSL> alter cpt_dm8 set lsn
启动源DMDRS服务中的CPT模块。

CSL> start
将源数据库中模式下所有的表添加同步,添加后自动将源数据库表的全量数据装载到目标数据库,装载完成后自动进行增量数据的同步。
CSL> alter cpt_dm8 add table "sch.name='RESOURCE'" INSERT

验证同步结果

在源数据库中RESOURCE模式下所有的表中分别插入数据,如果插入的数据能正确地同步到目标数据库,则表示数据同步成功

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服