我正在使用oggbd(v12.3.2.1.1)进行试验,以将所有更改从oracledb(11.2.0.4)传播到kafka主题。
我得到了基本的设置所有工作,插入和删除我监视的模式/表被捕获,并在配置的主题上生成kafka消息(每个表一个主题)。一切如预期。
但是数据库上的更新操作不起作用。它们不会产生任何错误,只是没有相应的消息出现在主题上。我已经用logdump实用程序验证了更新实际上已经传播到了trail文件中,但是kafkahandler没有接收到它。
有什么问题吗?配置如下
ogg prm文件
SETENV (TZ = "UTC")
REPLICAT kafkajsn
TARGETDB LIBFILE libggjava.so SET property=dirprm/kafkajsn.props
REPORTCOUNT EVERY 1 MINUTES, RATE
REPERROR DEFAULT DISCARD
APPLYNOOPUPDATES
ALLOWNOOPUPDATES
GETTRUNCATES
GETUPDATEBEFORES
DDL INCLUDE MAPPED
GROUPTRANSOPS 100
-- all tables have an 'ID' column
MAP *.*, TARGET *.*, KEYCOLS(ID);
kafkahandler参数文件
gg.handlerlist = kafkahandler
gg.handler.kafkahandler.type=kafka
gg.handler.kafkahandler.KafkaProducerConfigFile=kafka_producer.properties
gg.handler.kafkahandler.topicMappingTemplate=${schemaName}_${tableName}
gg.handler.kafkahandler.keyMappingTemplate=${primaryKeys}
gg.handler.kafkahandler.SchemaTopicName=SCHEMA_CHANGES
gg.handler.kafkahandler.mode=op
gg.handler.kafkahandler.format=json_row
gg.handler.kafkahandler.format.includePrimaryKeys=true
gg.classpath=dirprm/:/etc/kafka/conf:/usr/hdp/current/kafka-broker/libs/*
javawriter.bootoptions=-Xmx1g -Xms1g -Djava.class.path=ggjava/ggjava.jar
replicat的跟踪文件的日志转储(这是一个更新。。。设置注解='foo122',其中id=…)
2019/05/04 21:10:02.000.601 GGSUnifiedUpdate Len 30 RBA 64926561
Name: ORDER (TDR Index: 19)
After Image: Partition 12 G s
0c00 0000 0400 0800 0000 0400 666f 6f31 0400 0a00 | ............foo1....
0000 0600 666f 6f31 3232 | ....foo122
Before Image Len 16 (x00000010)
BeforeColumnLen 12 (x0000000c)
Column 4 (x0004), Len 8 (x0008)
After Image Len 14 (x0000000e)
Column 4 (x0004), Len 10 (x000a)
编辑:错误消息
当我说它没有产生错误信息时,我错了,我只是没有看到它。在discard文件(.dsc)中
Operation failed at seqno 45 rba 108411
Discarding record on action DISCARD on error 0
Problem replicating ORDER to ORDER
Mapping problem with unified update record (target format)...
*
TRANSACTION_COMMENT = folkjhlkjhlkjhkljl jk lj5345u
000000: 66 6f 6c 6b 6a 68 6c 6b 6a 68 6c 6b 6a 68 6b 6c |folkjhlkjhlkjhkl|
000010: 6a 6c 20 6a 6b 20 6c 6a 35 33 34 35 75 |jl jk lj5345u |
TRANSACTION_COMMENT = folkjhlkjhlkjhkljl jk ljjhlkjhlkh5345u
000000: 66 6f 6c 6b 6a 68 6c 6b 6a 68 6c 6b 6a 68 6b 6c |folkjhlkjhlkjhkl|
000010: 6a 6c 20 6a 6b 20 6c 6a 6a 68 6c 6b 6a 68 6c 6b |jl jk ljjhlkjhlk|
000020: 68 35 33 34 35 75 |h5345u |
1条答案
按热度按时间uqcuzwp81#
我发现了问题所在。我错过了将trandata添加到源数据库中所有表的步骤。我以前做过这个,但是在测试过程中我重新设置了整个模式,当然那些设置丢失了。
将它应用到所有表之后,我现在开始看到更新以kafka消息的形式出现。
我仍然需要找出如何在kafka消息中生成完整的before/after图像,目前它只记录id列和修改的列。