DMHS搭建
1. 搭建前的准备工作
两台机器ip分别为192.168.116.51和192.168.116.52。52为源端,51为目的端。
在源端、目的端分别安装达梦8,dm8安装路径/home/dmdba/dmdbms,实例路径/dmdata/DAMENG,端口都为5236。
源端准备工作
由于 DMHS 配置文件涉及多个配置项,在安装配置 DMHS 之前,需要做好相关准备工作,具体有如下准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的 DMHS 版本相匹配。
(2)规划好源端 DMHS 可使用的安装部署路径。
(3)DMHS 部署需要设置管理端口号(mgr_port)和数据端口号(data_port),因此在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确 DMHS 配置文件中连接 DM8 数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。
(5)确定是否有 DDL 同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且需要确定对象的操作如创建、删除、修改等。根据此同步需求设置 ddl_mask 参数值。
(6)确定源端 DM8 数据库的归档日志是否需要 DMHS 进行处理如删除、保留或转移。依据此需求设置 clear_flag 参数值。
(7)确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成 filter 及 map 元素项的参数值设置。
目的端准备工作
准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的 DMHS 版本相匹配。
(2)规划好目的端 DMHS 可使用的安装部署路径。
(3)DMHS 部署需要设置管理端口号(mgr_port)和数据端口号(data_port),在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确 DMHS 配置文件中目的端 DM8 数据库的用户(db_user)及密码(db_pwd),该用户用来执行同步,需要具有操作其他同步用户的权限。
(5)源端是否有序列同步,如果有,目的端配置文件中需要设置参数“seq_sync_mode”取值为 1。
(6)目的端同步表上是否有触发器,如果有,需要禁用触发器。
在源端、目的端安装DMHS
# 修改所属用户
chown dmdba:dinstall dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin
# 添加执行权限
chmod u+x dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin
# 命令行安装
./dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin -i

一直回车按照默认配置即可。
安装目录: /home/dmdba/dmhs
远程部署工具名称:HsAgent
主机Ip(外网):192.168.116.51
远程部署工具管理端口(1000-65535):5456
内置数据库轮询间隔(1-60):3
在搭建DMHS时使用的是自己安装的DM8数据库,不用管DMHS内置的数据库。

注意:老版本dmhs自带libdmoci.so,新版本不带libdmoci.so,需要单独申请。
系统环境检查
-
环境变量检查
Linux环境下,DMHS同步源端和目的端需要设置环境变量LD_LIBRARY_PATH,该环境变量需要包含DM8数据库安装路径bin目录,用于相关共享库的查找。使用echo命令进行查询:
echo $LD_LIBRARY_PATH

-
端口状态检查
检查 DMHS 配置端口的状态,确保端口未被占用,使用 netstat 命令查询:
netstat -ntlp | grep 5456
2. 数据库参数检查
在进行 DMHS 软件配置前,需要设置源端数据库归档、附加日志参数,并准备相关数据同步参数。
- 归档参数
DMHS 同步源端数据库需要开启归档模式,使用如下语句检查数据库归档是否开启:
select arch_mode from v$database;
ARCH_MODE 字段查询结果为 “N”, 则数据库归档未开启;结果为 “Y”,则表示已开启。
alter database mount;
alter database add archivelog 'DEST=/dmdata/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=0';
alter database archivelog;
alter database open;

开启归档之后,ARCH_MODE显示未Y。

-
逻辑日志参数
DMHS 同步源端数据库需要开启逻辑日志参数” RLOG_APPEND_LOGIC”
select PARA_NAME,PARA_VALUE from v$dm_ini where para_name='RLOG_APPEND_LOGIC';

PARA_VALUE 结果集为 1,说明该功能已开启。如果取值为 0,需要启用该参数功能 。
call sp_set_para_value(2,'RLOG_APPEND_LOGIC',1);

调用系统过程开启该参数或者手动更改dm.ini配置文件中的‘RLOG_APPEND_LOGIC’参数值为1,由于该参数为静态参数,需要重启数据库才能生效。

-
DDL 同步参数
在源端数据库中以 SYSDBA 用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置 ddl_mask 参数选项以启用该功能。同步脚本位于 DMHS 安装目录的scripts 子目录下,命名为:ddl_sql_dm8.sql

不要在disql中执行ddl_sql_dm8.sql,会报错,在DM管理工具中能成功执行脚本

可以看到SYSDBA下创建了如下表:

3. 安装部署
- 源端部署
在dmhs的bin目录下创建dmhs.hs文件,内容如下:
<?xml version="1.0" encoding="GB18030" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<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>
<idle_time>300</idle_time>
<ddl_mask>OBJ:OP</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
</arch>
<send>
<ip>192.168.116.51</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<net_pack_size>256</net_pack_size>
<net_turns>0</net_turns>
<crc_check>0</crc_check>
<trigger>0</trigger>
<constraint>0</constraint>
<identity>0</identity>
<filter>
<enable>
<item>SYSDBA.*</item>
</enable>
<disable/>
</filter>
<map>
<item>SYSDBA.* == SYSDBA.*</item>
</map>
</send>
</cpt>
</dmhs>
- 目的端部署
在dmhs的bin目录下创建dmhs.hs文件,内容如下:
<?xml version="1.0" encoding="GB18030" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
</recv>
<db_type>DM8</db_type>
<db_server>127.0.0.1</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<char_code>GB18030</char_code>
<db_port>5236</db_port>
<level>0</level>
<exec_mode>0</exec_mode>
<exec_thr>16</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx>5000</exec_trx>
<exec_rows>250</exec_rows>
<enable_rowid>0</enable_rowid>
</exec>
</dmhs>
4. 初始装载
初始装载是将源端数据库中的初始数据装载到目的端数据库,使 DMHS 同步的时刻源和目的端的同步表数据一致。装载前源端 DMHS 服务和目的端 DMHS 服务都需要开启。
- 启动目的端执行服务
进行初始字典装载时,需要首先启动目的端 DMHS 服务。
命令行方式:./dmhs_server
服务名方式:./dmhs_serverd start
刚开始搭建时先前台启动

初次启动目的端 DMHS 服务时,同步执行服务并未开启,需要使用 DMHS控制台工具连接 DMHS 管理服务,手动输入 start exec 命令开启。具体示例如下:

exec模块启动完成后前台显示如下:

查看目的端数据库可以看到SYSDBA用户下创建了一些表:

- 启动源端执行服务
在启动目的端DMHS执行服务后,源端启动 DMHS管理服务,并使用DMHS控制台工具连接 DMHS 管理服务,使用 COPY 命令及 DICT 装载选项,执行字典装载操作。
- 前台启动dmhs_server

- 使用 DMHS控制台工具连接 DMHS 管理服务,使用 COPY 命令及 DICT 装载选项
COPY 0 "SCH.NAME='SYSDBA'" DICT

可以看到前台日志显示如下:

- 启动源端捕获服务的控制台命令:
start cpt

前台日志显示如下:

5. 测试数据是否同步
- 源端插入数据
./disql
create table test(id int, name varchar(10));
insert into test values(1, 'apple');
commit;

- 目的端查看数据是否同步
./disql
select * from test;

可以看到目的端数据已经同步。

浙公网安备 33010602011771号