DM8_MySql5.7_DMHS搭建文档

1测试环境

1.1硬件信息

在这里插入图片描述

1.2安装部署规划

在这里插入图片描述

1.3 实施架构说明

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

2DMHS源端安装

2.1 dmhs软件安装

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

3DM源端配置

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.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/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.5dci文件导入

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

3.7创建同步用户

CREATE USER "U_DM_DMHS" IDENTIFIED BY "PASSWD123";
GRANT DBA TO U_DM_DMHS;
GRANT VTI TO U_DM_DMHS;

4 DMHS目标端安装

4.1 dmhs安装

[root@cesdb dmhs]$ ./dmhs_V4.3.16_mysql5_rev134328_rh6_64_20230711.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
安装目录: [/opt/dmhs]
该路径不为空,是否继续安装?[Y or N]n
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/opt/dmhs]/opt/dmhs
该路径不为空,是否继续安装?[Y or N]y
安装路径可能存在覆盖安装
安装目录无写入权限
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: [/opt/dmhs]
该路径不为空,是否继续安装?[Y or N]n
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件配置助手
4.手册
所需磁盘空间:546 MB
安装目录: /opt/dmhs]/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.48.12](192.168.48.12):
远程部署工具管理端口[5456](1000-65535):
内置数据库轮询间隔[3](1-60):
内置数据库IP[]:192.168.48.12
内置数据库端口[15236](1000-65535):3306
内置数据库用户名[SYSDBA]:root
内置数据库密码[SYSDBA]:123456
服务脚本环境变量设置
依赖库路径
提示:此配置项供用户配置源或目的数据库依赖库路径和odbc依赖库路径, 多个路径以":"隔开(例:/opt/dmdbms/bin:/usr/local/lib),此配置项会添加到服务脚本的NEED_LIB_PATH的变量值中。
请配置依赖库路径:
远程控制服务
1.自动
2.手动
启动方式:[2.手动]
正在创建远程控制服务
达梦数据实时同步V4.0安装完成
更多安装信息,请查看安装日志文件:
/opt/dmhs/log/install.log

5 MySQL目的端配置

5.1创建同步用户

CREATE USER 'U_MYSQL_DMHS'@'%' IDENTIFIED BY 'Passwd123';
GRANT ALL ON *.* TO 'U_MYSQL_DMHS'@'%';
FLUSH PRIVILEGES;

注意:在MySQL数据库中创建用户,授权需要同步的MySQL库,给与相应的权限。

5.2创建数据库

CREATE DATABASE DMHS  DEFAULT CHARACTER SET utf8 ;

5.3安装MySQL ODBC

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

5.1.1安装UnixODBC

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

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

5.1.2安装MySQL ODBC

