dmhs之dm8 to dm8

news/2024/11/28 9:24:13/

目录

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)


http://www.ppmy.cn/news/155714.html

相关文章

数据库并发控制技术

数据库是一个共享资源&#xff0c;可以提供多个用户使用。这些用户程序可以一个一个地串行执行&#xff0c;每个时刻只有一个用户程序运行&#xff0c;执行对数据库的存取&#xff0c;其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个用户程序涉及大量…

odbc编程指南

DM4ODBC编程指南 本章结合DM4数据库的特点&#xff0c;比较全面 系统的介绍ODBC的基本概念以及DM4 ODBC DRIVER的使用方法&#xff0c;以便用户更好地使用DM4 ODBC编写应用程序。 ODBC提供给你访问不同类型的数据库的途径。结构化查询语言SQL是一种用来访问数据库的语言。通…

国产数据库的领头羊------武汉华工达梦数据库DM4

简介现代社会的发展&#xff0c;离不开信息技术。数据库管理系统&#xff08; DBMS &#xff09;是信息管理的基础 , 对任何单位、企业乃至部门的信息系统建设都是至关重要的。 DM4 是武汉华工达梦数据库有限公司最新推出的高性能数据库产品。它具有开放的、可扩展的体系结构&a…

创维酷开系统与鸿蒙系统,在买电视时,创维、TCL、三星、LG、小米和酷开应该如何选择?...

目前选择智能电视主要考虑智能电视的做工、用料情况&#xff0c;以及画质、音质、系统流畅度、视频解码能力、拓展能力等直接关系到用户体验的因素。由于智能电视价格竞争异常激烈&#xff0c;所以很多电视厂商为了压低成本&#xff0c;放弃了对于质量和品质的坚守&#xff0c;…

韩国电视企业依靠技术创新取得竞争优势,TCL出货量下滑

市调机构WitsView公布的三季度全球电视出货量数据显示&#xff0c;主推QLED电视的三星和主推OLED电视的LG均取得出货量的增长&#xff0c;而去年曾超越LG的TCL出货量出现下滑&#xff0c;让LG重夺全球电视市场份额第二名。 WitsView的数据显示&#xff0c;三季度全球电视市场份…

三星电视出货量猛增,老大地位稳固,TCL猛追LG

市调机构TrendForce公布三季度全球电视市场的数据显示&#xff0c;三星、TCL的出货量猛增&#xff0c;由此三星巩固了全球电视市场老大的地位&#xff0c;TCL的出货量直追LG并有望夺下全球电视市场老二位置。 TrendForce公布的数据显示&#xff0c;三季度全球电视出货量同比增长…

电视行业迎来市场“拐点” TCL曲面电视表现最为抢眼

十一刚过&#xff0c;刚刚经历了硝烟的电视厂商们正迫不及待盘点战果。 奥维云网&#xff08;AVC&#xff09;大数据此前预计&#xff0c;2015年十一期间15W39-15W41&#xff08;9.21-10.11&#xff09;彩电市场零售量将达487万台&#xff0c;同比下降3.5%&#xff0c;零售额将…

打造视听游戏新体验:TCL T7G真高刷电视II发布

随着科技的不断进步&#xff0c;人们对于电视的要求也水涨船高。那么对于追求视听游戏娱乐体验的用户来说&#xff0c;什么样的电视才是他们的理想伴侣&#xff1f; 大屏幕&#xff1f;超高清&#xff1f;高亮度&#xff1f;超画质&#xff1f;高刷新&#xff1f;……细细数来&…