DMHS单向同步DM8-DM8

DMHS单向同步

DMHS是一款基于日志分析的数据库实时同步系统,DMHS的捕获功能(捕获器)是对源端的在线日志或归档日志进行解析并发送出去;DMHS的转发功能(转发器)是对基于本地文件、网络、FTP的数据进行过滤机应用层传输;DMHS的路由功能(路由器)是对跨网关的数据进行网络层传输;DMHS的执行功能(执行器)是通过ODBC接口连接目的端的数据库管理系统并接受数据。

1、DMHS工具特点

(1)捕获器将源端数据库日志读取解析后发送出去,它必须与源端数据库在同一台机器上

(2)即使源数据库中断了服务,也不会影响日志分析。

(3)执行器将接收到的数据入库执行,它可以与目标端数据库处于不同机器

(4)路由是 N 对 N 网络链路的映射,它不能对链路中的数据进行

修改,而转发功能则可以针对每个下一级配置不同的过滤和映射

(5)并行处理体系,以源数据库的事务为单位同步,TCP/IP协议传输,断电续传,备机可读写,备机可以在主机故障接管,

  1. 可以支持一对一,一对多,多对一,多对多,级联同步

2、DMHS安装配置过程

  环境准备:

DMHS支持的操作系统平台:Windows系列(包括XP、Win2003、Win7/8/10、WinServer2008等),Linux(Redhat、Ubuntu、CentOS、Kylin、Rocky等)、Aix、Solaris等。

内存要求:DMHS 需要的内存总量取决于执行的分析线程以及执行线程的并发数,最少需要 1G 内存。

磁盘需求:DMHS 安装文件占用 277M,包括了管理工具以及管理界面占用的空间,另外需要一些额外的空间存储 DMHS 运行的日志文件。

操作系统权限:在 Windows 安装时,安装和执行 DMHS 的用户必须是管理员身份;在 Linux 平台下安装,安装用户必须有权限读写 DMHS 安装目录,将涉及的数据库接口动态库添加到系统共享库环境变量中。

TCP/IP:配置系统支持 TCP/IP 服务(DMHS 安装的所有机器必须配置主机名或者 IP 地址)。DMHS需要使用以下 TCP/IP 端口:管理进程间通信的默认端口 5345;发送和执行子系统之间通信的默认端口 5346;用户可以自行定义这些端口。

1、打开dm.ini 添加如下参数

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1

dm.ini 配置参数中“FAST_COMMIT”必须为 0

2、添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /data/dmarch #归档目录

ARCH_FILE_SIZE = 128 #归档文件大小,单位 MB

ARCH_SPACE_LIMIT = 0 #空间大小限制,0 表示不限

3、重启数据库,使其配置生效

bin目录下:

restart

4、验证配置的正确性

SQL>SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE='LOCAL' AND ARCH_IS_VALID='Y';

SQL>SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';

SQL>SELECT PATH FROM SYS.V$RLOGFILE;

5、需要在源端和目的端分别安装dmhs软件。

1)      将安装包上传至服务器,并授予可执行权限

chmod 775 dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin -i

2)      运行安装程序(命令行安装)

./dmhs_V4.1.2_dm8_rev100195_rh6_64_veri_20210618_pack2.bin

  1. 输入key文件路径

  1. 选择安装的组件

  1. 选择安装的路径(默认路径为/opt/dmhs)

  1. 服务器配置

  1. 完成安装(此目录中查看安装的日志)

6DDL同步触发器配置

如果需要配置文件中配置DDL同步,那么需要创建DDL触发器和辅助表。创建时需要使用SYSDBA操作。具体操作步骤如下:

1)通过管理工具连接数据库

2)进入到dmhs如下目录中,找到ddl_sql_dm8.sql

cd /opt/dmhs/scripts/

把此脚本中的内容,在数据库管理工具中执行.

查创建的触发器和辅助表是否有效,检查辅助表的语句。

select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DMHS%' and status = 'VALID';

查询结果如下:

