注册
DM8-PG13.3_DMHS搭建文档
技术分享/ 文章详情 /

DM8-PG13.3_DMHS搭建文档

DM_926495 2023/05/17 1566 2 1

一、测试环境

1.1 硬件环境

源端:DM8
CPU:Intel x86
OS:Kylin V10
version:dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6
Charset:UTF-8
IP:192.168.123.12

目标端:PG
CPU:Intel x86
OS:Redhat 7.6
version:dmhs_V4.3.10_pg_rev128943_rh6_64_veri_20230424_sp3
Charset:UTF-8
IP:192.168.123.17	

1.2 安装部署规划

源端DM数据库:
源端执行码:
dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6.bin
安装路径:/home/dmdba/dmhs
启动脚本:
cd /home/dmdba/dmhs/bin
. /DmhsServicebook start

目的端PG:
目的端执行码:
dmhs_V4.3.10_pg_rev128943_rh6_64_veri_20230424_sp3.bin
安装路径:/home/postgres/dmhs_05
启动脚本:
cd /home/postgres/dmhs_05
./DmhsServicePG13 start

1.3 实施架构说明

本次测试环境中达梦和PG分别放置不同的服务器,均为单机。

2、DMHS软件安装

2.1 dmhs软件安装

[dmdba@cesdb20dmhs]$ ./dmhs_V4.3.10_dm8_rev129468_rh6_64_veri_20230504_sp6.bin -i
Extract install files..........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:541 MB
安装目录: [/home/dmdba/dmhs]
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.123.12](192.168.123.12):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.123.12
内置数据库端口[15236](1000-65535):5239
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log

3、DM源端配置

3.1 开启逻辑附加日志

DM8源端需要开启附加日志参数"RLOG_APPEND_LOGIC"以支持数据实时同步,使用如下语句查询DM8数据库中该参数是否启用:

SQL> SELECT PARA_VALUE FROM V$DM_INI WHERE PARA_NAME='RLOG_APPEND_LOGIC';
行号       PARA_VALUE
---------- ----------
1          2
已用时间: 12.834(毫秒). 执行号:10000.

PARA_VALUE结果大于0,则说明该功能已开启。如果取值为0,需要启用该参数功能。调用系统过程开启该参数或者手动更改dm.ini配置文件中的‘RLOG_APPEND_LOGIC’参数值。目前该参数支持动态修改,具体可参考管理员手册说明。

SQL> call sp_set_para_value(1, 'RLOG_APPEND_LOGIC', 2);
PL/SQL executed successfully
used time: 6.362(ms). Execute id is 127.

以上sp_set_para_value调用表示修改dm.ini文件中的’RLOG_APPEND_LOGIC’参数值为1。该系统过程的定义可参见《DM8_SQL语言使用手册》。

注意:
(1) 该参数取值说明如下:
取值为1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息;若没有主键列则包含所有列信息;
取值为2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息;
取值为3::记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID。
在Kafka执行端,对于主键表,如果在更新和删除时需要显示全列信息,则需要设置该值为2,保证源端日志中记录有全列信息,否则无法显示全列。

(2)启用该参数后,源端DM8的归档日志量比不启用该参数会有所增加,需要知悉。

3.2 开启数据库归档

DMHS同步源端数据库需要开启归档模式,使用如下语句检查DM8归档是否开启:

SQL> select arch_mode from v$database;

LINEID     ARCH_MODE
----------     ---------
1           Y
used time: 3.236(ms). Execute id is 123.

如果ARCH_MODE字段查询结果为“N”,则DM8数据库归档未开启,使用如下系列命令开启归档模式。开启归档模式,需要确定归档类型、归档路径、归档文件大小、归档空间大小限制参数,根据实际情况进行设置。具体可参阅《DM8系统管理员手册》。

SQL> alter database mount;
executed successfully
used time: 00:00:01.144. Execute id is 0.
SQL> alter database add archivelog 'DEST= /dm8/arch,TYPE=LOCAL,FILE_SIZE=256,SPACE_LIMIT=2048';
executed successfully
used time: 7.437(ms). Execute id is 0.
SQL> alter database archivelog;
executed successfully
used time: 10.277(ms). Execute id is 0.
SQL> alter database open;
executed successfully
used time: 00:00:01.262. Execute id is 0.	

注意:
在数据库运行过程中,若需要开启归档模式,需要与DBA进行沟通。

3.3 DDL同步配置

