Ogg 支持一张表投递多个topic

Ogg 支持一张表投递多个topic

验证如下
cd /service/ogg

进入 ogg采集目录

然后使用 ./ggsci 命令进入 ogg 命令行

采集进程

在这里插入图片描述
配置 采集进程

edit param extp

extract extp
setenv (nls_lang="american_america.ZHS16GBK")
userid oggadmin@pacs, password root1234
reportcount every 30 minutes, rate
discardfile /service/ogg/dirrpt/trail.dsc, append, megabytes 4096
discardrollover at 3:00
warnlongtrans 2h, checkinterval 300
exttrail /service/ogg/dirdat/pc
--dynamicresolution
dboptions allowunusedcolumn
fetchoptions nousesnapshot
fetchoptions fetchpkupdatecols
Tranlogoptions integratedparams (max_sga_size 256)
GETUPDATEAFTERS
--TRANLOGOPTIONS DBLOGREADER
GETUPDATEBEFORES
 
TABLE  oms.T_MA_TB_SHOP_INFO                                ;

wq! 保存配置 ,添加一个ext1的进程

 GGSCI (localhost.localdomain as ogg@orcl) 9> add extract extp,tranlog,begin now
 EXTRACT added.  
 GGSCI (localhost.localdomain as ogg@orcl) 10> add exttrail /service/ogg/dirdat/pc,extract extp
 EXTRACT added.   

然后启动采集进程

start extp

停止命令 stop extp

投递进程1

cd /service/ogg2

进入 ogg投递目录

然后使用 ./ggsci 命令进入 ogg2 命令行

配置 投递进程repzc

edit param repzc

REPLICAT repzc
 
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka_paczc.props
 
REPORTCOUNT EVERY 1 MINUTES, RATE
 
GROUPTRANSOPS 10000
 
map  oms.T_MA_TB_SHOP_INFO                         ,target  oms.T_MA_TB_SHOP_INFO                                ;

添加replicat 设置trail文件与检查点

 GGSCI (localhost.localdomain) 26> add replicat repzc exttrail /service/ogg/dirdat/pc
 REPLICAT added.

配置kafka文件
然后新起一个窗口 使用root用户进入

cd /service/ogg2/dirprm

[root@localhost dirprm]# vi kafka_paczc.props

gg.handlerlist = kafkahandler
gg.handler.kafkahandler.type = kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer_pactest.properties
#gg.handler.kafkahandler.format =json
#gg.handler.kafkahandler.format=delimitedtext
gg.handler.kafkahandler.topicMappingTemplate= TP_pacs_uat
 
#json
gg.handler.kafkahandler.format = json
gg.handler.kafkahandler.format.insertOpKey = I
gg.handler.kafkahandler.format.updateOpKey = U
gg.handler.kafkahandler.format.deleteOpKey = D
gg.handler.kafkahandler.format.prettyPrint = true
gg.handler.kafkahandler.format.jsonDelimiter = CDATA[]
#gg.handler.kafkahandler.format.generateSchema = true
gg.handler.kafkahandler.format.schemaDirectory = dirdef
#gg.handler.kafkahandler.format.treatAllColumnsAsString = true
gg.handler.kafkahandler.format.includePrimaryKeys = true
#gg.handler.kafkahandler.format.includeColumnNames=true
#gg.handler.kafkahandler.format.fieldDelimiter=♫
gg.handler.kafkahandler.SchemaTopicName= TP_bi_pacs_zc
gg.handler.kafkahandler.BlockingSend =false
gg.handler.hdfs.format.pkUpdateHandling=update
gg.handler.kafkahandler.includeTokens=true
gg.handler.kafka.topicPartitioning=table
gg.handler.kafkahandler.keyMappingTemplate=${
    
    primaryKeys}
 
#gg.handler.kafkahandler.topicMappingTemplate=${
    
    tableName}
#gg.handler.kafkahandler.keyMappingTemplate=${
    
    primaryKeys}
gg.handler.kafkahandler.mode =op
  
#gg.handler.kafkahandler.mode =tx
  
#gg.handler.kafkahandler.maxGroupSize =100, 1Mb
#gg.handler.kafkahandler.minGroupSize =50, 500Kb
  
  
goldengate.userexit.timestamp=utc+8
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUE
  
gg.log=log4j
gg.log.level=INFO
  
