达梦同步工具dmhs同步kafka配置

DMHS同步配置

1.1 系统环境
源端数据库 DM
目的端 kafka
同步软件 DMHS
1.2 同步规划
源端A机器
服务器IP:192.168.100.3
siteid:1
mgr_port:5345
目的端B机器
服务器IP:192.168.100.100
siteid:11
mgr_port:5345
data_port :5346
安装目录 /dmsoft/dmhs
注意:源端服务器为达梦数据库实例的主库或者备库,建议在备库安装dmhs同步软件,目的端的服务器可以安装在与kafka软件同一台服务器上,也可以单独部署前提是可以访问到kafak服务。
1.3 安装dmhs源端目的端软件
源端目的端安装dmhs软件
源端dm8安装包 dmhs_V4.1.59_dm8_rev102896_rh6_64_veri_20211021.bin
目的端kafka安装包 dmhs_V4.2.11_dm8-kafka_rev104232_rh6_64_veri_20211222.bin
安装过程:
在这里插入图片描述
在这里插入图片描述

1.4源端DMHS同步配置
1.4.1源端数据库开启归档日志打开逻辑日志
1)设置归档标记和逻辑日志标记。打开DM8 服务器配置文件“dm.ini”,设置如下值:
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1
2)添加归档配置文件。在“dm.ini”同目录下创建文件“dmarch.ini”
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /opt/dmdbms/arch #归档目录
ARCH_FILE_SIZE = 128 #归档文件大小,单位MB
ARCH_SPACE_LIMIT = 50000 #空间大小限制,0 表示不限制
3) 重启DM8 数据库,使配置参数生效
4) 验证配置的正确性
检查归档配置的正确性
SELECT ARCH_DEST, ARCH_FILE_SIZE FROM SYS.V$DM_ARCH_INI WHERE ARCH_TYPE=‘LOCAL’ AND ARCH_IS_VALID=‘Y’;

检查逻辑日志配置的正确性

SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = ‘RLOG_APPEND_LOGIC’;

