DHMS 搭建(达梦到达梦)

DMHS软件概述
​ DMHS全称是Heterogeneous database Synchronization for DM,即达梦异构数据库同步软件。DMHS是基于数据库日志,支持同构、异构数据库的实时同步软件,可以实现双业务中心架构。
​ DMHS软件功能非常丰富,支持多种架构场景,主流数据实时同步软件的相关功能DMHS都已实现并且根据实际业务需求丰富了更多功能。主流的数据实时同步软件主要有:Oracle GoldenGate、DSG RealSync、Quest Shareplex等。

搭建准备

准备两台虚拟机,都安装上dm8 /dm8),都安装dmhs软件(/dm8/dmhs),初始化两个数据库,源端数据库IP: 192.168.118.11:5236 目的端数据库IP:192.168.118.12:5236

开启归档和逻辑日志(两台都要配置)

1 设置归档标记和逻辑日志标记。打开 DM8服务器配置文件“dm.ini”,设置如下值:

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1

 2 添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”,示例内容如下:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm8/arch #归档目录

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

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

3 重启 DM8 数据库,使配置参数生效。

 4 验证配置的正确性

a) 检查归档配置的正确性,请执行以下 SQL 命令:

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

b) 检查逻辑日志配置的正确性,通过下面的查询:

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

 

 c) 检查在线日志,通过如下的查询:

SELECT PATH FROM SYS.V$RLOGFILE;

 

 d) 检查 FAST_COMMIT 参数是否为 0

select para_value from v$dm_ini where para_name = 'FAST_COMMIT';

开启DDL同步参数 (不建议开启
第一种:
首先查询数据库系统参数“RLOG_APPEND_SYSTAB_LOGIC”是否开启,该参数启用在日志中记录系统表逻辑操作功能。该参数默认取值为0,即不启用;设置为1时,启用该功能。
使用SQL查询该参数的值:

select * from v$dm_ini where para_name='RLOG_APPEND_SYSTAB_LOGIC';

调用系统过程,开启RLOG_APPEND_SYSTAB_LOGIC参数的值为1

SP_SET_PARA_VALUE(2,'RLOG_APPEND_SYSTAB_LOGIC',1);

开启DDL同步参数,后面还需要在DMHS配置文件中进行ddl_mask参数配置,用于设置DDL同步对象及操作。
第二种:
执行DDL同步脚本方式。在源端DM7数据库中以SYSDBA用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置ddl_mask参数选项以启用该功能。
同步脚本位于DMHS安装目录的scripts子目录下

配置 dmhs.hs

1 在源端机器上dmhs安装路径下编写dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>1</siteid>
</base>
<cpt>
<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>
<parse_thr>1</parse_thr>
<ddl_mask>TABLE:OPERATION</ddl_mask>
<arch>
<clear_interval>600</clear_interval>
<clear_flag>2</clear_flag>
<bak_dir>/dm8/arch/</bak_dir>
</arch>
<send>
<ip>192.168.118.12</ip>
<mgr_port>5345</mgr_port>
<data_port>5346</data_port>
<filter>
<enable>
<item>SYSDBA.*</item>
<item>SYSDBA.TEST</item>
<item>SYSDBA.##HISTOGRAMS_TABLE</item>
<item>SYSDBA.TEST2</item>
</enable>
<disable>
<item>SYSDBA.TEST</item>
<item>SYSDBA.##PLAN_TABLE</item>
<item>SYSDBA.##HISTOGRAMS_TABLE</item>
</disable>
</filter>
<map>
<item>SYSDBA.TEST==TEST.TEST</item>
<item>SYSDBA.*==SYSDBA.*</item>
<item>SYSDBA.TEST1==SYSDBA.T1</item>
<item>SYSDBA.TEST2==SYSDBA.TEST2</item>
</map>
</send>
</cpt>
</dmhs>

 2 在目的端192.168.118.124编写dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
<base>
<lang>ch</lang>
<version>2.0</version>
<mgr_port>5345</mgr_port>
<chk_interval>3</chk_interval>
<ckpt_interval>60</ckpt_interval>
<siteid>2</siteid>
</base>
<exec>
<recv>
<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>
<trxid_tables>1</trxid_tables>
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
<enable_merge>1</enable_merge>
<affect_row>1</affect_row>
<enable_ckpt_range>0</enable_ckpt_range>
<update_duplicate>0</update_duplicate>
</exec>
</dmhs>

开启目标 DMHS 服务 

./dmhs_serverd start

./dmhs_console

DMHS >connect

DMHS >start

开启源端 DMHS 服务: 初始装载:

./dmhs_serverd start

./dmhs_console

DMHS >connect

DMHS >copy 0 "sch.name='SYSDBA'" DICT|LSN|CREATE|INSERT|INDEX

DMHS >start

常见报错,启动服务时如下

 修改dmhs.serverd 文件

 

配置环境变量 vim /etc/profile

PATH=$PATH:$HOME/bin
export PATH
export DMHS_HOME=/dm8/dmhs
export LD_LIBRARY_PATH=/dm8/dmhs/bin:$LD_LIBRARY_PATH:/dm8/bin

还是报错。删掉 dmhs.key ,启动成功

 

posted @ 2020-10-20 18:03  fangzpa  阅读(1332)  评论(0编辑  收藏  举报