从零开始探路DMHS"/>
从零开始探路DMHS
达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。
——达梦云适配中心 (dameng)
对于DMHS的安装部署,有官方文档《DMHS管理员手册》可供参考,但是限于篇幅仍有很多操作层面的内容需要用户注意避免“踩坑”。本文纯以小白视角介绍双节点单向同步的DMHS安装实录,对于官网及手册已介绍的内容尽量简明条列,重点记录了实操过程当中遇到的问题和解决方法,以期对后来人有所帮助,同时本文不可避免会有错漏,也欢迎读者留言指正。
0)本文涉及到的软件安装包:
dm8数据库安装包win10版本、centos7版本(应含oci接口库);
dmhs安装包win10版本、centos7版本;
JDK 8;
Tomcat9.0.50.
1)实验环境
本次实验的目标是将物理机上dm8的数据单向同步到虚拟机上的dm8中。其中物理机是win10 64位,ip为192.168.43.216,源数据库dm8版本为dm8_20210511_x86_win_64_ent_8.1.2.2,数据库端口5236,数据库中已有新建的用户表数据。在物理机之上我们使用VMware安装了虚拟机centos7.9,ip为192.168.216.129,目的端数据库版本dm8_20210513_x86_rh6_64_ent_8.1.2.2,数据库端口5236,数据库中仅有系统表而无用户数据。默认实验开始时源端数据库和目的端数据库已装好。
注意:1.实验中因数据连接需要,win10和centos上的防火墙均需要关掉。win10打开windows安全中心->防火墙和网络保护->专用网络->关闭。centos可使用root用户在终端使用命令systemctl diable firewalld关闭防火墙,使用systemctl status firewalld查看防火墙状态。
2.源端数据库应该打开归档模式及附加日志。
联机开启归档方法:
alter database mount;
--alter database add archivelog 'DEST = d:\arch,Type = local,FILE_SIZE = 1024, SPACE_limit = 2048';
alter database add archivelog 'DEST = /dm8/arch,Type = local,FILE_SIZE = 1024, SPACE_limit = 2048';
alter database archivelog;
alter database open;
打开附加日志需要设置dm.ini:RLOG_APPEND_LOGIC = 1
--查询归档配置
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL'AND ARCH_IS_VALID='Y';
--检查逻辑日志配置
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';
2)DMHS的安装
在源端(win10)和目的端(centos)均需安装DMHS。win10上双击exe即可开始安装向导;centos上安装命令行方式:
./ dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin -i
图形化方式:
./ dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin
注意:1.本次实验“安装类型”选择“完整版”,便于后续在web管理平台上管理HS实例;“是否初始化达梦数据实时同步系统”选择“统一部署”,
2.关于安装过程中出现的“依赖库路径”需要注意,此处针对的是源数据库或者目的数据库的连接而用到的依赖库。例如我的源数据库是安装在/dm8这个路径下,则我配置的依赖路径就是/dm8/bin:/usr/local/bin。可以看到,如果依赖库路径我配置了
/dm8/bin:/usr/local/bin:/home/dmdba/dmhs/db/bin
(其中/home/dmdba/dmhs/db是DMHS安装的内置元数据库的路径,元数据库这里是DM7。注意区分源数据库,目的数据库,元数据库),将引发模块加载卡住同时并无报错产生。
详情可以看我的博文:
一次DMHS依赖库引发的问题_lushanglou的博客-CSDN博客
3.选择安装路径时要注意,路径最后不要加 / ,如/home/dmdba/dmhs若写成/home/dmdba/dmhs/,将引起内置数据库初始化失败,同时环境变量中会多出/。
4.正常情况下DMHS只应在系统内安装一次,如果安装遇到问题反复安装卸载,应注意卸载DMHS的服务
sc delete DmServiceHSDB;
sc delete DmhsAgentServiceHsAgent;
sc delete DmhsWebService
同时检查清理环境变量。不管是安装dm8,dmhs,还是tomcat,均应考虑安装用户、权限、环境变量是否冲突。
3)Tomcat和JDK的安装
DMHS的web管理平台需要Tomcat服务,Tomcat版本需要与JDK版本匹配。本次实验我采用的是Java 8和Tomcat9.0.50。
Apache Tomcat® - Which Version Do I Want?
在前文安装DMHS后,在dmhs/web/webapps下的manager.war就是我们要使用的web管理平台的war包。
注意:1.如果tomcat和jdk版本不匹配,tomcat可能无法启动服务。可以先运行tomcat的bin目录下的startup脚本然后浏览器访问localhost:8080试一下看服务能否起来。可以使用经过验证的版本搭配比如Java 8+tomcat 9.0.50。
2.tomcat配置的端口号如果已被占用那么也无法启动服务,可以使用netstat -ano 及netstat -ano |findstr "端口号"命令查看端口占用情况。如果端口已被占用需要修改tomcat/conf/server.xml里面的配置。
3.在centos下,我们可以直接复制dmhs/web/webapps/manager.war到tomcat/webapps/manager.war,tomcat/webapps下,原来的manager文件夹可以使用mv命令重命名。然后重启tomcat服务,访问localhost:8080/manager就可以看到DMHS管理平台,默认用户名admin,默认密码888888。在windows下,war包不是自动加载的,我们可以直接复制manager文件夹到对应目录即可。
4)在web管理平台配置HS实例
DMHS的管理平台提供了丰富的功能,我们可以直接在web上添加或者删除实例。需要注意的是整体的拓扑结构。在本次实验中我们的目标是单向同步,因此我们在源端安装了DMHS,起了一个HsAgent和一个HS实例以及一个捕捉器:
而在目的端我们也安装了DMHS,起了一个HsAgent和一个HS实例以及一个执行器:
源端HS实例配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>cat1</name>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
<version>2.0</version>
</base>
<cpt>
<enable>1</enable>
<name>cpt</name>
<db_type>DM8</db_type>
<db_server>192.168.43.216</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
<ddl_mask>TABLE:CREATE:DROP:TRUNCATE:ALTER</ddl_mask>
<arch/>
<send>
<ip>192.168.216.129</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>*.*</item>
</enable>
</filter>
</send>
</cpt>
</dmhs>
目的端HS实例配置:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<mgr_port>5345</mgr_port>
<name>0713dog</name>
<ckpt_interval>60</ckpt_interval>
<siteid>2</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>192.168.216.129</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
</exec>
</dmhs>
注意:1.siteid即站点号,全局唯一不可重复
2.HS实例名也不可重复,否则会创建实例失败
3.要注意在web端添加HS实例后,该实例实际会位于INST_HS目录下,与初始的目录有所不同。启动对应实例或者使用console工具均应在新的目录下进行。
5)HS的启动
在本次实验中,DMHS的启动顺序应该是:
0.MGR启动。即在web平台上源端和目的端的HS实例启动而执行器或者捕捉器模块不启动。可以使用console工具进去connect连接管理器模块,state查看状态,stop exec或者stop cpt停止模块。
1.执行器启动 start exec
2.执行器和捕捉器均可执行日志起始位置初始化 set exec lsn 0
3.在源端初始化数据装载 COPY 0 "sch.name=***" DICT|LSN|CREATE|INSERT|INDEX.初始化数据装载语句根据自己需要修改。如果数据装载执行失败可以回到2重新初始化,修改数据装载语句再装载。
4.捕捉器启动 start cpt
5.检验:尝试在源端数据库插入数据并提交,然后在目的端数据库查询语句检查数据是否已经同步。
注意:1.在开始同步前目的端数据库的数据不应与源端数据冲突
2.在web平台上添加的实例专属文件夹在INST_HS下,如实例名为cat,则dmhs\INST_HS\cat\log下会有模块执行的log,通过log分析执行错误情况
3.模块加载失败应该检查依赖库
4.如果获取lsn失败,通常是没有执行初始化数据装载步骤。在重新做数据初始化装载之前可以先stop cpt->set exec lsn 0然后再执行数据初始化装载
5.数据初始化装载失败或者DDL同步异常,请检查数据装载的过滤条件和装载条件,以及在装载前是否有数据冲突,检查触发器和辅助表情况。
更多参考内容请访问达梦云适配中心
/
更多推荐
从零开始探路DMHS
发布评论