DMDRS二进制安装包部署搭建(DM8单机版)

DMDRS二进制安装包部署搭建(DM8单机版) 一、 DMDRS概述1.1 DRS产品简介DRS是一种用于同构数据库异构数据库以及各种数据管理系统之间的数据复制软件。DRS提供数据迁移数据同步数据分发和数据转换等功能数据同步功能还支持1对1双向一对多多对1级联同步环形同步和DMDRS主备等多种同步拓扑结构。1.2 产品特点高性能基于海量并行日志解析和执行入库、大小事务智能调度等技术实现秒级数据实时同步复制。高可靠性采用模块化设计支持多种同步拓扑结构如一对一、双向、一对多、多对一、级联同步、环形同步和DMDRS主备等。异构支持支持同构和异构数据库之间的数据复制兼容多种主流数据库。低侵入性采用基于日志的结构化数据复制技术不依赖源数据库的触发器或规则对源数据库系统几乎无影响。1.3 产品模块1.3.1 Manager管理模块提供客户端监听其他功能模块的加载和维护以及执行控制台命令等功能1.3.2 CPT模块主要实现源数据库的全量数据装载以及增加数据实时捕获解析和投递。1.3.3 DSS模块DSS模块具备高可靠高吞吐量的流存储和分发功能。 DSS模块接收到CPT模块发送的数据并根据Topic主题将消息分类流式持久化存储在不同的Topic中供下一级数据服务访问使用。1.3.4 EXEC模块主要功能接收CPT模块发送全量装载数据或者增量同步数据在目标数据库进行应用实现数据实时同步。同时EXEC模块也可以从DSS流式存储中获取同步数据并应用到目标数据库。1.3.5 CTV模块CTV模块通过DRS语言实现自定义编程式编写数据转换规则和逻辑实现数据清洗转换的功能。CVT模块从CPT模块或者EXEC模块中获取数据。二、 安装部署2.1 搭建环境1. 已安装部署DM8并创建实例分别在两台虚拟机上安装创建完成实例名服务器DM110.xx.xx.137DM210.xx.xx.1432. 此次DRS安装包是基于二进制文件非.bin文件。由于这次的安装文件解压后所有文件都没有进行分类因此提前进行相关文件分类操作。此步骤非必须创建dmdrs安装文件夹将drs解压后的文件移动到此文件夹[rootlocalhost ~]# mkdir -p /home/dmdba/dmdrs [rootlocalhost ~]# chown dmdba:dinstall /home/dmdba/dmdrs [rootlocalhost ~]# chmod 755 /home/dmdba/dmdrs [rootlocalhost ~]# mv /opt/debug /home/dmdba/dmdrs [rootlocalhost ~]# mv /opt/release /home/dmdba/dmdrs创建bin、conf, lib 三个目录将release中的文件进行分类规整[rootlocalhost ~]# cd /home/dmdba/dmdrs/release [rootlocalhost release]# mkdir -p bin conf lib [rootlocalhost release]# ls -la移动可执行文件到bin目录[rootlocalhost release]# mv drbkptool drcnet drcsl drdgtool drsvr dsasvr dschsv r dssvr dvagent dvsvr bin/ [rootlocalhost release]# ls -la bin/移动库文件到lib目录[rootlocalhost release]# mv *.so lib/ [rootlocalhost release]# ls -la lib/ | head -10移动配置文件到conf目录并重新配置文件夹权限[rootlocalhost release]# cp -r conf_sample/* conf/ 2/dev/null [rootlocalhost release]# mv lang_*.ini conf/ 2/dev/null [rootlocalhost release]# chown -R dmdba:dinstall /home/dmdba/dmdrs [rootlocalhost release]# chmod x bin/* [rootlocalhost release]# chmod 644 lib/*2.2 开启源数据库的归档和日志为了保证源DMDRS服务运行中数据的一致性源DMDRS服务需要读源数据库的归档和逻辑日志因此源数据库需要开启归档和逻辑日志功能。注意 源数据库未开启归档和逻辑日志或者参数配置不正确将无法进行同步2.2.1 静态配置--通过配置文件进行设置DM8数据库配置文件“dm.ini”中ARCH_INI参数值为1其次配置归档参数根据实际需求配置RLOG_APPEND_LOGIC的参数值参数配置说明如下所示。1如果有主键列记录UPDATE和DELETE操作时只包含主键列信息若没有主键列则包含所有列信息。2不论是否有主键列记录UPDATE和DELETE操作时都包含所有列的信息。3记录UPDATE时包含更新列的信息以及ROWID记录DELETE时只有ROWID[dmdbalocalhost bin]$ vi /home/dmdba/dmdbms/data/MANDY/dm.ini [dmdbalocalhost bin]$ vi /home/dmdba/dmdbms/data/MANDY/dmarch.ini#configuration file ARCH_INI 1 #redo log RLOG_APPEND_LOGIC 1[ARCHIVE_LOCAL1] ARCH_TYPE LOCAL ARCH_DEST /home/dmdba/dmarch ARCH_FILE_SIZE 1024 ARCH_SPACE_LIMIT 4096重启数据库后可查看配置文件是否生效登录disql进行查看[dmdbalocalhost bin]$ ./disql SYSDBA/Dameng1234510.xx.xx.xxx:5235SQL select para_name, para_value, sess_value, file_value from V$DM_INI where para_name ARCH_INI; SQL select para_name, para_value, sess_value, file_value from V$DM_INI where para_name RLOG_APPEND_LOGIC;存在以上查询结果表示ARCH和RLOG_APPEND_LOGIC参数配置已生效。2.3 配置DDL同步DMDRS服务支持DDL同步功能源数据库为DM8单机和DSC时支持触发器方式和系统表方式配置DDL同步源数据库为DPC时仅支持系统表方式配置DDL同步表级同步不支持系统表方式同步DDL通过触发器方式配置源表2.3.1 执行创建触发器脚本在源数据库执行“ddl_sql_dm8.sql”脚本创建触发器和辅助表脚本默认位置在DMDRS执行程序目录下的scripts子目录中。由于之前环境搭建过主备主库处于mount模式则无法执行此脚本。关闭守护进程并修改主库模式强制切换到open模式。SQL SP_SET_PARA_VALUE(1, ALTER_MODE_STATUS, 1); SQL ALTER DATABASE OPEN FORCE; SQL SELECT STATUS$ FROM V$INSTANCE; #查看是否修改成功执行脚本文件SQL set define off; SQL start /home/dmdba/dmdrs/release/scripts/ddl_sql_dm8.sql2.3.2 检查创建的触发器和辅助表是否有效1.检查创建的触发器SQL select owner, trigger_name from dba_triggers where owner SYSDBA and trigger_name like DRS_$% and status Y;2. 检查创建的辅助表SQL select owner, table_name from dba_tables where owner SYSDBA and table_name like DRS_$% and status VALID;检查结果表示创建成功。2.4 创建测试数据-- 创建测试用户 CREATE USER TEST IDENTIFIED BY Test12345; GRANT DBA TO TEST; -- 切换到TEST用户 CONN TEST/Test1234510.35.25.137:5235; -- 创建测试表 CREATE TABLE T_EMP (ID INT PRIMARY KEY,NAME VARCHAR(50),AGE INT,CREATE_TIME DATE DEFAULT SYSDATE); -- 插入测试数据 INSERT INTO T_EMP(ID, NAME, AGE) VALUES(1, ZHANGSAN, 25); INSERT INTO T_EMP(ID, NAME, AGE) VALUES(2, LISI, 30); COMMIT; -- 验证数据 SELECT * FROM T_EMP;三. DMDRS准备工作3.1 DMDRS服务管理规划源端目的端DMDRS服务运行过程中需要使用数据库的驱动文件访问数据库数据需要为运行DMDRS的用户设置环境变量。在系统中查询驱动文件的所在位置find /home/dmdba/dmdbms -name *dmdpi*设置环境变量添加驱动文件路径--这个环境变量配置参考3.3部分export LD_LIBRARY_PATH/home/dmdba/dmdbms/drivers/dpi3.2 DMDRS配置DMDRS使用XML文件作为配置文件通过XML配置文件配置产品服务功能。常用产品服务的配置文件模板存放于DMDRS安装目录下配置文件模板名称和默认配置文件名称如下表所示。DMDRS服务配置文件模板配置默认文件源DMDRScpt.xml、cpt_dsc.xmldrs.xml目标DMDRSexec.xmldrs.xmlDMDSSdss.xmldrs.xml3.2.1 配置源DMDRS源DMDRS服务包括Manager模块和CPT模块。在源DMDRS服务中Manager模块提供基本的服务管理功能CPT模块提供数据捕获功能。源数据库为DM8单机修改cpt.xml文件内容?xml version1.0 encodingUTF-8? drs base mgr_port25345/mgr_port #Manager模块的端口号取值范围1000~65534需要保证端口号唯一 siteid1/siteid /base cpt namecpt_dm8/name login dbtypedm8/dbtype server10.35.25.137/server userSYSDBA/user pwdDameng12345/pwd port5235/port /login send ip10.35.25.143/ip port25346/port target_nameexec_dm8/target_name map itemTEST.T_EMPTEST.T_EMP/item /map /send /cpt /drs3.2.2 配置目标DMDRS目标服务包括Manager管理模块和EXEC模块[rootlocalhost release]# vi /home/dmdba/dmdrs/release/conf/exec.xml ?xml version1.0 encodingUTF-8? drs base mgr_port25346/mgr_port siteid2/siteid /base exec nameexec_dm8/name login dbtypedm8/dbtype server10.35.25.143/server userSYSDBA/user pwdDameng12345/pwd port5235/port /login /exec /drs3.3 管理服务DMDRS提供服务脚本模板TemplateService用户可以修改和使用服务脚本模板快速地完成源DMDRS服务、目标DMDRS服务和DMDSS服务脚本的配置通过服务脚本实现服务的启动、停止和重启。3.3.1 配置DMDRS服务脚本1. 找到服务脚本并拷贝到执行程序目录里并添加执行权限[dmdbalocalhost bin]$ find /home/dmdba/dmdrs/release -name *service* -o -name *template* | grep -i service [dmdbalocalhost bin]$ cp /home/dmdba/dmdrs/release/service_template/TemplateService /home/dmdba/dmdrs/release/bin/DmDRSService [dmdbalocalhost bin]$ chmod x /home/dmdba/dmdrs/release/bin/DmDRSService cp /home/dmdba/dmdrs/release/service_template/TemplateService /home/dmdba/dmdrs/release/DrsService2. 打开并修改服务脚本中的相关配置参数[dmdbalocalhost bin]$ vi /home/dmdba/dmdrs/release/bin/DmDRSService##源端DMDRS配置 #REPLACE INSTALL_HOME path INSTALL_HOME/home/dmdba/dmdrs #REPLACE program dir PROG_DIR/home/dmdba/dmdrs/release/bin CONF_PATH/home/dmdba/dmdrs/release/conf/cpt.xml #REPLACE program name, drsvr/dssvr/dvsvr EXEC_PROG_NAMEdrsvr #REPLACE need library path, LD_LIBRARY_PATH/LIBPATH NEED_LIB_PATH/home/dmdba/dmdbms/bin:/home/dmdba/dmdbms/drivers/dpi:/home/dmdba/dmdrs/release/lib #REPLACE service type, drs server/dss server/dvs server SERVICE_TYPE_NAMEdrs server ##目的端DMDRS配置 INSTALL_HOME/home/dmdba/dmdrs PROG_DIR/home/dmdba/dmdrs/release/bin CONF_PATH/home/dmdba/dmdrs5/release/conf/exec.xml EXEC_PROG_NAMEdrsvr #REPLACE need library path, LD_LIBRARY_PATH/LIBPATH NEED_LIB_PATH/home/dmdba/dmdbms/bin:/home/dmdba/dmdbms/drivers/dpi:/home/dmdba/dmdrs/release/lib SERVICE_TYPE_NAMEdrs server3.3.2 启动DMDRS服务[dmdbalocalhost bin]$ cd /home/dmdba/dmdrs/release/bin [dmdbalocalhost bin]$ ./DmDRSService start执行结果报错通过错误定位发现是环境变量配置有误重新调整配置参数如下[dmdbalocalhost bin]$ export DMDRS_HOME/home/dmdba/dmdrs/release [dmdbalocalhost bin]$ export DM_HOME/home/dmdba/dmdbms [dmdbalocalhost bin]$ export LD_LIBRARY_PATH/home/dmdba/dmd bms/bin:/home/dmdba/dmdbms/drivers/dpi:/home/dmdba/dmdrs/rele ase/lib:$LD_LIBRARY_PATH再次执行后服务启动成功。3.4 设置永久环境变量在源DMDRS和目标DMDRS服务器的环境变量中添加DMDPI驱动文件路径# 编辑.bash_profile vi ~/.bash_profile # 添加或修改以下内容 export DM_HOME/home/dmdba/dmdbms export DMDRS_HOME/home/dmdba/dmdrs/release export LD_LIBRARY_PATH$DM_HOME/bin:$DM_HOME/drivers/dpi:$DMDRS_HOME/lib:$LD_LIBRARY_PATH # 使环境变量生效 source ~/.bash_profile四. 数据复制测试4.1 数据迁移将源服务器上的T_EMP表迁移到目标服务器。数据迁移先启动EXEC模块再启动CPT模块[dmdbalocalhost release]$ ./bin/drsvr /home/dmdba/dmdrs/release/conf/exec.xml##如果进程有问题可以参考 [dmdbalocalhost bin]$ pkill -f drsvr.*cpt [dmdbalocalhost bin]$ cd /home/dmdba/dmdrs/release [dmdbalocalhost release]$ export DM_HOME/home/dmdba/dmdbms [dmdbalocalhost release]$ export DMDRS_HOME/home/dmdba/dmdrs/release [dmdbalocalhost release]$ export LD_LIBRARY_PATH$DM_HOME/bin:$DM_HOME/drivers/dpi:$DMDRS_HOME/lib:$LD_LIBRARY_PATH [dmdbalocalhost release]$ nohup ./bin/drsvr conf/cpt.xml /home/dmdba/dmdrs/log/cpt.log 21 2. 执行数据迁移全量同步在源端服务器执行启动控制台cpt模块连接源DMDRS服务[dmdbalocalhost conf]$ cd /home/dmdba/dmdrs/release/bin [dmdbalocalhost bin]$ ./drcsl ../conf/cpt.xml CSL connect3. 将源数据库模式TEST下的T_EMP表全量迁移到目标数据库CSL alter cpt_dm8 cp sch.nameTEST and tab.nameT_EMP4. 验证迁移结果在目标端验证数据同步失败。SQL SELECT COUNT(*) FROM TEST.T_EMP; 行号 COUNT(*) ---------- -------------------- 1 0查询日志提示cpt模块没有正确初始化同步站点需要先设置LSN并启动cpt模块。CSL alter cpt_dm8 set lsn