Loading

DMHS搭建

1. 搭建前的准备工作

两台机器ip分别为192.168.116.51和192.168.116.52。52为源端,51为目的端。
在源端、目的端分别安装达梦8,dm8安装路径/home/dmdba/dmdbms,实例路径/dmdata/DAMENG,端口都为5236。

源端准备工作

由于 DMHS 配置文件涉及多个配置项,在安装配置 DMHS 之前,需要做好相关准备工作,具体有如下准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的 DMHS 版本相匹配。
(2)规划好源端 DMHS 可使用的安装部署路径。
(3)DMHS 部署需要设置管理端口号(mgr_port)和数据端口号(data_port),因此在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确 DMHS 配置文件中连接 DM8 数据库的用户(db_user)及密码(db_pwd),该用户需要具有操作待同步表的权限。
(5)确定是否有 DDL 同步需求,如果有,确定待同步的对象如表、视图、存储过程、函数、序列等,并且需要确定对象的操作如创建、删除、修改等。根据此同步需求设置 ddl_mask 参数值。
(6)确定源端 DM8 数据库的归档日志是否需要 DMHS 进行处理如删除、保留或转移。依据此需求设置 clear_flag 参数值。
(7)确定需要进行数据同步的用户表(白名单及黑名单)及同步映射关系,并据此需求,完成 filter 及 map 元素项的参数值设置。

目的端准备工作

准备工作:
(1)检查操作系统及数据库版本以及位数,确保与待部署的 DMHS 版本相匹配。
(2)规划好目的端 DMHS 可使用的安装部署路径。
(3)DMHS 部署需要设置管理端口号(mgr_port)和数据端口号(data_port),在部署之前,需要提供两个端口号以供使用。
(4)在部署之前需要明确 DMHS 配置文件中目的端 DM8 数据库的用户(db_user)及密码(db_pwd),该用户用来执行同步,需要具有操作其他同步用户的权限。
(5)源端是否有序列同步,如果有,目的端配置文件中需要设置参数“seq_sync_mode”取值为 1。
(6)目的端同步表上是否有触发器,如果有,需要禁用触发器。

在源端、目的端安装DMHS

# 修改所属用户
chown dmdba:dinstall dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin
# 添加执行权限
chmod u+x dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin
# 命令行安装
./dmhs_V3.1.3_dm8_rev94249_rh6_64_veri_20200930.bin -i

image
一直回车按照默认配置即可。

安装目录: /home/dmdba/dmhs
远程部署工具名称:HsAgent
主机Ip(外网):192.168.116.51
远程部署工具管理端口(1000-65535):5456
内置数据库轮询间隔(1-60):3

在搭建DMHS时使用的是自己安装的DM8数据库,不用管DMHS内置的数据库。
image

注意:老版本dmhs自带libdmoci.so,新版本不带libdmoci.so,需要单独申请。

系统环境检查

  1. 环境变量检查
    Linux环境下,DMHS同步源端和目的端需要设置环境变量LD_LIBRARY_PATH,该环境变量需要包含DM8数据库安装路径bin目录,用于相关共享库的查找。使用echo命令进行查询:
    echo $LD_LIBRARY_PATH
    image

  2. 端口状态检查
    检查 DMHS 配置端口的状态,确保端口未被占用,使用 netstat 命令查询:
    netstat -ntlp | grep 5456

2. 数据库参数检查

在进行 DMHS 软件配置前,需要设置源端数据库归档、附加日志参数,并准备相关数据同步参数。

  1. 归档参数
    DMHS 同步源端数据库需要开启归档模式,使用如下语句检查数据库归档是否开启:
    select arch_mode from v$database;
    ARCH_MODE 字段查询结果为 “N”, 则数据库归档未开启;结果为 “Y”,则表示已开启。
alter database mount;
alter database add archivelog 'DEST=/dmdata/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=0';
alter database archivelog;
alter database open;