tar  -zxvf mysql-connector-odbc-5.3.13-linux-glibc2.12-x86-64bit.tar.gz
cd  mysql-connector-odbc-5.3.13-linux-el7-x86-64bit
cp lib/* /usr/local/lib/
cp bin/* /usr/local/bin/
cp /usr/local/lib/libodbc.so.2.0.0        /usr/lib64/libodbc.so.2
cp /usr/local/lib/libodbcinst.so.2.0.0  /usr/lib64/libodbcinst.so.2
myodbc-installer -a -d -n "MySQL ODBC 5.3 Driver" -t "Driver=/usr/local/lib/libmyodbc5w.so"
myodbc-installer -a -d -n "MySQL ODBC 5.3 Driver" -t "Driver=/usr/local/lib/libmyodbc5a.so"

注:MySQL ODBC下载驱动地址:
https://downloads.mysql.com/archives/c-odbc/

5.1.3ISQL连接测试

root@cesdb ~]# cat /etc/odbcinst.ini
[MySQL ODBC 5.3 Driver]
Driver=/usr/local/lib/libmyodbc5a.so
UsageCount=2

[root@cesdb ~]# cat /etc/odbc.ini
[MYSQL]
Description = MYSQL ODBC DSN
Driver = MySQL ODBC 5.3 Driver
SERVER = 192.168.48.12
UID = U_MYSQL_DMHS
PWD = Passwd123
[root@cesdb20 bin]# isql -v MYSQL
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| echo [string]                         |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select version();
+-----------+
| version() |
+-----------+
| 5.7.42-log|
+-----------+
SQLRowCount returns 1

6配置文件准备

6.1 dm源端

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

6.1.1 dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
        <base>
                <lang>en</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.48.8</db_server>
                <db_port>2222</db_port>
                <char_code>PG_UTF8</char_code>
                <db_user>U_DM_DMHS</db_user>
                <db_pwd>PASSWD123</db_pwd>
                <ddl_mask>TABLE:VIEW:INDEX:TRUNCATE:CREATE:DROP:ALTER:COMMENT</ddl_mask>
                <arch>
                        <clear_interval>600</clear_interval>
                        <clear_flag>0</clear_flag>
                </arch>
                <send>
                        <ip>192.168.48.12</ip>
                        <mgr_port>5345</mgr_port>
                        <data_port>5346</data_port>
                        <trigger>1</trigger>
                        <constraint>1</constraint>
                        <identity>1</identity>
                        <filter>
                                <enable>
                                  <item>U_DM_DMHS.*</item>
                                </enable>
                        </filter>
                        <map>
                          <item>U_DM_DMHS.* == DMHS.*</item>
                        </map>
                </send>
        </cpt>
</dmhs>

6.2MYSQL目标端

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

6.2.1 dmhs.hs

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
        <base>
                <lang>en</lang>
                <mgr_port>5345</mgr_port>
                <chk_interval>2</chk_interval>
                <ckpt_interval>45</ckpt_interval>
                <siteid>2</siteid>
        </base>
        <recv>
                <data_port>5346</data_port>
                <exec>
                    <char_code>PG_UTF8</char_code>
                        <db_type>mysql</db_type>
                        <db_server>192.168.48.12</db_server>
                        <db_user>U_MYSQL_DMHS</db_user>
                        <db_pwd> Passwd123</db_pwd>
            <driver>MySQL ODBC 5.3 Driver</driver>
                        <db_port>3306</db_port>
                        <db_name>DMHS</db_name>
                        <length_in_char>1</length_in_char>
                        <exec_mode>1</exec_mode>
                        <exec_thr>8</exec_thr>
                        <exec_sql>1024</exec_sql>
                        <exec_trx> 5000 </exec_trx>
                        <exec_rows>250</exec_rows>
                        <commit_policy>0</commit_policy>
                        <exec_policy>2</exec_policy>
                        <msg_col_size>8000</msg_col_size>
                        <level>0</level>
                </exec>
        </recv>
</dmhs>

7启动增量同步

7.1 启动目的端exec

前台启动目标端dmhs服务:
[root@cesdb20 bin]# cd /opt/dmhs/bin
[root@cesdb20 bin]# pwd
/opt/dmhs/bin
[root@cesdb20 bin]# ./dmserver

另开窗口,登录DMHS的控制台:
[root@cesdb20 bin]# ./dmhs_console
DMHS console tool: V4.3.16-Build(2023.07.11-134328trunc)_64_2307
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.16-Build(2023.07.11-134328trunc)_64_2307

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='U_DM_DMHS'" DICT (装载字典)
DMHS>COPY 0 "SCH.NAME='U_DM_DMHS'" 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(100000);
SQL> select count(*) from t3;

行号     COUNT(*)
---------- --------------------
1          100000

已用时间: 0.565(毫秒). 执行号:66203.

目标端查看数据量:

[root@cesdb20 bin]# mysql -uroot -p123456
mysql> select count(*) from DMHS.T3;
+----------+
| count(*) |
+----------+
|   100000 |
+----------+
1 row in set (0.05 sec)

8后台服务启动

8.1 源端

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

8.2 目的端

1)cd $DMHS_HOME/bin/service_template
2) cp –r DmhsService ../
3) mv DmhsService DmhsService_mysql
4) vi DmhsService_mysql
    #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)./DmhsService_mysql start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值