注册
使用dmhs搭建达梦8到达梦8的单向同步
专栏/培训园地/ 文章详情 /

使用dmhs搭建达梦8到达梦8的单向同步

Nino 2024/06/13 1378 0 0
摘要

dm8-dm8

1 DMHS安装

(源端、目的端都要做) linux平台: 命令行:./dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin -i 图形化界面:./dmhs_V4.2.60_dm8_rev106302_rh6_64_veri_20220225.bin 命令行安装注意选项: (1)选择完整版(web客户端) (2)本次配置需要选择统一部署 (3)主机IP:虚拟机外网ip地址 (4)路径:/dm8/bin:/dm8/dmhs/bin (5)所有启动方式选择手动

2 DM8数据库准备工作

2.1实例准备

(源端、目的端都要做) 主库: /dm8/bin/dminit PATH=/dm8/data/ DB_NAME=DMHS1 INSTANCE_NAME=DMHS1 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 备库: /dm8/bin/dminit PATH=/dm8/data/ DB_NAME=DMHS2 INSTANCE_NAME=DMHS2 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048
/dm8/bin/dmserver /dm8/data/DMHS1/dm.ini /dm8/bin/dmserver /dm8/data/DMHS2/dm.ini

2.2开启日志

(源端做,目的端不做) 执行了这个或者注册服务启动服务才可以连接:/dm8/bin/dmserver /dm8/data/DMHS1/dm.ini 连接disql:/dm8/bin/disql SYSDBA/SYSDBA:5236 //开启归档日志 ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/data/DMHS1/arch,TYPE = LOCAL,FILE_SIZE = 512,SPACE_LIMIT = 5120'; ALTER DATABASE OPEN; select para_value from v$dm_ini where para_name in ('ARCH_INI'); select arch_mode from v$database; //开启逻辑日志 SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',2); SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME='RLOG_APPEND_LOGIC'; //select para_value from v$dm_ini where para_name in ('RLOG_APPEND_LOGIC');

2.3 创建供DMHS软件连接数据库的用户

(源端、目的端都要做) /* 其中DMHS为用户名,双引号内为密码,这没有特别要求,只需要后面和配置文件对应上即可,需要注意授权该用户查询、写入其他用户的权限,这里为了方便直接给了DBA权限 */ /dm8/bin/disql SYSDBA/SYSDBA:5236 CREATE USER DMHS IDENTIFIED by "root123456"; GRANT VTI TO DMHS; GRANT PUBLIC TO DMHS; GRANT RESOURCE TO DMHS; GRANT DBA TO DMHS; /* CREATE TABLESPACE DMHS DATAFILE 'DMHS.DBF' size 128; CREATE USER DMHS IDENTIFIED by "root123456" DEFAULT TABLESPACE DMHS DEFAULT INDEX TABLESPACE DMHS; */

2.4 配置DMHS软件(源端操作)

2.4.1开启DDL 需要执行相关脚本(仅源端做)

使用SYSDBA连接登录数据库执行DMHS安装目录下script子目录的“ddl_sql_dm8.sql”脚本。

(源端做,目的端不做) 方式一(推荐):最好使用自带的manager图形化界面不出错!! 方式二: /dm8/bin/disql SYSDBA/SYSDBA:5236 SQL> start /dmhs/scripts/ddl_sql_dm8.sql 检查辅助表是否创建成功:select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID'; 查询触发器是否创建成功:select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DMHS%' and status = 'Y'; 查询结果共9个辅助表,4个触发器。

2.4.2创建需要测试的用户,赋予权限

create user DMHSTEST identified by "root123456"; grant vti,resource,public,dba to DMHSTEST; conn DMHSTEST/root123456 create table test01 as select * from sysobjects; create table test02 as select * from sysobjects; //表建立在模式为DMHSTEST上

2.4.3配置 dmhs.hs参数文件

