1.2 配置
1.2.1修改源端和目的端dmhs.xml配置文件
源端配置内容如下:
<dmhs>
<base>
<lang>chlang>
<mgr_port>5345mgr_port>
<chk_interval>3chk_interval>
<ckpt_interval>60ckpt_interval>
<siteid>1siteid>
<version>2.0version>
base>
<cpt>
<db_type>dm8db_type>
<db_server>127.0.0.1db_server>
<db_user>SYSDBAdb_user>
<db_pwd>SYSDBAdb_pwd>
<db_port>5236db_port>
<dict_dir>/home/dmdba/dm/dmhs_kafka/dmhs_dictdict_dir>
<char_code>PG_GB18030char_code>
<arch>
<clear_interval>600clear_interval>
<clear_flag>1clear_flag>
arch>
<send>
<ip>10.147.232.159ip>
<mgr_port>5345mgr_port>
<data_port>5346data_port>
<net_pack_size>256net_pack_size>
<net_turns>0net_turns>
<crc_check>0crc_check>
<identity>0identity>
<filter>
<enable>
<item>*.*item>
enable>
<disable/>
filter>
<map>
map>
send>
cpt>
dmhs>
目的端配置文件内容如下:
<dmhs>
<base>
<lang>chlang>
<mgr_port>5345mgr_port>
<chk_interval>3chk_interval>
<ckpt_interval>60ckpt_interval>
<siteid>2siteid>
<version>2.0version>
base>
<exec>
<recv>
<data_port>5346data_port>
recv>
<db_name>db_name>
<exec_thr>1exec_thr>
<case_sensitive>0case_sensitive>
<exec_policy>2exec_policy>
<toggle_case>0toggle_case>
<commit_policy>1commit_policy>
<enable_merge>0enable_merge>
<is_kafka>1is_kafka>
exec>
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相关设置
1.3.1 查看当前有哪些topic
[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --list --zookeeper localhost:2181
1.3.2 创建一个topic
[dmdba@master kafka_2.11-1.1.0]$ bin/kafka-topics.sh --create --zookeeper localhost: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
1.3.3 查看消费者的界面是否有消息推送过来
[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.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"为kafka的libs目录以及DMHS 辅助jar包路径。
②com.dameng.dmhs.dmga.service.impl.ExecDMHSKafkaService 为DMHS实现kafka同步服务的类名。
③/home/dmdba/dm/dmhs_kafka/bin/dmhs.hs为DMHS配置文件dmhs.xml。
④10.147.232.159:9092为kafka集群节点。
⑤DMHS 为topic话题。topic可选,如果不填写topic,则每张表会建一个topic,名称即为表名。指定topic的话所有的表都填写在一个topic中,该topic话题必须和KAFKA话题一致。
以上各项路径参数根据实际环境进行修改。建议使用jdk1.7以上版本。
2.1.2. 启动服务
进入启动脚本目录,使用dmdba用户执行:
[dmdba@bigdata159 ~/dmhs_kafka/bin]$./start_dmhs_kafka.sh
DMHS执行服务自动启动并监听相应数据端口。
启动的时候如果有个报错,库文件 libdmhs_exec_dll.so 未找到,如下图所示:
[dmdba@bigdata159 ~/dmhs_kafka/bin]$ldd libdmhs_exec_dll.so
原因是有依赖问题,ldd一下把依赖解决就好。
处理过程中遇到缺少libodbc.so.1的动态库需要安装一下unixodbc。操作如下:
1) 安装 UNIXODBC-2.3.0 的方法。
将压缩包上传到 linux usr/local 下,然后执行
[root@bigdata159 usr/local]#tar -xzf unixODBC-2.3.0.tar.gz
[root@bigdata159 /usr/local]#cd unixODBC-2.3.0
[root@bigdata159 unixODBC-2.3.0]#./configure
[root@bigdata159 unixODBC-2.3.0]#make && make install
通过 odbc_config --version 确定odbc安装是否成功
2) 拷贝odbc动态库。
进入/usr/local/lib/下执行cp libodbc.so.2 到dmhs/bin下libodbc.so.1,然后另起一个终端窗口,进入DMHS目录执行./dmhs_console程序连接DMHS服务,进行字典装载操作后,启动捕获服务:
[dmdba@bigdata159 libs]./dmhs_console
DMHS >connect 223.254.19.139:5345
DMHS >COPY 0 “SCH.NAME=’DMHS’” DICT
DMHS >START CPT
至此,完成DMHS同步服务启动。
2.1.3. 验证DMHS同步至kafka
开启一个消费者界面,目前新版本一个对自动对应一个topic,这里我观察DMHS的推送情况,所以topic就指定DMHS。
./kafka-console-consumer.sh --bootstrap-server 10.147.232.159:9092 --topic DMHS--from-beginning