gg.report.time=30sec
gg.classpath=dirprm/:/service/software/kafka_2.10-0.10.0.1/libs/*:/service/ogg/ggjava/resources/lib/*
javawriter.bootoptions=-Xmx1024m -Xms1024m -Djava.class.path=ggjava/ggjava.jar

[root@localhost dirprm]# vi custom_kafka_producer_pactest.properties

bootstrap.servers=10.88.108.25:9092,10.88.108.26:9092,10.88.108.27:9092
 
#bootstrap.servers=10.11.12.41:9092,10.11.12.42:9092,10.11.12.43:9092
#bootstrap.servers=10.11.12.41:19192,10.11.12.42:29292,10.11.12.43:39392
acks=1
 
reconnect.backoff.ms=1000
 
max.request.size = 502400000
 
send.buffer.bytes = 502400000
value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
key.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
batch.size=16384
linger.ms=0

配好 然后切换到 ogg2命令行 使用start REPZC 启动 进程1

在这里插入图片描述投递进程1 投递到kafka TP_pacs_uat
在这里插入图片描述投递进程2
cd /service/ogg2

进入 ogg投递目录

然后使用 ./ggsci 命令进入 ogg2 命令行

配置 投递进程repzc

edit param rep3

REPLICAT  rep3
 
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafka_paczc2.props
 
REPORTCOUNT EVERY 1 MINUTES, RATE
 
GROUPTRANSOPS 10000
 
map  OMS.T_MA_TB_SHOP_INFO                          ,target   OMS.T_MA_TB_SHOP_INFO                                 ;

添加replicat 设置trail文件与检查点

 GGSCI (localhost.localdomain) 26> add replicat repzc exttrail /service/ogg/dirdat/pc
 REPLICAT added.

配置kafka文件
然后新起一个窗口 使用root用户进入

cd /service/ogg2/dirprm

[root@localhost dirprm]# vi kafka_paczc2.props

注意 :这里的 gg.handler.kafkahandler.topicMappingTemplate= topic_pacs_sit 一点要和上面的不一样

gg.handlerlist = kafkahandler
gg.handler.kafkahandler.type = kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=custom_kafka_producer_pactest.properties
#gg.handler.kafkahandler.format =json
#gg.handler.kafkahandler.format=delimitedtext
gg.handler.kafkahandler.topicMappingTemplate= topic_pacs_sit
#json
gg.handler.kafkahandler.format = json
gg.handler.kafkahandler.format.insertOpKey = I
gg.handler.kafkahandler.format.updateOpKey = U
gg.handler.kafkahandler.format.deleteOpKey = D
gg.handler.kafkahandler.format.prettyPrint = true
gg.handler.kafkahandler.format.jsonDelimiter = CDATA[]
#gg.handler.kafkahandler.format.generateSchema = true
gg.handler.kafkahandler.format.schemaDirectory = dirdef
#gg.handler.kafkahandler.format.treatAllColumnsAsString = true
gg.handler.kafkahandler.format.includePrimaryKeys = true
#gg.handler.kafkahandler.format.includeColumnNames=true
#gg.handler.kafkahandler.format.fieldDelimiter=♫
gg.handler.kafkahandler.SchemaTopicName= topic_pacs_sit
gg.handler.kafkahandler.BlockingSend =false
 
gg.handler.hdfs.format.pkUpdateHandling=update
gg.handler.kafkahandler.includeTokens=true
gg.handler.kafka.topicPartitioning=table
gg.handler.kafkahandler.keyMappingTemplate=${
    
    primaryKeys}
 
#gg.handler.kafkahandler.topicMappingTemplate=${
    
    tableName}
#gg.handler.kafkahandler.keyMappingTemplate=${
    
    primaryKeys}
gg.handler.kafkahandler.mode =op
  
#gg.handler.kafkahandler.mode =tx
  
#gg.handler.kafkahandler.maxGroupSize =100, 1Mb
#gg.handler.kafkahandler.minGroupSize =50, 500Kb
  
  
goldengate.userexit.timestamp=utc+8
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUE
  
gg.log=log4j
gg.log.level=INFO
  
gg.report.time=30sec
gg.classpath=dirprm/:/service/software/kafka_2.10-0.10.0.1/libs/*:/service/ogg/ggjava/resources/lib/*
javawriter.bootoptions=-Xmx1024m -Xms1024m -Djava.class.path=ggjava/ggjava.jar

配好 然后切换到 ogg2命令行 使用start REP3 启动 进程2

投递进程1 投递到kafka topic_pacs_sit
在这里插入图片描述在这里插入图片描述验证结果如下:

分别去两个topic 去查询 有没有相关表数据 进入

TP_pacs_uat查询结果如下
在这里插入图片描述
在这里插入图片描述topic_pacs_sit查询结果如下
在这里插入图片描述在这里插入图片描述即可说明 同一表只要配置一个采集进程 多个投递进程 ,即可分别投递到不同的topic

问题记录:
如果投递没有数据进入kafka

用 命令 info 投递进程名 查询进程信息

在这里插入图片描述

可以看到没进数据的 采集 REP3 读取的 位置不对

使用 alter REP3 extseqno 0087,extrba 0 重新初始化 即可

Guess you like

Origin blog.csdn.net/weixin_43564627/article/details/118961372
Recommended