DMHS支持DDL同步功能,但是默认不启用该功能。对于同步源端为DM8数据库,有两种方式启用DDL同步功能:
(1)无触发器方式:启用DM8数据库系统参数“RLOG_APPPEND_SYSTAB_LOGIC”,该参数启用在日志中记录系统表逻辑操作功能。该参数默认取值为0,即不启用;设置为1时,启用该功能。

select * from v$dm_ini where para_name='RLOG_APPEND_SYSTAB_LOGIC';
call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',0);
call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',1);

(2)触发器方式:在源端DM8数据库中以SYSDBA用户执行DDL同步脚本,在SYSDBA模式下创建相关DMHS系统表及触发器。
同步脚本位于DMHS安装目录的scripts子目录下,命名为:ddl_sql_dm8.sql

--进入数据库执行以下脚本,如遇到需要输入值,可直接回车继续:
start /home/db/dmdata/dmhs/scripts/ddl_sql_dm8.sql

3.4 源端环境变量

查看源端是否已配置以下环境变量(dmhs软件安装完成后自动添加如下两条环境变量):

export DMHS_HOME=/home/db/dmdba/dmhs
export LD_LIBRARY_PATH="LD_LIBRARY_PATH:$DMHS_HOME/bin:$DM_HOME/bin"

3.5 dci文件导入

将libdmoci.so放置$DM_HOME/bin下

注:本次使用安装包为:dm8_20230426_x86_kylin10_64_ent_8.1.3.12_pack3_dmdci.zip,解压后将dmocci文件夹下的libdmoci.so放置$DM_HOME/bin下

unzip dm8_20230426_x86_kylin10_64_ent_8.1.3.12_pack3_dmdci.zip
cd dmocci
cp libdmoci.so $DM_HOME/bin/

3.6 检查dmhs是否缺少so包

若dci文件已放入$DM_HOME/bin下,则以下检测不会出现缺包现象,否则会显示libdmoci.so缺包

cd $DMHS_HOME/bin
[dmdba@cesdb20 bin]$ ldd ./libdmhs_ld_dm8.so
        linux-vdso.so.1 (0x00007fff748ca000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007f2d380fa000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007f2d37f77000)
        librt.so.1 => /usr/lib64/librt.so.1 (0x00007f2d37f6c000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f2d37f4b000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f2d37f46000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00007f2d37c2c000)
        libdmhs_net.so => ./libdmhs_net.so (0x00007f2d379e2000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f2d37488000)
        libdmoci.so => /dm8/dmdbms_0426/bin/libdmoci.so (0x00007f2d3695b000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2d38530000)
        libdmhs_bool_parse.so => ./libdmhs_bool_parse.so (0x00007f2d3674e000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f2d3659b000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f2d36580000)

4、DMHS目标端安装

4.1 dmhs安装

[postgres@cesdb dmhs]$ ./dmhs_V4.3.10_pg_rev128943_rh6_64_veri_20230424_sp3.bin -i
Extract install files..........

1.English(English)
2.Simplified Chinese(简体中文)
Select the language to install[2.Simplified Chinese(简体中文)]:
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/home/postgres/dmhs]
该路径不为空,是否继续安装?[Y or N]n
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/home/postgres/dmhs]/home/postgres/dmhs_05
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
安装目录无写入权限
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/home/postgres/dmhs]
该路径不为空,是否继续安装?[Y or N]n
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/home/postgres/dmhs]/home/postgres/dmhs_05
1.统一部署
2.现在初始化
是否初始化达梦数据实时同步系统[1.统一部署]:
正在安装
default start ...    default finished.
server start ...    server finished.
hs_agent start ...    hs_agent finished.
hsca start ...    hsca finished.
doc start ...    doc finished.
postinstall start ...    postinstall finished.
正在创建快捷方式
安装成功
远程部署工具配置
远程部署工具名称[HsAgent]:
主机Ip(外网)[192.168.123.17](192.168.123.17):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.123.17
内置数据库端口[15236](1000-65535):
内置数据库用户名[SYSDBA]:postgres
内置数据库密码[SYSDBA]:sys
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/postgres/dmhs_05/log/install.log

5、PG目标端配置

5.1 安装PostgreSQL ODBC

在安装PostgreSQL ODBC前需要首先安装UnixODBC。

5.1.1 安装UnixODBC

tar  -zxvf  unixODBC-2.3.1tar.gz
cd  unixODBC-2.3.0
./configure
make  &&  make  install

