Construcción sincrónica de DMHS-DM8 a KAFKA

Hace algún tiempo, escribí un artículo sobre los problemas de sincronización de datos que se encuentran al realizar proyectos domésticos y presenté brevemente el software de sincronización en tiempo real dmhs de Dameng. Hoy, escribiré sobre los pasos para sincronizar la biblioteca DM construida en los últimos días con KAFKA.

1. Instalación de DMHS

1.1. Instalación

Debe instalar el software dmhs en el origen y el destino respectivamente .

1)      Cargue el paquete de instalación en el servidor y otorgue permisos ejecutables

chmod 777 dmhs_V3.1.3_dm8-kafka_rev82884sp3_rh7_64_veri_20190617.bin

2)      Ejecute el instalador

./ dmhs_V3.1.3_dm8-kafka_rev82884sp3_rh7_64_veri_20190617.bin -i

3)      Ingrese el archivo de claves . Dameng puede utilizar este archivo de claves para solicitar temporalmente la prueba.

[root @ localhost dmdba] # ./dmhs_V3.0.2.01_dm7_rock4.2_64\(20151009\).bin -i

Extraer archivos de instalación .........

Programa de instalación de Welecom a DMHS

Requiere espacio: 100 M

¿Si se debe ingresar la ruta del archivo de clave? (A / a: sí N / n: No) [A / a] Y

Ingrese la ruta del archivo de clave [dmhs.key]: /home/dmdba/dmhs.key

4)      Ingrese la ruta de instalación

[root @ loPor favor ingrese la ruta de instalación [/ opt / dmhs]: / home / dmdba / dmhs

Espacio disponible: 1488M

Confirme la ruta de instalación. (Y / y: sí N / n: No) [Y / y] Y

5)      Ingrese los parámetros de instalación, [] es el valor predeterminado, ingrese directamente la tecla Enter para seleccionar el valor predeterminado, los parámetros de este paso también se pueden completar casualmente y luego modificar a través de la configuración. El ID de sitio del origen y el destino debe establecerse de manera diferente (por ejemplo, el origen usa 1 y el destino usa 2) .

Introduzca el idioma (ch / en) [ch]: ch

Ingrese mgr_port (1000-65535) [5345]:

Ingrese el chk_interval (1-60) segundo [3]:

Ingrese el ckpt_interval (10-65536) segundo [60]:

Introduzca el ID del sitio (0-65536): 1

Ya sea para configurar el análisis estadístico? (A / a: Sí N / n: No) [A / a]

Ingrese el tipo de base de datos (dm7 / dm6 / oracle) [dm7]:

Please input   the status collection Interval (0-60)[5]:

Please input   the database IP:127.0.0.1

Please input   the database port (1000-65535)[5236]:

Please input   the database user name:SYSDBA

Please input   the database user password:SYSDBA

1.2. 配置

1.2.1修改源端和目的端dmhs.xml配置文件。

源端配置内容如下:

<?xml version="1.0" encoding="GB2312" 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>

        <dict_dir>/home/dmdba/dm/dmhs_kafka/dmhs_dict</dict_dir>

        <char_code>PG_GB18030</char_code>

        <ddl_mask></ddl_mask>

        <arch>

        <clear_interval>600</clear_interval>

        <clear_flag>1</clear_flag>

        </arch>

        <send>

            <ip>10.147.232.159</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>*.*</item>

                </enable>

                <disable/>

            </filter>

            <map>

        </map>

        </send>

    </cpt>

</dmhs>

      目的端配置文件内容如下:

      <?xml version="1.0" encoding="GB2312" standalone="no"?>

<dmhs>

      <base>

        <lang>ch</lang>

        <mgr_port>5345</mgr_port>

        <chk_interval>3</chk_interval>

        <ckpt_interval>60</ckpt_interval>

         <siteid>2</siteid>

             <version>2.0</version>

      </base>

      <exec>

                <recv>

                        <data_port>5346</data_port>

                </recv>

                <db_name></db_name>

                <exec_thr>1</exec_thr>

                <case_sensitive>0</case_sensitive>

                <exec_policy>2</exec_policy>

                <toggle_case>0</toggle_case>

                <commit_policy>1</commit_policy>

                <enable_merge>0</enable_merge> 

                <is_kafka>1</is_kafka>

      </exec>

</dmhs>

如果源端和目的端在同一台服务器可以把配置集合到一起,内容如下:

<?xml version="1.0" encoding="GB2312" 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>

    <exec>

                <recv>

                        <data_port>5346</data_port>

                </recv>

                <db_name></db_name>

                <exec_thr>1</exec_thr>

                <case_sensitive>0</case_sensitive>

                <exec_policy>2</exec_policy>

                <toggle_case>0</toggle_case>

                <commit_policy>1</commit_policy>

                <enable_merge>0</enable_merge> 

                <is_kafka>1</is_kafka>

    </exec>

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

        <dict_dir>/home/dmdba/dm/dmhs_kafka/dmhs_dict</dict_dir>

        <char_code>PG_GB18030</char_code>

        <ddl_mask></ddl_mask>

        <arch>

            <clear_interval>600</clear_interval>

            <clear_flag>1</clear_flag>

        </arch>

        <send>

            <ip>10.147.232.159</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>*.*</item>

                </enable>

                <disable/>

            </filter>

            <map>

        </map>

        </send>

    </cpt>

