目录

DMHS介绍

DMHS搭建

DMHS安装配置

常见错误


DMHS介绍

支持异构环境的高性能、高可靠、高可扩展数据库实时同步复制系统

支持一对一、一对多广播型、多对一聚合型、多对多以及级联复制等多种数据复制形式

总体架构:单进程多线程架构(dmhs_server)

源端主要线程:日志读、日志分析、日志发送、监听、调度管理

目标端主要线程:日志接收、日志执行、监听、调度管理

扩展功能模块:guard进程守护、stat监控统计、对比工具、web管理平台

工作模式

捕获器 捕获器在数据实时同步系统中负责读取、解析源端数据库管理系统的归档日志,并发送解析后的数据。
执行器 执行器在数据实时同步系统中负责接收数据,并进行数据映射及事务的入库(目标端数据库)执行。
路由器 路由器适用于捕获器和执行器被网关隔断的环境,捕获器和执行器无法通过NET实现网络直连,需要经过第三台机器中转的情况。
转发器 捕获器和执行器之间存在物理隔离网闸,无法通过网络直连需要通过文件中转的情况捕获器(cpt)转发器 (transfer) 路由器 (route) 执行器 (exec)

DMHS搭建

作为源端的dmhs必须部署在源端数据库所在的机器上(读取归档的需求);

作为目的端的dmhs可以不与目的端数据库部署在同一机器上,但是前提要求是dmhs所在机 器上必须有能够连接目的端数据库的对应的odbc工具。

环境准备:

两节点间需要通信,测试时直接关闭了防火墙

两台虚拟机,Centos7 ,DM8源端:192.168.89.128 port_num=5236 db_name=hs_src目标端:192.168.89.129 port_num=5236 db_name=hs_dest

开启归档和逻辑日志

DMHS同步源端数据库需要开启归档模式&附加日志参数

ARCH_INI=1
DM6附加日志参数:ENABLE_LOGICAL_DML_LOG =1
DM7/DM8:
RLOG_APPEND_LOGIC=1
注意:FAST_COMMIT需要为0 批量提交事务的个数
oracle作为源端开启附加日志:
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
此次测试源端目标端均打开了归档和逻辑日志参数

归档配置:

源库:
[ARCHIVE_LOCAL1]
ARCH_TYPE=LOCAL
ARCH_DEST=/dmdata/hs_src/arch
ARCH_FILE_SIZE=128
ARCH_SPACE_LIMIT=1024
目标库:
[ARCHIVE_LOCAL1]
ARCH_TYPE=LOCAL
ARCH_DEST=/dmdata/hs_dest/arch
ARCH_FILE_SIZE=128
ARCH_SPACE_LIMIT=1024

启动数据库并检查配置:

测试连接
$ disql SYSDBA/SYSDBA
检查归档:SQL> select arch_name,arch_type,arch_dest,arch_is_valid from v$dm_arch_ini;
检查逻辑日志:SQL> select para_name,para_value,sess_value,file_value from v$dm_ini where para_name ='RLOG_APPEND_LOGIC';
检查FAST_COMMIT:SQL> select para_name,para_value,sess_value,file_value from v$dm_ini where para_name ='FAST_COMMIT';
检查在线日志:SQL> select * from sys.v$rlogfile;

DMHS安装配置

Linux环境:
命令行方式: ./dmhs_V3.1.3_dm7_rev90481_rh7_64_veri_20200507.bin -i
图形化方式: ./dmhs_V3.1.3_dm7_rev90481_rh7_64_veri_20200507.bin
作为源端的dmhs必须部署在源端数据库所在的机器上(读取归档的需求),作为目的端的dmhs可以不与目的端数据库部署在同一机器上,但是前提要求是dmhs所在机器上必须有能够连接目的端数据库的对应的odbc工具。
Windows环境:双击exe安装程序文件,根据安装向导提示完成安装过程
上传安装包:
设置权限
# chown -R dmdba:dinstall dmhs_V4.1.2_dm8_rev99922_rh6_64_veri_20210604.bin
# chmod +x dmhs_V4.1.2_dm8_rev99922_rh6_64_veri_20210604.bin
安装:$ dmhs_V4.1.2_dm8_rev99922_rh6_64_veri_20210604.bin -i

