达梦数据库-DMHS

简介

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

安装部署

DMHS 产品完整性检查

DMHS 主要用于数据库的数据实时同步系统,需要同步的源端数据库与目的端数据库(含操作系统及硬件信息)必须在获取版本前已明确。

  1. 如果源端数据库平台与目的端数据库平台完全一致(数据库类型、操作系统、硬件架构),则只需要一个 DMHS 产品版本,DMHS 版本不区分源端软件与目的端软件。
  2. 如果源端数据库平台与目的端数据库平台不一致,则需要两个对应的 DMHS 版本。

安装

源端和目的端都安装

./dmhs_V4.3.32_dm8_rev163952_rh6_64_20240710.bin -i

![[Pasted image 20240919171124.png]]

配置 DMHS

在图形化安装程序安装完成后,可以通过配置助手 HSCA,进行 DMHS 的配置。

还可以通过达梦数据实时同步管理平台 HSEM,进行 web 页面配置

源端和目的端配置odbc

/etc/odbcinst.ini 增加

[DM8 ODBC DRIVER]  #与odbc.ini中Driver一致
Description = ODBC DRIVER FOR DM8  #描述,无实际参数意义
Driver = /dm8/dmdbms/bin/libdodbc.so

/etc/odbc.ini 增加

[DM8]
Description = DM ODBC DSN  #描述,无实际参数意义
Driver = DM8 ODBC DRIVER  与odbcinst.ini中[]内名称一致
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236

数据库准备工作

数据库增加归档并开启逻辑日志
ALTER DATABASE MOUNT;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm8/dmhs/dmarch,TYPE=LOCAL';
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',1);
配置ddl辅助表和触发器

可以将/dm8/dmhs/hs/scripts/ddl_sql_dm8.sql中的内容,复制到manager工具中执行
执行后检查执行结果,共9张表4个触发器

配置源端和目的端

目的端

dmhs/bin目录下,新建dmhs.hs文件

<?xml version="1.0" encoding="GB2312"?>
<dmhs>

 <base>    <!-- 管理模块的基本配置 -->
    <lang>en</lang>    <!-- 语言选项,ch 为中文,en 为英文 -->
    <mgr_port>5345</mgr_port>    <!-- 管理端口号,默认为5345-->
    <ckpt_interval>60</ckpt_interval>    <!-- 检查点间隔,默认60 -->
    <siteid>2</siteid>    <!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
    <version>2.0</version>
</base>

<exec>    <!-- 执行模块的基本配置 -->
  <recv>
    <data_port>5346</data_port>    <!-- 当数据传递采用网络直连时,需要配置该参数,表明同步数据从该端口号获取。 -->
  </recv>
  <db_type>dm8</db_type>    <!-- 目标端数据库类型 -->
  <db_server>192.168.31.195</db_server>    <!-- 目标端数据库服务名或IP -->
  <db_user>SYSDBA</db_user>    <!-- 目标端数据库用户 -->
  <db_pwd>SYSDBA</db_pwd>    <!-- 用户的密码 -->
  <db_port>5236</db_port>    <!-- 目标端数据库端口 -->
  <db_name>dmhs2</db_name>    <!-- 默认数据库名,默认为空串(只针对dm6有用)-->
  <char_code>PG_GB18030</char_code>
  <exec_thr>4</exec_thr>    <!-- 执行线程个数,只有当 exec_mode 为 1 时才会生效!默认为1 -->
  <exec_sql>1024</exec_sql>    <!-- SQL 缓存大小,默认为 512M -->
  <exec_trx> 5000 </exec_trx>    <!-- 事务缓存个数,默认为 5000 -->
  <exec_rows>1000</exec_rows>    <!-- 批量绑定行数,默认为 250 -->
 </exec>
</dmhs>

启动目的端

./dmhs_server dmhs.hs
start exec
源端

新建dmhs.hs配置文件

<?xml version="1.0" encoding="GB2312"?>
<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>192.168.40.141</db_server>
 <db_user>SYSDBA</db_user>
 <db_pwd>dameng123</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.40.142</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>

启动源端

./dmhs_server dmhs.hs 
clear exec lsn #为了初始化日志的起始位置。
copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX #装载数据,配置同步掩码--一次就行
start cpt

初始装载

当源端业务不能停止,但是有需要将源端的表数据迁移到目的数据库,此时可以使用 DMHS 的初始装载。启动初始装载的时候源端捕获进程必须停止,只启动 DMHS 管理进程。停止 cpt 的命令为 Stop cpt
如果源端只部署了 cpt,没有 exec 也可以使用 stop 命令停止。

使用初始化装载命令 COPY 0 “sch.name=***” DICT|LSN|CREATE|INSERT|INDEX 多线程并发装载。

参考:
https://eco.dameng.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值