此参数文件要放在 /dm8/dmhs/bin下 (源端参数文件内容) vim /dm8/dmhs/bin/dmhs.hs <?xml version="1.0" encoding="utf-8"?> <dmhs> <base> <lang>en</lang> <mgr_port>5345</mgr_port> <ckpt_interval>60</ckpt_interval> <siteid>1</siteid> <version>2.0</version> </base> <cpt> <db_type>DM8</db_type> ##需要改的 地方 数据库版本 <db_server>127.0.0.1</db_server> ##需要改的 地方 源端Ip 127.0.1.1 即可 <db_user>DMHS</db_user> ##需要改的 地方 源端 数据库用户名 <db_pwd>root123456</db_pwd> ##需要改的 地方 源端 数据库密码 <db_port>5236</db_port> ##需要改的 地方 源端 服务端口 <parse_thr>1</parse_thr> <idle_time>3000</idle_time> <ddl_mask>OBJ:OP</ddl_mask> ##<ddl_mask>OP:OBJ</ddl_mask> <dict_dir>/dm8/dmhs/dmhs_dict</dict_dir> ## 复制数据表的 数据字典所谓在位置 一定要存在的目录 <arch> <clear_interval>43200</clear_interval> <clear_flag>0</clear_flag> </arch> <send> <ip>192.168.100.112</ip> ##需要改的 地方 目标端 IP <mgr_port>5345</mgr_port> <data_port>5346</data_port> <level>0</level> <trigger>1</trigger> <constraint>1</constraint> <identity>1</identity> <net_turns>1</net_turns> <timeout>60</timeout> <parse_policy>8</parse_policy> <filter> <enable> <item>DMHSTEST.*</item> ##复制的可以按照模式如果 一个模式下所有内容就为 * </enable> <disable> </disable> </filter> <map> </map> </send> </cpt> </dmhs>

2.4.4把DMHS软件注册为系统服务,使用服务脚本直接注册服务(源端操作)

root执行: /dm8/dmhs/scripts/root/dmhs_service_installer.sh -t dmhs_server -p DMHS_DM -x /dm8/dmhs/bin/dmhs.hs -d /dm8/dmhs/bin systemctl start DmhsServiceDMHS_DM.service

2.5配置DMHS软件 (目的端步骤)

2.5.1创建需要测试的用户,赋予权限

create user DMHSTEST identified by "root123456"; grant vti,resource,public,dba to DMHSTEST;

2.5.2配置 dmhs.hs参数文件

// 此参数文件要放在 /dm8/dmhs/bin下 vim /dm8/dmhs/bin/dmhs.hs <?xml version="1.0" encoding="utf-8"?> <dmhs> <base> <lang>en</lang> <mgr_port>5345</mgr_port> <chk_interval>2</chk_interval> <ckpt_interval>60</ckpt_interval> <siteid>11</siteid> <version>2.0</version> </base> <exec> <recv> <data_port>5346</data_port> </recv> <db_type>DM8</db_type> <db_server>127.0.0.1</db_server> <db_user>DMHS</db_user> <db_pwd>root123456</db_pwd> <db_port>5236</db_port> <level>0</level> <exec_mode>1</exec_mode> <exec_thr>32</exec_thr> <exec_sql>1024</exec_sql> <exec_trx>5000</exec_trx> <exec_rows>1000</exec_rows> <case_sensitive>1</case_sensitive> <exec_policy>0</exec_policy> <toggle_case>0</toggle_case> <commit_policy>1</commit_policy> <enable_merge>1</enable_merge> <check_key>1</check_key> <check_index>0</check_index> </exec> </dmhs>

DMHS配置常见错误

1 DM8同步DM8配置遇到的问题

1.1DMHS安装时,disql执行ddl_sql_dm8.sql失败

image.png

解决方法: (1)使用manager客户端粘贴代码运行 (1)先执行SET DEFINE OFF;再执行脚本

2 测试中遇到的问题

1 start 启动报错

image.png

image.png
解决办法

退出DMHS:ldd libdmhs_exec.so,如上图所示 //看到最后一行:libdmoci.so => not found 1、复制文件:cp /home/dmdba/data/dmoci/libdmoci.so /dm8/dmhs/bin 若是用root赋予权限:chown dmdba:dinstall libdmoci.so 2、如下图所示,导出包所在路径

image.png

3 分析模块失败,3秒后重试

解决办法: (1)首先检查配置文件中ip+端口是否正确! (2)网络端口是否通(防火墙是否开启导致屏蔽相关端口) 最简单办法是:关闭防火墙 systemctl stop firewalld systemctl disable firewalld 但是实际生产则是需要联系网络安全员开放相关端口
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服