如果归档已经打开可以登录数据库直接执行命令开启逻辑日志:
SQL>SP_SET_PARA_VALUE(1,’ RLOG_APPEND_LOGIC ',1);

1.4.2配置dmhs.hs配置文件

A机器:
[dmdba@bin]#vim /dmsoft/dmhs/bin/dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>en</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>192.168.100.3</db_server> 
        <db_user>TEST</db_user>  
        <db_pwd>TEST123456</db_pwd>
        <db_port>5236</db_port>
        <idle_time>300</idle_time>
        <update_fill_flag>2</update_fill_flag>
        <char_code>PG_UTF8</char_code> 
        <arch>
                <clear_interval>6000</clear_interval>
                <clear_flag>0</clear_flag>
        </arch>
        <send>
            <ip>192.168.100.100</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>
            <case_sensitive>0</case_sensitive>
            <filter>
                <enable>
<item>TEST.MYTEST</item>
                </enable>
                <disable></disable>
            </filter>
                <map/>
        </send>
    </cpt>
</dmhs>

dmhs.hs文件说明:
配置标签:<mgr_port>5345</mgr_port>
说明:dmhs进程启动后监听端口
配置标签:<siteid>1</siteid>
说明:dmhs同步节点标识不能与其他dmhs节点相同
配置标签:

 <db_server>192.168.100.3</db_server> 
 <db_user>TEST</db_user>  
 <db_pwd>TEST123456</db_pwd>
 <db_port>5236</db_port>

说明:dmhs同步的源端数据库的连接IP、同步用户、密码、数据库端口
配置标签:

	<send>
    <ip>192.168.100.100</ip>
    <mgr_port>5345</mgr_port>
    <data_port>5346</data_port>

说明:源端发送到目的端dmhs服务的IP,端口、数据端口
配置标签:

	<enable>
	<item>TEST.MYTEST</item>
    </enable>

说明:同步对象白名单

1.4.3DMHS启动脚本文件准备
在dmhs的bin目录下service_template目录中存放了 dmhs相关的所有脚本的模板,修改后即可使用
A机器:[dmdba@bin]# cd /dmsoft/dmhs/bin
A机器:[dmdba@bin]# cp -a DmhsService …/DmhsService
在这里插入图片描述
复制启动脚本模板:cp -a DmhsService …/DmhsService
在这里插入图片描述
修改dmhs启动脚本:
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
1.5目的端DMHS配置
1.5.1配置dmhs_kafka.properties文件

B机器:[dmdba@bin]#vim /dmsoft/dmhs/bin/dmhs_kafka.properties

# DMHS config file path
dmhs.conf.path=/dmsoft/dmhs/bin/dmhs.hs
# kafka broker list,such as ip1:port1,ip2:port2,...
bootstrap.servers=10.10.10.150:9092,10.10.10.151:9092
# kafka topic name
kafka.topic.name=DM_TOPIC
# whether to enable JSON format check
json.format.check=0
print.message.num=1000
# kafka serializer class
key.serializer=org.apache.kafka.common.serialization.StringSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
# kafka partitioner config
#partitioner.class=com.dameng.dmhs.dmga.service.impl.SimplePartitioner
partitioner.class=com.dameng.dmhs.dmga.service.impl.OnePartitioner
# kafka request acks config
acks=-1
#batch.size=16777216
#linger.ms=1000
max.request.size=5024000
dmhs.min.batch.size=3000
buffer.memory=268435456
retries=3
send.buffer.bytes=1048576
compression.type=none
metadate.max.age.ms=300000
max.in.flighr.requests.per.connection=1
producer.type=async
batch.size=524288
linger.ms=100

注意:根据实际情况替换标红处内容配置文件路径、topic地址及端口、topic名称(注意大小写区别与kafka端保持完全一致)
配置文件说明:
配置项:dmhs.conf.path=/dmsoft/dmhs/bin/dmhs.hs
说明:dmhs配置文件全目录
配置项:bootstrap.servers=10.10.10.150:9092,10.10.10.151:9092
说明:目的端kafka的连接IP及端口
配置项:kafka.topic.name=DM_TOPIC
说明:需要同步到目的端的kafka下的topic名称,此处区分大小写,注意与kafak中topic名称保持一致。
配置项:dmhs.min.batch.size=3000
说明:批量提交大小,可以根据kafka的同步业务量调整,同步压力大可以调高

1.5.2配置目的端dmhs.hs文件

B机器:
[dmdba@bin]#vim /dmsoft/dmhs/bin/dmhs.hs

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<dmhs>
    <base>
        <lang>en</lang>
        <version>2.0</version>
        <mgr_port>5345</mgr_port>
        <chk_interval>3</chk_interval>
        <ckpt_interval>60</ckpt_interval>
        <siteid>11</siteid>
    </base>
    <exec>
        <recv>
            <data_port>5346</data_port>
        </recv>
        <name>DM_TOPIC</name>
        <enable>1</enable>
        <char_code>PG_UTF8</char_code>
        <level>0</level>
        <exec_thr>16</exec_thr>
        <exec_sql>1024</exec_sql>
        <exec_trx>5000</exec_trx>
        <exec_rows>250</exec_rows>
        <recv_caches>8</recv_caches>
        <trxid_tables>1</trxid_tables>
        <exec_policy>2</exec_policy>
        <is_kafka>1</is_kafka>
        <json_format>file</json_format>
        <max_packet_size>16</max_packet_size>
    </exec>
</dmhs>

配置文件dmhs.hs说明:
配置标签:<mgr_port>5345</mgr_port>
说明:dmhs进程启动后监听端口
配置标签:<siteid>11</siteid>
说明:dmhs同步节点唯一标识,不能与其他dmhs的siteid相同
配置标签:<data_port>5346</data_port>
说明:dmhs目标端数据接收端口
配置标签:<name>DM_TOPIC</name>
说明:同步名称可以自定义

1.5.3启动脚本start_kafka_dmhs.sh文件配置
B机器:
[dmdba@bin]#vim /dmsoft/dmhs/bin/start_kafka_dmhs.sh

#!/bin/bash
ulimit -c unlimited
export LANG=zh_CN.UTF-8
java -Djava.ext.dirs=“/dmsoft/dmhs/bin/lib:.” com.dameng.dmhs.dmga.service.impl.ExecDMHSKafkaService /dmsoft/dmhs/bin/dmhs_kafka.properties

配置文件start_kafka_dmhs.sh说明:
配置项:java -Djava.ext.dirs
说明:指定dmhs连接kafka依赖包位置,依赖包是kafak安装后的lib目录下的所有文件,复制到目的端的该目录下,dmhs通过这些依赖文件连接kafka
配置项:/dmsoft/dmhs/bin/dmhs_kafka.properties
说明:dmhs同步配置文件位置

1.5.4目的端json_format.xml配置

B机器:[dmdba@bin]#vim /dmsoft/dmhs/bin/json_format.xml

char_replace=(",\"),(\,\\)
batch_commit=1
gs_flag=1
cur_time_format=(yyyy-mm-ddThh:mi:ss)
commit_time_format=(yyyy-mm-ddThh:mi:ss)
lob_piece=false
clob_format=char
set_null=1
opcmd_len=3
SET_QUOTA=1
need_crlf=false
json_format={"meta":{"time":"#COMMIT_TIME","userid":"#USERID","op":"#OP_TYPE","scn":"#LSN","rowid":"#ROWID","trans":"#TRXID","seq":#MSG_SEQ,"size":#MSG_NUM,"table":"#SCHEMA.#TABLE","idx":"#IDX","posttime":"#TIME"},"data":{#NEW_VALUES},"key":{#OLD_VALUES}}

参数说明:
char_replace=(“,”),(,\):该参数用于定义同步数据如果出现特殊字符‘\’需要通过该参数准换后同步输出为’',否则该特殊字符会丢失。
json_format:该参数用于配置同步后数据输出的格式,可以自定义设置输出格式。
1.5.5准备kafka依赖文件
将kafka软件安装目录下的lib目录下的全部文件打包复制到dmhs目的端的安装目录的bin目录下作为dmhs的依赖文件:
目录结构为:/dmsoft/dmhs/bin/lib/{kafka依赖文件}
在这里插入图片描述
1.6运行同步程序
1.6.1启动源端DMHS

A机器:[dmdba@bin]#/dmsoft/dmhs/bin/DmhsService start
在这里插入图片描述
1.6.2启动目的端DMHS
1.启动目的端dmhs服务

B机器:
[dmdba@bin]#cd /dmsoft/dmhs/bin/
[dmdba@bin]#nohup ./start_kafka_dmhs.sh &

2.启动目的端EXEC模块
B机器:
[dmdba@bin]#cd /dmsoft/dmhs/bin/
[dmdba@bin]#./dmhs_console
DMHS>start EXEC

1.6.3在源端配置数据库字典
在源端配置数据库字典并启动同步
A机器:
[dmdba@bin]#cd /dmsoft/dmhs/bin/
[dmdba@bin]#./dmhs_console
DMHS>clear exec lsn
DMHS> copy 0 “sch.name=‘TEST’ and tab.name=‘MYTEST’” dict
DMHS>start cpt
DMHS>

装载字典命令:
装载模式下全部表:
DMHS> copy 0 “sch.name=‘TEST’” dict
装载模式下某张表:
DMHS> copy 0 “sch.name=‘TEST’ and tab.name = ‘TEST_01’” dict
装载模式下某几张表:
DMHS> copy 0 “sch.name=‘TEST’ and tab.name in(‘TEST_01’,‘TEST_02’,‘TEST_03’)” dict

注意:首次配置dmhs同步链路可以在装载字典前使用命令:clear exec lsn,来清理同步历史信息,重源端数据库当前lsn开始同步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值