行号 OWNER TABLE_NAME

---------- ------ ---------------

1 SYSDBA DMHS_DDL_COL

2 SYSDBA DMHS_DDL_SQL

3 SYSDBA DMHS_DDL_CONS

4 SYSDBA DMHS_DDL_IDX

5 SYSDBA DMHS_DDL_RENAME

6 SYSDBA DMHS_DDL_SEQ

7 SYSDBA DMHS_DDL_PART

7 rows got

已用时间: 197.302(毫秒). 执行号:7.

如果存在以上的查询结果,表示DMHS辅助表创建有效。

检查触发器的语句:

查询结果如下:

行号 OWNER TRIGGER_NAME

---------- ------ -----------------------

1 SYSDBA DMHS_DDL_TRIGGER_AFTER

2 SYSDBA DMHS_DDL_TRIGGER_BEFORE

3 SYSDBA DMHS_DDL_TRIGGER_GRANT

4 SYSDBA DMHS_DDL_TRIGGER_REVOKE

已用时间: 12.147(毫秒). 执行号:16.

如果存在以上的查询结果,表示DMHS触发器创建有效。

7、配置dmhs.hs

dmhs.hs是DMHS默认的配置文件名,如果需要DDL同步,那么基本的配置示例如下:

源端:

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

<dmhs>

<base>

 <lang>ch</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.184.139</db_server><!-- 源端数据库IP -->

 <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.184.140</ip><!-- 目的端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.CITY</item>

 <item>SYSDBA.TEST</item>

 </enable>

 </filter>

 <map><!--映射配置项-->

 <item>SYSDBA.*==SYSDBA.*</item>

 </map>

 </send>

 </cpt>

</dmhs>

目的端:

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

<dmhs>

<base>

 <lang>ch</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>

 <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>

 <exec_thr>4</exec_thr>

<exec_sql>1024</exec_sql>

 <exec_trx> 5000 </exec_trx>

 <exec_rows>1000</exec_rows>

 </exec>

</dmhs>

8、开启目的端的DMHS服务

1)注册启动脚本(在root用户下)

./dmhs_service_installer.sh -t dmhs_server -a true -p HS_01 -x /home/dmdba/dmhs/bin/dmhs.hs -d /home/dmdba/dmhs/bin

2)启动脚本(切回dmdba用户下)

cd /opt/dmhs/bin

./DmhsServiceHS_01 start

9、开启源端的DMHS服务

  1. 注册启动脚本(在root用户下)

./dmhs_service_installer.sh -t dmhs_server -a true -p HS_02 -x /home/dmdba/dmhs/bin/dmhs.hs -d /home/dmdba/dmhs/bin

2)启动脚本(切回dmdba用户下)

cd /opt/dmhs/bin

./DmhsServiceHS_02 start

源端启动dmhs控制台,执行装载命令:

在初次搭建过程中,需要将源端数据加载到目的端,有两种操作方法。

如果需要保证目的端数据和源端数据完全一致,搭建时选择将源数据库停止对应用程序访问,并对源数据库进行物理备份,并在目的端数据库进行还原。还原操作需要放到启动dmhs_server之前。

此种情况下,源端装载,执行命令:

./dmhs_console

CSL[INFO]: DMHS控制台工具: V3.0.2.01-Build(2015.10.09)

DMHS >connect

CSL[UNKNOW]: 执行成功

DMHS >COPY 0 "SCH.NAME IS NOT NULL"  DICT|LSN

DMHS >clear exec lsn

DMHS >copy 0 "SCH.NAME='SYSDBA' AND TAB.NAME='TEST006'"  DICT|LSN|CREATE|INSERT|INDEX

如果目的端数据库里已存在该表先执行

copy 0 "SCH.NAME='SYSDBA' AND TAB.NAME='TEST006'" DELETE

DMHS >start cpt

这种装载方法,只会进行字典信息及LSN值的装载,启动同步后会从COPY时刻记录的LSN值开始进行数据同步。

至此,DMHS实时同步安装完成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值