从零开始探路DMHS

        达梦数据实时同步软件(以下简称 DMHS)是支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统。该产品采用基于日志的结构化数据复制技术,不依赖主机上源数据库的触发器或者规则,对主机源数据库系统几乎无影响,能以极少的系统开销实现秒级数据实时同步复制。

                                                                                   ——达梦云适配中心 (dameng.com)

        对于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同步异常,请检查数据装载的过滤条件和装载条件,以及在装载前是否有数据冲突,检查触发器和辅助表情况。

更多参考内容请访问达梦云适配中心

https://eco.dameng.com/

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值