安装完成后:
[root@cesdb ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

5.1.2 安装PostgreSQL ODBC

tar -zxvf  psqlodbc-13.02.0000.tar.gz
cd  psqlodbc-13.02.0000
./configure --with-unixodbc --with-libpq=/usr/pgsql-13
make && make install

注:
使用rpm包安装pg时,需要安装postgresql-devel,否则在执行configure操作时会出错。
本次安装pg包为:
postgresql13-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-contrib-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-libs-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-server-13.3-1PGDG.rhel7.x86_64.rpm
postgresql13-devel-13.3-1PGDG.rhel7.x86_64.rpm
安装地址:
https://yum.postgresql.org/common/redhat/rhel-7-x86_64/repoview/

5.1.3 ISQL连接测试

[root@cesdb ~]# cat /etc/odbc.ini
[POSTGRESQL]
Description = PostgresSQLODBC
Driver = /usr/local/lib/psqlodbcw.so
Database = postgres
Servername = 192.168.123.17
UserName = postgres
Password = postgres
Port = 5432
ReadOnly = 0
ConnSettings = set client_encoding to UTF8

root@cesdb ~]# cat /etc/odbcinst.ini
# Example driver definitions
# Driver from the mysql-connector-odbc package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver      = /usr/local/lib/psqlodbcw.so
Setup       = /usr/lib64/libodbcpsqlS.so
Driver64    = /usr/local/lib/psqlodbcw.so
Setup64     = /usr/lib64/libodbcpsqlS.so
FileUsage   = 1


6、配置文件准备

6.1 dm源端

在$DMHS_HOME/bin下添加dmhs.hs文件:
vi dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <name>cpt</name>
        <ckpt_interval>60</ckpt_interval>
        <siteid>1</siteid>
        <version>2.0</version>
    </base>
    <cpt>
        <enable>1</enable>
        <name>cpt</name>
        <db_type>DM8</db_type>
        <db_server>192.168.123.12</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</db_pwd>
        <db_port>5239</db_port>
        <ddl_mask>op:obj:rec</ddl_mask>
        <idle_time>300</idle_time>
        <char_mode>PG_UTF8</char_mode>
        <constraint>1</constraint>
        <arch>
                <clear_interval>600</clear_interval>
                <clear_flag>0</clear_flag>
        </arch>
        <send>
            <ip>192.168.123.17</ip>
            <mgr_port>5345</mgr_port>
            <data_port>5346</data_port>
            <filter>
                <enable>
                    <item>*.*</item>
                </enable>
            </filter>
            <map>
                <item>SYSDBA.*==postgres.*</item>
            </map>
        </send>
    </cpt>
</dmhs>

6.2 PG目标端

在$DMHS_HOME/bin下添加dmhs.hs文件:
vi dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <name>exec_pg</name>
        <ckpt_interval>60</ckpt_interval>
        <siteid>2</siteid>
        <version>2.0</version>
    </base>
    <exec>
        <recv>
            <mgr_port>5345</mgr_port>
            <data_port>5346</data_port>
        </recv>
        <enable>1</enable>
        <name>exec</name>
        <db_type>POSTGRES</db_type>
        <db_server>192.168.123.17</db_server>
        <db_user>postgres</db_user>
        <db_pwd>postgres</db_pwd>
        <db_port>5432</db_port>
                <char_mode>PG_UTF8</char_mode>
        <db_name>postgres</db_name>
                <driver>PostgreSQL</driver>
        <need_convert>1</need_convert>
        <exec_thr>4</exec_thr>
        <exec_sql>512</exec_sql>
        <exec_trx>5000</exec_trx>
        <exec_rows>250</exec_rows>
                <ddl_continue>1</ddl_continue>
                <affect_row>0</affect_row>
                <exec_policy>2</exec_policy>
                <enable_rowid>0</enable_rowid>
                <clear_trx_file>1</clear_trx_file>
                <trx_max_file>8</trx_max_file>
    </exec>
</dmhs>

7、启动增量同步

7.1 启动目的端exec

前台启动目标端dmhs服务:
[postgres@cesdb bin]$ cd /home/postgres/dmhs_05/bin
[postgres@cesdb bin]$ pwd
/home/postgres/dmhs_05/bin
[postgres@cesdb bin]$ ./dmserver

另开窗口,登录DMHS的控制台:
[postgres@cesdb bin]$ ./dmhs_console
DMHS console tool: V4.3.10-Build(2023.04.24-128943trunc)_D64_2304_sp3
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.

Connected to DMHS: 127.0.0.1:5345
execute success
Dameng HS Server V4.3.10-Build(2023.04.24-128943trunc)_D64_2304_sp3
DMHS> start exec

7.2 启动源端cpt