</dmhs>

1.2.2源端数据库修改配置参数

修改dm.ini中参数RLOG_APPEND_LOGIC=1

开启归档日志ARCH_INI=1,(一般默认已开启)增加归档配置文件dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE           = LOCAL       

ARCH_DEST           = /dbarch/dmarch     

ARCH_FILE_SIZE  = 512       

ARCH_SPACE_LIMIT   = 300000

1.2.3在源端数据库建立数据库对象

为了同步DDL操作和维护源端字典信息,使用SYSDBA用户建立下面的数据库对象。该脚本以相应版本安装目录中./scripts/ddl_sql_dm8.sql为准。

1.3. 目的端KAFKA相关设置

  • 查看当前有哪些topic

[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --list --zookeeper localhost:2181

  • 创建一个topic

[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic DMHS

Created topic "dmtest".

[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --list --zookeeper localhost:2181

DMHS

  • 查看消费者的界面是否有消息推送过来

[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-console-consumer.sh --bootstrap-server 10.147.232.159:9092 --topic DMHS --from-beginning

注:以上红色部分为创建的topic话题,需要和后期启动脚本中的话题名称一致,区分大小写。

2. 启动同步服务

如果源端和目的端在同一服务器只需启动一个进程即可,在两台服务器需要分别启动。本篇以在同一台服务器举例。

2.1. 启动DMHS服务

2.1.1.  启动脚本

  • 启动之前将kafka目录下的libs目录的文件,全部copy dmhs软件bin目录下

创建DMHS服务启动脚本名为start_dmhs_kafka.sh,内容如下:

#!/bin/sh

export.GBK

export LD_LIBRARY_PATH=/home/dmdba/dm/dmdbms/bin:/home/dmdba/dm/dmhs_kafka/bin

java -Djava.ext.dirs="/home/dmdba/dm/dmhs_kafka/bin"  com.dameng.dmhs.dmga.service.impl.ExecDMHSKafkaService /home/dmdba/dm/dmhs_kafka/bin/dmhs.hs 10.147.232.159:9092 DMHS

   说明:

① "/home/dmdba/dm/dmhs_kafka/bin"kafkalibs目录以及DMHS 辅助jar包路径。

② com.dameng.dmhs.dmga.service.impl.ExecDMHSKafkaService DMHS实现kafka同步服务的类名。

③ /home/dmdba/dm/dmhs_kafka/bin/dmhs.hsDMHS配置文件dmhs.xml

④ 10.147.232.159:9092kafka集群节点。

⑤ DMHS topic话题。topic可选,如果不填写topic,则每张表会建一个topic,名称即为表名。指定topic的话所有的表都填写在一个topic中,该topic话题必须和KAFKA话题一致。

以上各项路径参数根据实际环境进行修改。建议使用jdk1.7以上版本。

2.1.2. 启动服务

  进入启动脚本目录,使用dmdba用户执行./start_dmhs_kafka.sh后,DMHS执行服务自动启动并监听相应数据端口。示例如下:

image.png

图中出现的错误:库文件libexec_ins_ora.so未找到,不需要管

启动的时候如果有个报错,库文件 libdmhs_exec_dll.so 未找到。

原因是有依赖问题,ldd一下把依赖解决就好。

image.png

处理过程中遇到缺少libodbc.so.1的动态库需要安装一下unixodbc。操作如下:

1)      安装 UNIXODBC-2.3.0 的方法。

将压缩包上传到 linux  /usr/local 下,然后执行 

tar    -xzf  unixODBC-2.3.0.tar.gz

./configure

make    &&  make  install

通过 odbc_config   --version 确定odbc安装是否成功

2)       拷贝odbc动态库。

进入/usr/local/lib/下执行cp libodbc.so.2 dmhs/binlibodbc.so.1

然后另起一个终端窗口,进入DMHS目录执行./dmhs_console程序连接DMHS服务,进行字典装载操作后,启动捕获服务:

COPY 0 “SCH.NAME=’DMHS’” DICT

START CPT

image.png

     至此,完成DMHS同步服务启动。

image.png

2.1.3. 验证DMHS同步至kafka

  • 开启一个消费者界面,目前新版本一个对自动对应一个topic,这里我观察DMTEST的推送情况,所以topic就指定DMTEST

./kafka-console-consumer.sh --bootstrap-server 10.147.232.159:9092 --topic DMTEST --from-beginning

  • DM数据库上相关操作
  • 查看消费者端,会有类似以下消息推送过来。看到有数据推送过来,说明DMHS可以推送消息至KAFKA端。

  • image.png


Supongo que te gusta

Origin blog.51cto.com/15092136/2677651
Recomendado
Clasificación