前言:达梦数据实时同步软件 DMHS 是达梦公司推出的新一代支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。该产品基于成熟的关系数据模型和标准接口,跨越多种软硬件平台实现秒级数据实时同步。该产品可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发和多业务中心等业务领域。

一. DMHS基础概念
1.1 DMHS系统组成
DMHS 同步服务主要分为三大模块,分别是日志分析(CPT)、数据入库(EXEC)和消息发送(NET),这三个模块统一由管理模块(MGR)进行调度执行。
1.2 DMHS功能划分
为适应不同的应用场景,DMHS 提供的功能可以细分为捕获器功能、执行器功能、路由器功能、转发器功能。
二. 环境规划
| 名称 | IP地址 | 远程部署端口 | 管理端口 | 数据端口 | 安装路径 | 备注 |
|---|---|---|---|---|---|---|
| Node1 | 141.120.23.234 | 5456 | 5345 | 5346 | /opt/dmhs | 源库(DM8) |
| Node2 | 141.120.23.235 | 5456 | 5345 | 5346 | /opt/dmhs | 目标库(DM8) |
| Node3 | 141.120.23.236 | — | 8080 | — | /opt/dmhs | WEB管理(内置数据库DM7) |
备注:node1与node2节点已安装DM8数据库
三. 安装dmhs基础软件
在三个节点分别执行
[root@node1 xiaoke]# chown dmdba:dinstall dmhs_V3.1.3_dm8_rev90484_rh6_64_veri_20200513.bin
[root@node1 xiaoke]# chmod +x dmhs_V3.1.3_dm8_rev90484_rh6_64_veri_20200513.bin
[root@node1 xiaoke]# mkdir /opt/dmhs
[root@node1 xiaoke]# chown dmdba:dinstall /opt/dmhs/ -R
[root@node1 xiaoke]# su - dmdba
[dmdba@node1 etc]$ export LANG=“zh_CN.UTF-8”
[dmdba@node1 xiaoke]$ ./dmhs_V3.1.3_dm8_rev90484_rh6_64_veri_20200513.bin







备注:根据各节点IP填写相应地址。


四. WEB服务器管理平台配置
DMHS配置的几种方式:
1、在软件安装后,使用tool目录下的dmhs配置助手工具(dmhs_hsca)进行配置;
2、使用WEB管理平台进行配置;
3、直接手动编辑dmhs.hs配置文件。
备注:本文档采用远程WEB管理平台方式在Node3节点进行配置。
4.1 启动内置数据库服务
[root@node3 xiaoke]# find /opt/dmhs/ -name DmS*

[root@node3 ~]# /opt/dmhs/db/bin/DmServiceHSDB status
[root@node3 ~]# /opt/dmhs/db/bin/DmServiceHSDB start
[root@node3 bin]# ps -ef |grep dms
[dmdba@node3 opt]$ disql SYSDBA/SYSDBA:15236

4.2 执行脚本dmhs_manager
备注:建议在图形化工具manager执行
dmhs manager4.0部署说明:
需在该数据库中执行dmhs_manager.sql来创建元数据,dmhs_manager.sql在dmhs安装目录下面的scripts目录下面
start /opt/dmhs/scripts/veri_manager.sql
start /opt/dmhs/scripts/dmhs_manager.sql


4.3 启动tomcat服务
4.3.1 配置数据库连接
配置后台数据库的连接信息,在文件WEB-INF/config/connectPool.xml(manager.war中)配置,使用内置数据库则无需修改;
[root@node3 config]# cd /opt/dmhs/web/webapps/manager/WEB-INF/config

4.3.2 启动tomcat
启动tomcat,运行dmhs安装bin目录下面的startWebServer.sh脚本,win下是startWebServer.bat;
[root@node3 bin]# cd /opt/dmhs/web/bin

