DMHS 的安装部署
本次 DM 实时同步的源数据库和目的数据库都是 DM8,因此双方都需要安装部署基于 DM 的 DMHS 包
前提
安装前提:关闭防火墙 firewalld 和 SELinux
节点 | 主机 |
---|---|
源节点 | 192.168.244.132 |
目的节点 | 192.168.244.136 |
安装目录:/home/dmdba/dmhs
安装 DMHS
在两个结点均安装基于 DM 的 DMHS,由于源节点没有图形界面,因此将以两种方式(图形界面和命令行界面)分别进行安装
图形界面安装
修改权限后以 dmdba 身份执行以下命令
./dmhs_V4.1.48_pack4_dm8_rev104804_rh6_64_veri_20211228.bin
图形化界面安装完成
命令行界面安装
命令行界面安装完成
安装 ODBC
以 root 身份执行以下命令
yum install unixODBC -y
odbcinst -j
修改 odbcinst.ini 和 odbc.ini 文件
vi /etc/odbcinst.ini
###增加以下内容
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /home/dmdba/dmdbms/bin/libdodbc.so
###
vi /etc/odbc.ini
###增加以下内容
[DM8]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
以 dmdba 身份执行 isql 测试连接是否正常
数据库配置
开启归档(源端和目的端)
登入源数据库执行以下命令开启归档日志
alter database mount;
alter database add archivelog 'DEST=/home/dmdba/dmarch/DMHS,TYPE=LOCAL,SPACE_LIMIT=0';
alter database archivelog;
alter database open;
开启逻辑日志(源端和目的端)
登入数据库执行以下命令开启逻辑日志
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
创建相关表及触发器(源端)
执行 DMHS 安装目录下 scripts/ddl_sql_dm8.sql 文件,可以通过以下两种方式执行
- 登入源数据库通过 start 执行,执行过程中有要求输入参数确认,有可能出错
- 复制文件内容通过 DM 管理工具直接执行,建议使用该方式
创建结果是 SYSDBA 模式下的 9 个表和 4 个触发器
目的端及源端配置启动
注意:配置启动环节中有概率出现异常,建议先跳转阅读后续的问题章节
目的端
在 DMHS 安装目录下的 bin 目录新建 dmhs.hs 配置文件
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base> <!-- 管理模块的基本配置 -->
<lang>en</lang> <!-- 语言选项,ch 为中文,en 为英文 -->
<mgr_port>5345</mgr_port> <!-- 管理端口号,默认为5345-->
<ckpt_interval>60</ckpt_interval> <!-- 检查点间隔,默认60 -->
<siteid>2</siteid> <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<version>2.0</version>
</base>
<exec> <!-- 执行模块的基本配置 -->
<recv>
<data_port>5346</data_port> <!-- 当数据传递采用网络直连时,需要配置该参数,表明同步数据从该端口号获取。 -->
</recv>
<db_type>dm8</db_type> <!-- 目标端数据库类型 -->
<db_server>192.168.244.136</db_server> <!-- 目标端数据库服务名或IP -->
<db_user>SYSDBA</db_user> <!-- 目标端数据库用户 -->
<db_pwd>SYSDBA</db_pwd> <!-- 用户的密码 -->
<db_port>5236</db_port> <!-- 目标端数据库端口 -->
<db_name></db_name> <!-- 默认数据库名,默认为空串(只针对dm6有用)-->
<char_code>PG_GB18030</char_code>
<exec_thr>4</exec_thr> <!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为1 -->
<exec_sql>1024</exec_sql> <!-- SQL 缓存大小,默认为 512M -->
<exec_trx> 5000 </exec_trx> <!-- 事务缓存个数,默认为 5000 -->
<exec_rows>1000</exec_rows> <!-- 批量绑定行数,默认为 250 -->
</exec>
</dmhs>
执行以下命令启动目的端
./dmhs_server dmhs.hs
新开一个终端执行以下命令
./dmhs_console
connect 192.168.244.136:5345
start exec
源端
在 DMHS 安装目录下的 bin 目录新建 dmhs.hs 配置文件
<?xml version="1.0" encoding="GB2312"?>
<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>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.244.136</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置项-->
<item>SYSDBA.*==SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
执行以下命令启动源端
./dmhs_server dmhs.hs
新开一个终端执行以下命令
./dmhs_console
connect 192.168.244.132:5345
clear exec lsn #初始化日志起始位置
COPY 0 "SCH.NAME='SYSDBA'" CREATE|INSERT|DICT #装载SYSDBA的schema数据,配置同步掩码,COPY 命令和 LOAD 命令是对等的,COPY 命令是早期版本装载载命令,为了版本兼容而保留
至此 DM 到 DM 的 DMHS 部署及同步完成,同步结果可以在目的端 DM 进行查询
问题
在 DMHS 配置过程中遇到了以下问题
- lib libdmhs_exec.so can not found
- 执行 start exec 时提示段错误
以上问题均由于一个原因,就是 libdmoci.so 版本不对,经查证后有以下原因解释和解决方法
老版本 DMHS 自带 libdmoci.so(DM7 版本),新版本(DM8)不带 libdmoci.so,需要单独向原厂申请。libdmhs_exec.so 需要链接的是对目的数据库操作的库文件 libdmoci.so,也就是 DM8 的 libdmoci.so,然而 DMHS 下的 db/bin 是 DMHS 内置元数据库 DM7 的路径,也就是说此时执行器链接的是 DM7 的 libdmoci.so,所以执行异常
实际上 DM8 默认的安装文件中也并没有包含 libdmoci.so 文件, 因为 DM8 的 bin 文件安装中并不包含 oci 接口库。 因此对 DM8 安装配置 DMHS 必须向原厂申请对应版本的 dmdci.zip 文件,解压 dmdci.zip 后复制库文件 libdmoci.so 到 DM8/bin 下对应位置即可使用
达梦在线服务平台:https://eco.dameng.com