DM8_MSS2019_DMHS搭建文档

一、环境信息

1.1硬件信息

	源端DM8	目标端MSS
CPU	Intel x86	Intel x86
OS	Kylin V10	Redhat 8.1
version	dmhs_V3.3.14_dm8_rev133910_rh6_64_20230705_sp9.bin	dmhs_V4.3.12_mss_rev130108_rh6_64_veri_20230511.bin
Charset	GB18030	GBK
IP	192.168.48.8	192.168.48.11

1.2安装部署规划

源端DM数据库

源端执行码:
dmhs_V3.3.14_dm8_rev133910_rh6_64_20230705_sp9.bin安装路径:/home/dmdba/dmhs
启动脚本:
cd /home/dmdba/dmhs/bin
./DmhsServicetest start
数据库端口:5286
账号及密码:SYSDBA/SYSDBA
数据库版本:1-3-26-2023.06.21-193718-20046-ENT

目的端mss

目的端执行码:
dmhs_V4.3.12_mss_rev130108_rh6_64_veri_20230511.bin安装路径:/opt/dmhs/bin
启动脚本:
cd /opt/dmhs/bin
./DmhsServicemss start
数据库端口:1433
账号及密码:sa/Wa202307
数据库版本:Microsoft SQL Server 2019 (RTM-CU21) (KB5025808) - 15.0.4316.3 

1.3 实施架构说明

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

二、DMHS源端安装

2.1 dmhs软件安装

[dmdba@localhost media]$ ./dmhs_V3.3.14_dm8_rev133910_rh6_64_20230705_sp9.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.手册
所需磁盘空间:551 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.48.8](192.168.48.8):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.48.8
内置数据库端口[15236](1000-65535):5286
内置数据库用户名[SYSDBA]:
内置数据库密码[SYSDBA]:
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/home/dmdba/dmhs/log/install.log

三、DM源端配置

3.1开启逻辑附加日志

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

[dmdba@localhost media]$ disql sysdba:5286
密码:
服务器[LOCALHOST:5286]:处于普通打开状态
登录使用时间 : 47.345(ms)
disql V8

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:如果有主键列,记录UPDATEDELETE操作时只包含主键列信息;若没有主键列则包含所有列信息;
取值为2:不论是否有主键列,记录UPDATEDELETE操作时都包含所有列的信息;
取值为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.3DDL同步配置
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/dmdba/dmhs/scripts/ddl_sql_dm8.sql

3.4源端环境变量

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

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

3.5dci文件导入

将libdmoci.so放置 D M H O M E / b i n 下注:本次使用安装包为: d m 8 2 023042 6 x 8 6 k y l i n 1 0 6 4 e n t 8 . 1.3.1 2 p a c k 3 d m d c i . z i p ,解压后将 d m o c c i 文件夹下的 l i b d m o c i . s o 放置 DM_HOME/bin下 注:本次使用安装包为:dm8_20230426_x86_kylin10_64_ent_8.1.3.12_pack3_dmdci.zip,解压后将dmocci文件夹下的libdmoci.so放置 DMHOME/bin下注:本次使用安装包为:dm820230426x86kylin1064ent8.1.3.12pack3dmdci.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@localhost bin]$  ldd ./libdmhs_ld_dm8.so
        linux-vdso.so.1 (0x00007fffe6797000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007f7c5733a000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007f7c571b7000)
        librt.so.1 => /usr/lib64/librt.so.1 (0x00007f7c571ac000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f7c5718b000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f7c57186000)
        libdmhs_pub.so => ./libdmhs_pub.so (0x00007f7c56e6e000)
        libdmhs_net.so => ./libdmhs_net.so (0x00007f7c56c21000)
        libdmhs_ucvt.so => ./libdmhs_ucvt.so (0x00007f7c566c7000)
        libdmoci.so => /home/dmdba/dmdbms/bin/libdmoci.so (0x00007f7c55b9a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f7c57771000)
        libdmhs_bool_parse.so => ./libdmhs_bool_parse.so (0x00007f7c5598d000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7c557da000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f7c557bf000)