根据提示选择完整版、安装路径、统一部署、依赖库路径、内置数据库配置、内置数据库服务自动启动、远程控制服务自动启动、web服务自动启动、根据提示切换到root执行脚本

查看内置数据库版本:select name,instance_name,svr_version from v$instance;

环境变量:

dm8数据库安装路径:/dm8

dmhs安装路径:/home/dmdba/dmhs

[dmdba@dmtest1 log]$ echo $LD_LIBRARY_PATH

:/home/dmdba/dmhs/bin:/home/dmdba/dmhs/db/bin:/dm8/bin

  • dmhs配置
  • 配置DDL
  • 辅助表方式(源端数据库):

    如果要求 DDL 同步,那么需要创建 DDL 触发器和辅助表。创建的脚本参见 DMHS安装目录下 scripts 子目录中“ddl_sql_*.sql”。注意创建时需要使用 SYSDBA 用户。(使用管理工具创建不会报错)

  • 执行脚本:`/home/dmdba/dmhs/scripts/ddl_sql_dm8.sql
    查询创建的对象:
    SQL> select owner,table_name from dba_tables where owner='SYSDBA'
    and table_name like 'DMHS%' and status='VALID';
    SQL> select owner,trigger_name from dba_triggers where owner='SYSDBA'and trigger_name like 'DMHS%' and status='Y';
    

    捕获器cpt&执行器exec

捕获器:
DMHS配置需要设置管理端口号(mgr_port)和数据端口号(data_port),需要提供两个端口号,并确保可以使用。
在配置之前需要明确连接源端数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表 的权限。
确定是否有DDL同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且 需要确定对象的操作如创建、删除、修改等。根据此同步需求设置ddl_mask参数值。
确定源端数据库的归档日志是否需要DMHS进行处理如删除、保留或转移。依据此需求设置clear_flag 参数值。
确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成filter及map 元素项的参数值设置。执行器:
准备执行器管理端口号(mgr_port)和数据端口号(data_port),需要提供两个端口号,并确保可以使用。
执行器中连接目标数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。
在软件安装服务器上(源端):
配置说明:
添加列映射规则:
<map><!-- 列映射规则--><!-- 模式名.表名==模式名.表名--><tableitem><tablename>源表名</tablename><type>过滤类型</type><colitem>映射规则</colitem>
</tableitem>
</map>
需要DDL同步的配置文件:
在cpt模块添加配置:
<ddl_mask>op:obj</ddl_mask> <!--DDL 配置项-->
在send发送模块添加配置:
<trigger>1</trigger><!-- 是否忽略触发器,默认为 0,限定值 0,1 -->
<constraint>1</constraint><!-- 是否忽略约束,默认为 0,限定值 0,1 -->
<identity>1</identity>
<net_turns>0</net_turns>siteid 全局唯一,即 DMHS 同步系统涉及的所有节点的 siteid 必须全局唯一,不允 许有重复值
DDL 配置项,如果不需要 DDL 同步,那么就配置为空,即, 相应地 DMHS DDL 触发器和辅助表也不需要创建。
归档清理配置项,clear_flag 为 1 表示清除,即 DMHS 将同步完成的归档文件删除; 为 2,表示将同步完成的归档移到 bak_dir 目录下;为 0,表示不作任何操作。
过滤配置项,本示例配置了白名单,即 enable,也可以配置黑名单,详见 DMHS 用户手册。其过滤的规则是:先判断白名单,然后判断黑名单。如果存在重叠的情况,那么 也是会被过滤的。
映射配置项,表示存在不同模式之间的表同步,例如本示例中源端的 SYSDBA 模 式下的表映射成目的端的 DMHS 模式下同名的表。

$vim /home/dmdba/dmhs/bin/dmhs.hs

源端:

<?xml version="1.0" encoding="GB2312" ?>
<dmhs><base><lang>ch</lang><mgr_port>5345</mgr_port><chk_interval>3</chk_interval><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_name></db_name><idle_time>10</idle_time><parse_thr>1</parse_thr><ddl_mask>op:obj</ddl_mask> <!--DDL 配置项--><arch><clear_interval>60</clear_interval><clear_flag>1</clear_flag><bak_dir></bak_dir></arch><send><ip>192.168.89.129</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><disable> </disable><!-- 黑名单 --></filter><map><!-- 映射规则--><!-- 模式名.表名==模式名.表名--><item>SYSDBA.*==SYSDBA.*</item></map></send></cpt>

目的端:

<?xml version="1.0" encoding="GB2312"?>
<dmhs><base><siteid>2</siteid><mgr_port>5345</mgr_port><chk_interval>3</chk_interval><ckpt_interval>60</ckpt_interval><lang>ch</lang><version>2.0</version></base><exec><recv><mgr_port>5345</mgr_port><data_port>5346</data_port></recv><db_type>DM8</db_type><db_server>127.0.0.1</db_server><db_port>5236</db_port><db_user>SYSDBA</db_user><db_pwd>SYSDBA</db_pwd><recv_caches>8</recv_caches><exec_thr>4</exec_thr><exec_sql>1024</exec_sql><exec_trx> 5000 </exec_trx><exec_rows>1000</exec_rows></exec>
</dmhs>

启动dmhs:

源端:

目标端:

新开窗口:

源端目的端执行dmhs_console:

目标端:

cd /home/dmdba/dmhs/bin

./dmhs_console

DMHS> connect 192.168.89.129:5345

源端:

cd /home/dmdba/dmhs/bin

./dmhs_console

DMHS> connect 192.168.89.128:5345

目标端执行DMHS> start exec

源端执行:DMHS> copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX

源端开启同步:

DMHS> start

创建服务(源端&目标端):

cd /home/dmdba/dmhs/scripts/root/

#  ./dmhs_service_installer.sh -t dmhs_server -d /home/dmdba/dmhs/bin/ -p hs -x /home/dmdba/dmhs/bin/dmhs.hs

服务方式启动:

cd /home/dmdba/dmhs/bin

./DmhsServicedmhcpt start

常见错误

1、MGR[ERROR]:库文件libdmhs_exec.so未找到,出错:0

ldd找不到libdmhs_exec.so
[dmdba@ dmtest2 bin]$ cd /home/dmdba/dmhs/bin
[dmdba@dmtest2 bin]$ ldd libdmhs_exec.solinux-vdso.so.1 =>  (0x00007ffc429f4000)libc.so.6 => /lib64/libc.so.6 (0x00007ffb81220000)libm.so.6 => /lib64/libm.so.6 (0x00007ffb80f1e000)librt.so.1 => /lib64/librt.so.1 (0x00007ffb80d16000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffb80afa000)libdl.so.2 => /lib64/libdl.so.2 (0x00007ffb808f6000)libdmhs_pub.so => ./libdmhs_pub.so (0x00007ffb805ca000)libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007ffb8006f000)libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00007ffb7fe5a000)libdmhs_cvt.so => ./libdmhs_cvt.so (0x00007ffb7fbd1000)libdodbc.so => /dm8/bin/libdodbc.so (0x00007ffb7f9a5000)/lib64/ld-linux-x86-64.so.2 (0x00007ffb8199d000)libdmhs_exp.so => ./libdmhs_exp.so (0x00007ffb7f5d0000)libdmhs_xml.so => ./libdmhs_xml.so (0x00007ffb7f3c1000)libdmoci.so => not found    <-------------此处显示not foundlibdmdpi.so => /dm8/bin/libdmdpi.so (0x00007ffb7e753000)libdmfldr.so => /dm8/bin/libdmfldr.so (0x00007ffb7db23000)libdmelog.so => /dm8/bin/libdmelog.so (0x00007ffb7d91c000)libdmutl.so => /dm8/bin/libdmutl.so (0x00007ffb7d70a000)libdmclientlex.so => /dm8/bin/libdmclientlex.so (0x00007ffb7d4d7000)libdmos.so => /dm8/bin/libdmos.so (0x00007ffb7d2ab000)libdmcvt.so => /dm8/bin/libdmcvt.so (0x00007ffb7cbcc000)libdmstrt.so => /dm8/bin/libdmstrt.so (0x00007ffb7c9b8000)libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ffb7c6b1000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ffb7c49b000)libdmmem.so => /dm8/bin/libdmmem.so (0x00007ffb7c28e000)libdmcalc.so => /dm8/bin/libdmcalc.so (0x00007ffb7c009000)

解决办法:

[dmdba@dmtest2 bin]$ cd /home/dmdba/dmhs/bin
[dmdba@ dmtest 2 bin]$ find -name libdmoci.so
./stat/libdmoci.so
[dmdba@dmtest2 bin]$ echo $LD_LIBRARY_PATH
:/home/dmdba/dmhs/bin:/dm8/bin
[dmdba@dmtest2 stat]$ cd /home/dmdba/dmhs/bin/stat/
./stat/libdmoci.so
[dmdba@dmtest2 stat]$ cp libdmoci.so /home/dmdba/dmhs/bin/
[dmdba@dmtest2 bin]$ ldd libdmhs_exec.solinux-vdso.so.1 =>  (0x00007ffc9a1f7000)libc.so.6 => /lib64/libc.so.6 (0x00007f08e62c2000)libm.so.6 => /lib64/libm.so.6 (0x00007f08e5fc0000)librt.so.1 => /lib64/librt.so.1 (0x00007f08e5db8000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f08e5b9c000)libdl.so.2 => /lib64/libdl.so.2 (0x00007f08e5998000)libdmhs_pub.so => ./libdmhs_pub.so (0x00007f08e566c000)libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f08e5111000)libdmhs_dm_obj.so => ./libdmhs_dm_obj.so (0x00007f08e4efc000)libdmhs_cvt.so => ./libdmhs_cvt.so (0x00007f08e4c73000)libdodbc.so => /dm8/bin/libdodbc.so (0x00007f08e4a47000)/lib64/ld-linux-x86-64.so.2 (0x00007f08e6a3f000)libdmhs_exp.so => ./libdmhs_exp.so (0x00007f08e4672000)libdmhs_xml.so => ./libdmhs_xml.so (0x00007f08e4463000)libdmoci.so => ./libdmoci.so (0x00007f08e39f4000)  <---- 此处已有内容libdmdpi.so => /dm8/bin/libdmdpi.so (0x00007f08e2d86000)libdmfldr.so => /dm8/bin/libdmfldr.so (0x00007f08e2156000)libdmelog.so => /dm8/bin/libdmelog.so (0x00007f08e1f4f000)libdmutl.so => /dm8/bin/libdmutl.so (0x00007f08e1d3d000)libdmclientlex.so => /dm8/bin/libdmclientlex.so (0x00007f08e1b0a000)libdmos.so => /dm8/bin/libdmos.so (0x00007f08e18de000)libdmcvt.so => /dm8/bin/libdmcvt.so (0x00007f08e11ff000)libdmstrt.so => /dm8/bin/libdmstrt.so (0x00007f08e0feb000)libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f08e0ce4000)libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f08e0ace000)libdmmem.so => /dm8/bin/libdmmem.so (0x00007f08e08c1000)libdmcalc.so => /dm8/bin/libdmcalc.so (0x00007f08e063c000)

2、

源端copy报错:

MGR[ERROR]: 库文件 libcpt_dm8.so 未找到, 出错: 0

环境变量添加:

/home/dmdba/dmhs/db/bin

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心 (dameng.com)

dmhs之dm8 to dm8相关推荐

  1. DMHS DM8到Oracle12c PDB双向同步(大小不敏感+落地文件转发)

    文章目录 前言 架构思路 数据库配置 ODBC配置 DMHS配置 配置dmhs_trans_ora.hs 配置dmhs_trans_dm8.hs 配置dmhs_bi_ora.hs 配置dmhs_bi_ ...

  2. dmhs oracle to dm8

    目录 环境准备 源端配置 数据库配置 安装oracle odbc包(需要安装gcc-c++) oracle用户下安装dmhs: 目标端DM8配置 配置DMHS 源端oracle dmhs.hs 目标端 ...

  3. DMHS DM8到MySQL双向同步(大小写敏感+非落地)

    文章目录 前言 环境信息 硬件信息 软件信息 一些限制 MySQL字段类型限制 MySQL操作类型限制 DMHS限制 前置准备-DM8 软件安装(图形) 前置准备-MySQL侧 软件安装(非图形) 双 ...

  4. DMHSOracle→DM8

    目录 1 安装工作 1.1 源端 1.1.1 安装Oracle 1.1.2 安装Oracle版本的DMHS 1.2 目的端 1.2.1 安装DM8 1.2.2 安装DM8版本的DMHS 2 系统配置 ...

  5. 达梦数据库DM8 DCA认证学习笔记

    远程访问数据库需要关闭防火墙 [root@localhost ~]# systemctl status firewalld [root@localhost ~]# systemctl stop fir ...

  6. 达梦dm8可视化工具_DM8(达梦8)数据库安装和使用

    达梦8(DM8)数据库入门及使用 to 达梦大学 刘秀君原创,抄袭必究 目录 1     介绍 武汉达梦数据库有限公司成立于2000年,为中国电子信息产业集团(CEC)旗下基础软件企业,专业从事数据库 ...

  7. DM8数据库入门学习总结

    达梦数据库入门学习总结 操作环境 VMware Workstation 15.5 Pro NeoKylin Linux Advanced Server V7 达梦数据库 DM8 SecureCRT(可 ...

  8. 达梦数据库——DM8安装操作及体系架构介绍

    文章目录 一.数据库行业的发展趋势 二.国产数据库的现状 1.自主研发 三.达梦公司的介绍和达梦产品 1.达梦公司的由来 2.达梦公司的产品线 四.DM8的安装及实例的管理 1.软件信息收集 2.硬件 ...

  9. 达梦数据库DCA培训笔记(基于dm8)

    1. 数据库安装 1.1 安装规划 1.1.1 规划安装用户和用户组 达梦数据库安装不推荐使用root用户,规划使用单独的用户安装. #创建分组 groupadd dinstall #创建用户 use ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组缺口箱图(notch boxplot)实战
  2. 砥砺前行,比特币现金周年国际峰会正式召开
  3. android studio撤销按钮,Android Studio无法撤消(Android Studio Can't Undo)
  4. oracle 11g数据库启动错误总结
  5. Atitit 图像扫描器---基于扫描线
  6. MySQL之如何删除重复数据只保留一条
  7. js 把线性的数据结构改成树形结构
  8. 如何使用分析模型 — 1. 关联图,从乱麻中里出头绪
  9. Jlink接口引脚定义
  10. pythonobject转int_python – Pandas:将dtype’object’转换为int
  11. 微信第三方平台对接小程序发版
  12. 那些年,被 3.15 点名的科技公司,你们还好吗?
  13. 工作中如果一直被领导忽略,你会怎么办?
  14. win7系统如何添加计算机,教你win7系统电脑添加邮箱怎么添加
  15. Google基础设施架构的安全设计
  16. BAT等公司高薪招聘Android开发面试题目集锦
  17. MTK keypad调试,扩张键盘IC AW9523
  18. 【java初学】static关键字和接口
  19. Java中的除法结果与除数被除数的类型有关
  20. 离散傅里叶变换的算法实现

热门文章

  1. 在windows里用flashfxp连接虚拟机ubuntu中ftp服务器vsftpd,连接被拒的问题
  2. 软件工程之工程网络例题详解
  3. 世界500强面试题----数学能力
  4. Java国际化ResourceBundle详解
  5. 葵花宝典 十八 内置对象
  6. 【数据挖掘】聚类 Cluster 矩阵转换 数据矩阵 - 相似度矩阵 ( 二元变量简介 | 二元变量可能性表 | 对称二元变量 | 简单匹配系数 | 非对称二元变量 | Jaccard 系数 )
  7. NP完全问题与近似算法:贪婪策略|Python实现
  8. Opencv学习笔记 图像分割三(ImageJ 分水岭)
  9. C语言常用库函数总结
  10. git status的用法