开启浏览器访问url(http://141.120.23.236:8080/manager),登录(admin/888888)

五. 数据库环境配置
5.1 源端node1节点配置
5.1.1 配置归档
[root@localhost data]# mkdir /dm8/arch
[root@localhost data]# chown dmdba:dinstall /dm8/arch -R
[dmdba@node1 bin]$ disql SYSDBA/SYSDBA
SQL> select ARCH_MODE from V$DATABASE;
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;

5.1.2 开启逻辑追加日志
sp_set_para_value(2,'RLOG_APPEND_LOGIC',1); -
sp_set_para_value(2,'RLOG_APPEND_SYSTAB_LOGIC',0);
--重启完成后,查询验证参数是否生效
select para_value from v$dm_ini where para_name in
('RLOG_APPEND_LOGIC','RLOG_APPEND_SYSTAB_LOGIC');
5.1.3 配置代理
[root@node1 hs_agent]# cd /opt/dmhs/hs_agent
[root@node1 hs_agent]# cat dmhs_agent.xml
修改配置如下:

[root@node1 hs_agent]# ./DmhsAgentServiceHsAgent status
[root@node1 hs_agent]# ./DmhsAgentServiceHsAgent start


5.1.4 创建辅助表
使用DM管理工具连接141.120.23.234,端口号5236,账号密码SYSDBA/密码。
备注:建议在图形化工具manager执行
start /opt/dmhs/scripts/ddl_sql_dm7.sql

5.2 目标端node2节点配置
5.2.1 配置归档
备注:也可以不配置归档,不影响DMHS同步。
[root@localhost data]# mkdir /dm8/arch
[root@localhost data]# chown dmdba:dinstall /dm8/arch -R
[dmdba@node2 bin]$ disql SYSDBA/SYSDBA
SQL> select ARCH_MODE from V$DATABASE;
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
5.2.2 配置代理
[root@node2 hs_agent]# cd /opt/dmhs/hs_agent
[root@node2 hs_agent]# cat dmhs_agent.xml

[root@node2 hs_agent]# ./DmhsAgentServiceHsAgent status
[root@node2 hs_agent]# ./DmhsAgentServiceHsAgent start

5.2.3 创建辅助表
使用DM管理工具连接141.120.23.235,端口号5236,账号密码SYSDBA/密码。
备注:建议在图形化工具manager执行
start /opt/dmhs/scripts/ddl_sql_dm7.sql
六. WEB平台添加DMHS实例
6.1 执行器配置
6.1.1 在目标端添加执行器


6.1.2 查看实例配置



[root@node2 hs_agent]# find /opt -name dmhs.hs
[root@node2 hs_agent]# cat /opt/dmhs/INST_HS/dameng_target/dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>dameng_target</name>
<ckpt_interval>60</ckpt_interval>
<siteid>3</siteid>
<version>2.0</version>
</base>
<exec>
<recv>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
</recv>
<enable>1</enable>
<name>exec</name>
<db_type>DM8</db_type>
<db_server>141.120.23.235</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
</exec>
</dmhs>
[root@node2 hs_agent]#

6.1.3 查看代理配置
[dmdba@node2 ~]$ cat /opt/dmhs/hs_agent/dmhs_agent.xml
[dmdba@node2 ~]$ cat /opt/dmhs/hs_agent/dmhs_agent.xml
<?xml version="1.0" encoding="GB2312"?>
<hs_agent>
<name>HsAgent</name>
<lang>ch</lang>
<server_ip>141.120.23.235</server_ip>
<lsn_port>5456</lsn_port>
<status_interval>3</status_interval>
<status_server>141.120.23.236</status_server>
<status_port>15236</status_port>
<status_user>SYSDBA</status_user>
<status_pwd>SYSDBA</status_pwd>
<dmhs_support>1</dmhs_support>
<veri_support>1</veri_support>
<hs_item>
<name>dameng_target</name>
<startup_flag>1</startup_flag>
<prog_dir>/opt/dmhs/INST_HS/dameng_target</prog_dir>
<conf_path>/opt/dmhs/INST_HS/dameng_target/dmhs.hs</conf_path>
<svr_name>DmhsServicedameng_target</svr_name>
<stat>
<startup_flag>1</startup_flag>
<prog_dir>/opt/dmhs/INST_STAT/dameng_target</prog_dir>
<conf_path>/opt/dmhs/INST_STAT/dameng_target/dmhs_stat.xml</conf_path>
<svr_name>DmhsStatServicedameng_target</svr_name>
</stat>
<server_ip>141.120.23.235</server_ip>
<mgr_port>5345</mgr_port>
</hs_item>
</hs_agent>
[dmdba@node2 ~]$

6.1.4 查看状态监控配置
[dmdba@node2 ~]$ cat /opt/dmhs/INST_STAT/dameng_target/dmhs_stat.xml
<?xml version="1.0" encoding="GB2312"?>
<dmhs_stat>
<base>
<lang>ch</lang>
</base>
<dmhs_conf>
<hs_xml_path>/opt/dmhs/INST_HS/dameng_target/dmhs.hs</hs_xml_path>
<server_ip>141.120.23.235</server_ip>
<mgr_port>5345</mgr_port>
<startup_flag>1</startup_flag>
</dmhs_conf>
<stat_conf>
<stat_module_alive>1</stat_module_alive>
<module_alive_interval>5</module_alive_interval>
<stat_statistic>1</stat_statistic>
<statistic_interval>5</statistic_interval>
<stat_thr_info>1</stat_thr_info>
<thr_info_interval>5</thr_info_interval>
<stat_lag_info>1</stat_lag_info>
<lag_info_interval>5</lag_info_interval>
<stat_errlog>1</stat_errlog>
<stat_machine>1</stat_machine>
<machine_interval>5</machine_interval>
</stat_conf>
<database>
<db_server>141.120.23.236</db_server>
<db_port>15236</db_port>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
</database>
</dmhs_stat>
[dmdba@node2 ~]$

6.2 捕获器配置
6.2.1 在源端添加捕获器


6.2.2 查看实例配置


[root@node1 hs_agent]# find /opt -name dmhs.hs
[root@node1 hs_agent]# cat /opt/dmhs/INST_HS/dameng_source/dmhs.hs
[root@node1 hs_agent]# cat /opt/dmhs/INST_HS/dameng_source/dmhs.hs
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>dameng_source</name>
<ckpt_interval>60</ckpt_interval>
<siteid>5</siteid>
<version>2.0</version>
</base>
<cpt>
<enable>1</enable>
<name>cpt</name>
<db_type>DM8</db_type>
<db_server>141.120.23.234</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<arch/>
<send>
<ip>141.120.23.235</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>*.*</item>
</enable>
</filter>
</send>
<jdbc from_password="SYSDBA" from_type="DM8" from_url="jdbc:dm://141.120.23.234:5236" from_user="SYSDBA" to_password="SYSDBA" to_type="DM8" to_url="jdbc:dm://141.120.23.235:5236" to_user="SYSDBA"/>
</cpt>
</dmhs>
[root@node1 hs_agent]#
6.2.3 查看代理配置
[root@node1 hs_agent]# cat /opt/dmhs/hs_agent/dmhs_agent.xml

6.2.4 查看状态监控配置
[root@node1 hs_agent]# cat /opt/dmhs/INST_STAT/dameng_source/dmhs_stat.xml

6.3 数据初始化

6.3.1 配置用户环境
[root@node2 ~]# cat ~/.bash_profile
export DMHS_HOME=/opt/dmhs
export LD_LIBRARY_PATH=/opt/dmhs/bin:/opt/dmhs/db/bin:$LD_LIBRARY_PATH
[root@node1 bin]# source ~/.bash_profile
6.3.2 启动dmhs_server
节点二:
[root@node2 ~]# cd /opt/dmhs/bin
[root@node2 bin]# ./dmhs_server /opt/dmhs/INST_HS/dameng_target/dmhs.hs
节点一:
[root@node1 ~]# cd /opt/dmhs/bin
[root@node1 bin]# ./dmhs_server /opt/dmhs/INST_HS/dameng_source/dmhs.hs
6.3.3 在目标端启动执行器
执行端运行 DMHS 软件工具 dmhs_console,连接执行端 DMHS 服务,控制台管理工具中执行如下 DMHS 命令:
[root@node2 bin]# cd /opt/dmhs/bin
[root@node2 bin]# ./dmhs_console
DMHS >connect 127.0.0.1:5345
DMHS >start exec

6.3.4 在源端启动捕获器
源端运行 DMHS 软件工具 dmhs_console,连接源端 DMHS 服务,设置日志捕获模块起始 LSN
[root@node1 ~]# cd /opt/dmhs/bin
[root@node1 bin]# ./dmhs_console
DMHS >connect 127.0.0.1:5345
DMHS >clear exec lsn

源端运行 DMHS 软件工具 dmhs_console,连接源端 DMHS 服务,装载源端字典信息及历史数据并启动日志捕获模块。
DMHS >copy 0 "SCH.NAME='SYSDBA'" CREATE|INSERT|DICT
DMHS >START CPT

七. 日志体系

iconv -f gbk -t utf-8 dmhs_202008.log > dmhs_2020081.log
7.1 DMHS代理进程
[root@node2 ~]# cd /opt/dmhs/hs_agent
[root@node2 hs_agent]# ./DmhsAgentServiceHsAgent start
对应日志
/opt/dmhs/hs_agent/log

7.2 DMHS状态监控进程
[root@node1 dameng_source]# cd /opt/dmhs/INST_STAT/dameng_source
[root@node1 dameng_source]# ./dmhs_stat dmhs_stat.xml
对应日志:
/opt/dmhs/INST_STAT/dameng_source/log

7.3 DMHS实例
[root@node2 bin]# dmhs_server /opt/dmhs/INST_HS/dameng_target/dmhs.hs
对应日志:
/opt/dmhs/bin/log

八. 数据库同步验证
8.1 DDL验证

8.2 DML验证





