DM8->KAFKA部署手冊

前段時間在作國產化項目時,寫了一篇關於國產數據庫達夢實時同步軟件的介紹,簡單介紹了一下原理和框架。今天正好項目要搭建個DM8到Kafka的同步,本身琢磨了一下,這裏把搭建步驟分享出來。java

1. DMHS的安裝

1.1. 安裝

須要在源端和目的端分別安裝dmhs軟件,若是爲HA雙機環境,分別在兩臺服務器上安裝dmhslinux

1)     將安裝包上傳至服務器,並授予可執行權限sql

chmod  777 數據庫

dmhs_V3.1.3_dm8-kafka_rev82884sp3_rh7_64_veri_20190617.binbootstrap

 

2)     運行安裝程序服務器

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

3)     輸入key文件 框架

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

bin  -iui

Extract install files.........

Welecom to DMHS Install Program

Require Space:100M

Whether to input the path of Key File? (Y/y:yes   N/n:No)[Y/y]Y

Please Input the Path of the Key File [dmhs.key]:/home/dmdba/dmhs.key

4)       輸入安裝路徑

輸入安裝路徑

Please input the install path [/opt/dmhs]:/home/dmdba/dmhs

Available Space :1488M

Please Confirm the install path?(Y/y:yes   N/n:No)[Y/y]Y

5)     輸入安裝參數,[]中的爲默認值,直接輸入回車選擇默認值,該步驟參數也能夠隨便填寫,後期經過配置修改。其中源端和目的端的siteid要設置的不一樣(如源端使用1,目的端使用2)

Please input the language (ch/en)[ch]:ch

Please input the mgr_port (1000-65535)[5345]:

Please input the chk_interval (1-60) second[3]:

Please input the ckpt_interval (10-65536)   second[60]:

Please input the siteid (0-65536):1

Whether to config statistical analysis? (Y/y:Yes   N/n:No)[Y/y]

Please input the database type   (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 localhos

t:2181

  • 建立一個topic

[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --create --zookeeper local

host:2181 --replication-factor 1 --partitions 1 --topic DMHS

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

ver 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,這裏我觀察DMHS的推送狀況,因此topic就指定DMHS

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

  • DM數據庫上相關操做
  • 查看消費者端,會有相似如下消息推送過來。看到有數據推送過來,說明DMHS能夠推送消息至KAFKA端。


image.png

相關文章
相關標籤/搜索