三节点 DMHS 级联同步搭建

一、环境配置
完成三节点数据库部署并初始化,配置参数如下:

|--------|--------------------|--------------------|--------------------|
| 节点 | 192.168.2.132 | 192.168.2.133 | 192.168.2.130 |
| 数据库版本 | DM8 | DM8 | DM8 |
| 实例名 | DM1 | DM2 | DM3 |
| 端口号 | 5236 | 5236 | 5236 |
| 数据文件路径 | /home/dmdba/dmdata | /home/dmdba/dmdata | /home/dmdba/dmdata |

完成三节点 dmhs 部署,配置参数如下:

|------|------------------|------------------|------------------|
| 节点 | 192.168.2.132 | 192.168.2.133 | 192.168.2.130 |
| 安装路径 | /home/dmdba/dmhs | /home/dmdba/dmhs | /home/dmdba/dmhs |

按照标准安装步骤完成三台服务器的数据库和 dmhs 安装
二、部署 dmhs
由于之前已经搭建过节点一到节点二的 hs 同步链路,因此只需要把节点二
上的 bin 文件拷到相同目录并修改名字,不用再重新安装 dmhs ,节点三按标准
安装步骤安装 dmhs

后续的 dmhs.hs 配置文件和注册服务脚本就放在新的 bin3 目录下
三、 dmhs 配置
由于之前已经搭建了节点一到节点二的 hs 同步,搭建级联同步只需要再节
点二到节点三搭建一条同步链路,修改节点一到节点二的同步链路配置文件 level 为 65535

  1. 节点一

    <?xml version="1.0" encoding="utf-8"?>
    <dmhs>
    <base>
    <lang>en</lang>
    <mgr_port>5345</mgr_port> <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>
    <db_ssl_path></db_ssl_path>
    <db_ssl_pwd></db_ssl_pwd>
    <parse_thr>1</parse_thr>
    <ddl_mask>op:obj</ddl_mask> <!--DDL 配置项 -->
    <arch><!-- 归档清理配置项 -->
    <clear_interval>600</clear_interval>
    <clear_flag>0</clear_flag>
    </arch>
    <send><!-- 发送模块配置 -->
    <ip>192.168.2.133</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>
    <net_turns>0</net_turns>
    <filter><!-- 过滤配置项 -->
    <enable><!-- 白名单,所有允许同步的表 -->
    <item>SYSDBA.*</item>
    </enable> </filter>
    <map><!-- 映射配置项 -->
    <item>SYSDBA.*==SYSDBA.*</item>
    </map>
    </send>
    </cpt>
    </dmhs>
  2. 节点二(既要配置 cpt 模块,也要配置 exec 模块)
    1 )节点一到节点二的 exec 模块
    修改 level 为 65535 , siteid 为 2

    <?xml version="1.0" encoding="utf-8"?> <dmhs>
    <base>
    <lang>en</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>
    <level>65535</level>
    <db_type>dm8</db_type>
    <db_server>192.168.2.133</db_server>
    <db_user>SYSDBA</db_user>
    <db_pwd>SYSDBA</db_pwd>
    <driver>DM8 ODBC DRIVER</driver>
    <db_port>5236</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>
    2 )节点二到节点三的 cpt 模块
    相比节点一到节点二的 cpt 模块,节点二到节点三的模块配置文件需要修改端口 和 ip ,其他可以不变

    <?xml version="1.0" encoding="utf-8"?>
    <dmhs>
    <base>
    <lang>en</lang>
    <mgr_port>5347</mgr_port>
    <ckpt_interval>60</ckpt_interval>
    <siteid>3</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>
    <db_ssl_path></db_ssl_path>
    <db_ssl_pwd></db_ssl_pwd>
    <parse_thr>1</parse_thr>
    <ddl_mask>op:obj</ddl_mask> <!--DDL 配置项 -->
    <arch><!-- 归档清理配置项 -->
    <clear_interval>600</clear_interval>
    <clear_flag>0</clear_flag>
    </arch>
    <send><!-- 发送模块配置 -->
    <ip>192.168.2.130</ip>
    <mgr_port>5347</mgr_port>
    <data_port>5348</data_port>
    <trigger>1</trigger><!-- 是否忽略触发器,默认为 0 ,限定值 0,1 -->
    <constraint>1</constraint><!-- 是否忽略约束,默认为 0 ,限定值 0,1 -->
    <identity>1</identity>
    <net_turns>0</net_turns>
    <filter><!-- 过滤配置项 -->
    <enable><!-- 白名单,所有允许同步的表 -->
    <item>SYSDBA.*</item>
    </enable>
    </filter> <map><!-- 映射配置项 -->
    <item>SYSDBA.*==SYSDBA.*</item>
    </map>
    </send>
    </cpt>
    </dmhs>
  3. 节点三
    端口和节点二上的 cpt 模块保持一致,并且也要配置 <level>65535</level>

    <?xml version="1.0" encoding="utf-8"?>
    <dmhs>
    <base>
    <lang>en</lang> <mgr_port>5347</mgr_port>
    <ckpt_interval>60</ckpt_interval>
    <siteid>4</siteid>
    <version>2.0</version>
    </base>
    <exec>
    <recv>
    <data_port>5348</data_port>
    </recv>
    <level>65535</level>
    <db_type>dm8</db_type>
    <db_server>192.168.2.130</db_server>
    <db_user>SYSDBA</db_user>
    <db_pwd>SYSDBA</db_pwd>
    <driver>DM8 ODBC DRIVER</driver>
    <db_port>5236</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>
    四、启动服务
    将新搭建的节点二到节点三的同步链路注册服务并启动

    其中节点二应该有两个 hs 服务进程

    五、同步验证
  4. 节点二到节点三同步验证

    装载源数据后在节点三查询

    可以查到已同步的数据
  5. 节点一到节点三的级联同步验证
    节点一新建表 T4

    节点二验证同步

    节点三验证同步

    六、总结
    在搭建三节点级联同步时,需要关注端口与 IP 的准确配置。首先,在节点
    一和节点二之间成功建立了同步链路,确保数据能够实时传输。随后,在节点二
    上配置了与节点三相同的 data_port 和 mgr_port ,并设置 level 为 65535 。并且各
    节点模块的 siteid 不能相同,如果重复,会造成链路中数据同步的混乱。
    达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
相关推荐
银发控、1 天前
MySQL联合索引
数据库·mysql
予枫的编程笔记1 天前
【MySQL修炼篇】从踩坑到精通:事务隔离级别的3大异常(脏读/幻读/不可重复读)解决方案
数据库·mysql·后端开发·数据库事务·事务隔离级别·rr级别·脏读幻读不可重复读
一起养小猫1 天前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
世界尽头与你1 天前
(修复方案)CVE-2023-22047: Oracle PeopleSoft Enterprise PeopleTools 未授权访问漏洞
数据库·安全·oracle·渗透测试
韩立学长1 天前
【开题答辩实录分享】以《智能大学宿舍管理系统的设计与实现》为例进行选题答辩实录分享
数据库·spring boot·后端
Henry Zhu1231 天前
数据库(五):反规范化
数据库
Mr_Xuhhh1 天前
MySQL函数详解:日期、字符串、数学及其他常用函数
java·数据库·sql
he___H1 天前
Redis高级数据类型
数据库·redis·缓存
霖霖总总1 天前
[小技巧60]深入解析 MySQL Online DDL:MySQL Online DDL、pt-osc 与 gh-ost 机制与最佳实践
数据库·mysql
爱学习的阿磊1 天前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python