image
开启归档之后,ARCH_MODE显示未Y。
image

  1. 逻辑日志参数
    DMHS 同步源端数据库需要开启逻辑日志参数” RLOG_APPEND_LOGIC”
    select PARA_NAME,PARA_VALUE from v$dm_ini where para_name='RLOG_APPEND_LOGIC';
    image
    PARA_VALUE 结果集为 1,说明该功能已开启。如果取值为 0,需要启用该参数功能 。
    call sp_set_para_value(2,'RLOG_APPEND_LOGIC',1);
    image
    调用系统过程开启该参数或者手动更改dm.ini配置文件中的‘RLOG_APPEND_LOGIC’参数值为1,由于该参数为静态参数,需要重启数据库才能生效。
    image

  2. DDL 同步参数
    在源端数据库中以 SYSDBA 用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器,并在DMHS配置文件中配置 ddl_mask 参数选项以启用该功能。同步脚本位于 DMHS 安装目录的scripts 子目录下,命名为:ddl_sql_dm8.sql
    image
    不要在disql中执行ddl_sql_dm8.sql,会报错,在DM管理工具中能成功执行脚本
    image
    可以看到SYSDBA下创建了如下表:
    image

3. 安装部署

  1. 源端部署
    在dmhs的bin目录下创建dmhs.hs文件,内容如下:
<?xml version="1.0" encoding="GB18030" standalone="no"?>
<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>
       <idle_time>300</idle_time>
       <ddl_mask>OBJ:OP</ddl_mask>
       <arch>
             <clear_interval>600</clear_interval>
             <clear_flag>0</clear_flag>
       </arch>
<send>
       <ip>192.168.116.51</ip> 
       <mgr_port>5345</mgr_port> 
       <data_port>5346</data_port> 
       <net_pack_size>256</net_pack_size>
       <net_turns>0</net_turns>
       <crc_check>0</crc_check>
       <trigger>0</trigger>
	   <constraint>0</constraint>
       <identity>0</identity>
       <filter>
            <enable>
                <item>SYSDBA.*</item>
            </enable>
  			 <disable/>
      </filter>
      <map>
               <item>SYSDBA.* == SYSDBA.*</item>
      </map>
</send>
</cpt>
</dmhs>
  1. 目的端部署
    在dmhs的bin目录下创建dmhs.hs文件,内容如下:
<?xml version="1.0" encoding="GB18030" 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>
            <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_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</db_pwd>
        <char_code>GB18030</char_code>
        <db_port>5236</db_port>
        <level>0</level>
        <exec_mode>0</exec_mode>
        <exec_thr>16</exec_thr>
        <exec_sql>1024</exec_sql>
        <exec_trx>5000</exec_trx>
        <exec_rows>250</exec_rows>
        <enable_rowid>0</enable_rowid>
      </exec>
</dmhs>

4. 初始装载

初始装载是将源端数据库中的初始数据装载到目的端数据库,使 DMHS 同步的时刻源和目的端的同步表数据一致。装载前源端 DMHS 服务和目的端 DMHS 服务都需要开启。

  1. 启动目的端执行服务
    进行初始字典装载时,需要首先启动目的端 DMHS 服务。
    命令行方式: ./dmhs_server
    服务名方式: ./dmhs_serverd start
    刚开始搭建时先前台启动
    image
    初次启动目的端 DMHS 服务时,同步执行服务并未开启,需要使用 DMHS控制台工具连接 DMHS 管理服务,手动输入 start exec 命令开启。具体示例如下:
    image

exec模块启动完成后前台显示如下:
image
查看目的端数据库可以看到SYSDBA用户下创建了一些表:
image

  1. 启动源端执行服务
    在启动目的端DMHS执行服务后,源端启动 DMHS管理服务,并使用DMHS控制台工具连接 DMHS 管理服务,使用 COPY 命令及 DICT 装载选项,执行字典装载操作。
  • 前台启动dmhs_server
    image
  • 使用 DMHS控制台工具连接 DMHS 管理服务,使用 COPY 命令及 DICT 装载选项
    COPY 0 "SCH.NAME='SYSDBA'" DICT
    image
    可以看到前台日志显示如下:
    image
  • 启动源端捕获服务的控制台命令: start cpt
    image
    前台日志显示如下:
    image

5. 测试数据是否同步

  1. 源端插入数据
./disql
create table test(id int, name varchar(10));
insert into test values(1, 'apple');
commit;

image

  1. 目的端查看数据是否同步
./disql
select * from test;

image

可以看到目的端数据已经同步。

posted @ 2021-05-07 15:15  疑怪昨宵春梦好  阅读(757)  评论(0)    收藏  举报