前台启动脚本:

cd /home/dmdba/dmhs/bin
./dmhs_server

启动控制器:

cd /home/dmdba/dmhs/bin
./dmhs_console
DMHS>connect
Connect successful
DMHS>copy 0 "SCH.NAME='SYSDBA'" DICT (装载字典)
DMHS>COPY 0 "SCH.NAME='SYSDBA'" INSERT|THREAD|8
DMHS>clear exec lsn
DMHS>start cpt  (开启增量同步)

注:
(1)connect连接的是目的端DMHS服务的地址以及目的端DMHS配置文件中的管理端口号(BASE中的MGR_PORT)。
(2)start cpt后会在dmhs/bin目录下生成dmhs_cpt.tmp文件。下次启动dmhs服务会根据该文件判断是否需要启动捕获服务,如果存在该文件,则直接启动dmhs捕获器;如果该文件不存在,则需要执行start cpt命令启动捕获器。
(3)装载字典或者装载数据只能在cpt停止的时候进行,因此,hs同步过程中如果需要进行字典或者数据的装载,要先执行stop cpt后再进行copy装载。
(4)初始数据装载时,如果目标端已建立相应的同步表,则使用:COPY 0 "SCH.NAME='SYSDBA'" INSERT|THREAD|8;如果目标端需要使用DMHS创建初始表,则使用:COPY 0 "SCH.NAME IN ('XXX1','XXX2','XXX3')" CREATE|INSERT|THREAD|8,如果同步表有分区表,加入PARTITION选项:COPY 0 "SCH.NAME='XXX1'" CREATE|INSERT|THREAD|8|PARTITION;

7.3 数据同步验证

创建测试表:

create table T3(c1 int,c2 int,c3 int,c4 varchar(20),c5 varchar(20),c6 varchar(20),c7 varchar(20),c8 varchar(20),c9 varchar(20));

创建存储过程:

create or replace PROCEDURE p_in(num int)
as

begin
   for i in 1..num loop
     insert into t3 values(i,
                           DBMS_RANDOM.RANDOM(),
                           DBMS_RANDOM.RANDOM(),
                            DBMS_RANDOM.RANDOM_STRING('U',4),
                            DBMS_RANDOM.RANDOM_STRING('U',5),
                            DBMS_RANDOM.RANDOM_STRING('U',6),
                            DBMS_RANDOM.RANDOM_STRING('U',7),
                            DBMS_RANDOM.RANDOM_STRING('U',8),
                            DBMS_RANDOM.RANDOM_STRING('U',9));
      if (i%10000 = 0)
       then commit; 
      end if;
    end loop;
end;

根据需求进行数据同步添加1W..10W..100W

call p_in(10000000);

目标端查看数据量:

[root@cesdb ~]# su - postgres
Last login: Tue May 16 13:41:24 CST 2023 on pts/2
[postgres@cesdb ~]$ psql -U postgres -h192.168.123.17  -p5432 -dpostgres
psql (9.2.24, server 13.3)
WARNING: psql version 9.2, server version 13.0.
         Some psql features might not work.
Type "help" for help.
postgres=#
postgres=# select count(*) from postgres."T3";

8、后台服务启动

8.1 源端

1)cd $DMHS_HOME/bin/service_template
2) cp –r DmhsService ../
3) mv DmhsService DmhsServicesbook
4) vi DmhsServicebook
    #REPLACE DMHS_HOME path
DMHS_HOME=/home/dmdba/dmhs   --DMHS_HOME
#REPLACE program dir
PROG_DIR=/home/dmdba/dmhs/bin   --DMHS_HOME执行bin目录
#REPLACE program config path
CONF_PATH=/home/dmdba/dmhs/bin/dmhs.hs  --配置文件dmhs.hs 绝对路径
(5)./DmhsServicesbook start

8.2 目的端

1)cd $DMHS_HOME/bin/service_template
2) cp –r DmhsService ../
3) mv DmhsService DmhsServicesPG13
4) vi DmhsServicebook
    #REPLACE DMHS_HOME path
DMHS_HOME=/home/postgres/dmhs_05   --DMHS_HOME
#REPLACE program dir
PROG_DIR=/home/postgres/dmhs_05/bin   --DMHS_HOME执行bin目录
#REPLACE program config path
CONF_PATH=/home/postgres/dmhs_05/bin/dmhs.hs  --配置文件dmhs.hs 绝对路径
(5)./DmhsServicesPG13 start

九、附文档

DM8_PG13.3_DMHS搭建文档_20230516_v1.doc

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服