四、DMHS目标端安装

4.1 dmhs安装

[root@localhost media]# ./dmhs_V4.3.12_mss_rev130108_rh6_64_veri_20230511.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.手册
所需磁盘空间:545 MB
安装目录: [/opt/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.122.1](192.168.122.1,192.168.48.11):192.168.48.11
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.48.11
内置数据库端口[15236](1000-65535):1433
内置数据库用户名[SYSDBA]:sa
内置数据库密码[SYSDBA]:Wa202307
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/opt/dmhs/log/install.log

五、MSS目的端配置

5.1安装Microsoft ODBC

5.1.1 安装Microsoft ODBC 18

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version
#RHEL 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo

#to avoid conflicts
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel 
sudo ACCEPT_EULA=Y yum install -y msodbcsql18
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel

5.1.2 ISQL连接测试

[root@localhost bin]# odbcinst -j
unixODBC 2.3.11
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

配置驱动:
[root@localhost bin]# cat /etc/odbcinst.ini
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.2.so.2.1
UsageCount=1
TrustServerCertificate=yes
Encrypt=1
注:配置TrustServerCertificate=yes,使用TLS加密通信层时自动信任SQL Server TLS/SSL证书。

配置数据源:
[root@localhost bin]# cat /etc/odbc.ini
[mssql2]
Description = sqlserver connection
Driver = ODBC Driver 18 for SQL Server
TDS_Version = 7.3
Trace = On
TraceFile = stderr
Server = 192.168.48.11
Port = 1433
TrustServerCertificate=yes
[root@localhost bin]# isql -v mssql2 sa Wa202307
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| echo [string]                         |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select @@version;
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Microsoft SQL Server 2019 (RTM-CU21) (KB5025808) - 15.0.4316.3 (X64)
        Jun  1 2023 16:32:31
        Copyright (C) 2019 Microsoft Corporation
        Express Edition (64-bit) on Linux (Red Hat Enterprise Linux 8.1 (Ootpa)) <X64>                                                                                      |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
SQLRowCount returns 0
1 rows fetched
SQL>

六、配置文件准备

6.1 dm源端

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

6.1.1 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.48.8</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</db_pwd>
        <db_port>5286</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.48.11</ip>
            <mgr_port>5345</mgr_port>
            <data_port>5346</data_port>
            <filter>
                <enable>
                    <item>*.*</item>
                </enable>
            </filter>
            <map>
                <item>SYSDBA.*==dbo.*</item>
            </map>
        </send>
    </cpt>
</dmhs>

6.2 MSS目标端

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

6.2.1 dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <name>exec_mss</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>SQLSERVER</db_type>
        <db_server>192.168.48.11</db_server>
        <db_user>sa</db_user>
        <db_pwd>Wa202307</db_pwd>
        <db_port>1433</db_port>
                <char_mode>PG_UTF8</char_mode>
        <db_name>master</db_name>
                <driver>DSN=mssql2</driver>
        <need_convert>0</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.1 启动目的端exec

前台启动目标端dmhs服务:
[root@localhost bin]# cd $DMHS_HOME/bin
[root@localhost bin]# pwd
/opt/dmhs/bin
[root@localhost bin]# ./dmhs_server

另开窗口,登录DMHS的控制台:
[root@localhost bin]# ./dmhs_console
DMHS console tool: V4.3.12-Build(2023.05.11-130108trunc)_D64_2305
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.12-Build(2023.05.11-130108trunc)_D64_2305
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(1000);

目标端查看数据量:

[root@localhost ~]# sqlcmd -S localhost -U sa -P 'Wa202307' -No
1> select count(*) from dbo.t3;
2> go

-----------
       1000

(1 rows affected)
1>

八、后台服务启动

8.1 源端

1)cd $DMHS_HOME/bin/service_template
2) cp –r DmhsService ../
3) mv DmhsService DmhsServicetest
4) vi DmhsServicetest
    #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)./DmhsServicetest start

8.2 目的端

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

更多技术分享,见达梦社区:https://eco.dameng.com

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值