一、DMHS工具的特点
(1)捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上
(2)即使源数据库中断了服务,也不会影响日志分析。
(3)执行器将接收到的数据入库执行,它可以与目标端数据库处于不同机器
(4)路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行
修改,而转发功能则可以针对每个下一级配置不同的过滤和映射
(5)并行处理体系,以源数据库的事务为单位同步,TCP/IP协议传输,断电续传,备机可读写,备机可以在主机故障接管,
(6)可以支持一对一,一对多,多对一,多对多,级联同步
二、web端
需要启动三个服务:
(1)bin目录下把web启动:
DmServiceHSDB start
(2)dmhs/web/bin下启动tomcat:
./DmhsWebService start
(3)dmhs/hs_agent目录下启动:
./DmhsAgentServiceHsAgent start
三、搭建步骤
1.准备两台虚拟机,都安装上达梦数据库软件(DM8)
初始化两个数据库,源端数据库IP192.168.106.128:5240
目的端数据库IP:192.168.106.129:5240
./dminit path=/home/dmdba/dmdbms/data db_name=src_hs port_num=5240
前台正常启停数据库一次
./dmserver /home/dmdba/dmdbms/data/src_hs/dm.ini
2.开启归档和逻辑日志
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
dm.ini 配置参数中“FAST_COMMIT”必须为 0
3.添加归档配置文件dmarch.ini
源端:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/home/dmdba/dmdbms/data/src_hs/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT =2048
目的端:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =/home/dmdba/dmdbms/data/dest_hs/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT =2048
4.重启 DM8 数据库,使配置参数生效。
./dmserver /home/dmdba/dmdbms/data/src_hs/dm.ini
./dmserver /home/dmdba/dmdbms/data/src_hs/dm.ini
5验证配置的正确性
(1)登录disql
./disql SYSDBA/SYSDBA:5240
(2)检查归档配置的正确性
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL'
AND ARCH_IS_VALID='Y';
(3)检查逻辑日志配置的正确性
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
(4)检查在线日志,
SELECT PATH FROM SYS.V$RLOGFILE;
(5)检查 FAST_COMMIT 参数是否为 0
select para_value from v$dm_ini where para_name = 'FAST_COMMIT';
6.如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS 安装目录下 scripts 子目录中“ddl_sql_dm7.sql”。注意创建时需要使用 SYSDBA 用户
cd /opt/dmhs/scripts/
`/opt/dmhs/scripts/ddl_sql_dm7.sql
执行成功后显示:
11条语句执行成功
7.在源端192.168.106.128机器上dmhs安装路径下编写dmhs.hs
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</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>5240</db_port>
<parse_thr>1</parse_thr>
<ddl_mask>op:obj</ddl_mask> <!--DDL配置项-->
<arch><!--归档清理配置项-->
<clear_interval>600</clear_interval>
<clear_flag>0</clear_flag>
<bak_dir>/dmarch/arch_bak</bak_dir>
</arch>
<send><!-- 发送模块配置-->
<ip>192.168.106.129</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>
<filter><!--过滤配置项-->
<enable><!-- 白名单,所有允许同步的表 -->
<item>SYSDBA.*</item>
</enable>
</filter>
<map><!--映射配置项-->
</map>
</send>
</cpt>
</dmhs>
8.在目的端192.168.106.129编写dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<ckpt_interval>60</ckpt_interval>
<siteid>2</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>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5240</db_port>
<db_name></db_name>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
9.开启源端服务
./dmhs_serverd start --此处为后台启动方式
10.开启目的端 DMHS 服务
./dmhs_serverd start
11.源端和目的端同步登录到控制台
./dmhs_console
connect
12.初始数据装载
此时需要stop cpt,start exec
copy 0 "sch.name='SYSDBA'" dict|create|insert
13.开启同步:
源端:start cpt
目的端:start exec
注意:创建一张DMHS的表,无法同步