Oracle Goldengate Big Data for Kafka 不生成 UPDATE 消息
OracleGoldengate BigData for Kafka does not produce UPDATE messages
我正在尝试使用 OGG BD (v12.3.2.1.1) 将所有更改从 Oracle DB (11.2.0.4) 传播到 Kafka 主题。
我得到了所有的基本设置,并且我正在监视的 schemas/tables 的 INSERT 和 DELETE 被捕获并在配置的主题上生成 Kafka 消息(每个 table 1 个主题)。到目前为止一切都符合预期。
但是对数据库的更新操作不起作用。他们没有产生任何错误,只是没有相应的消息出现在主题上。我已经使用 logdump 实用程序验证 UPDATE 实际上已传播到跟踪文件中,但 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 跟踪文件的日志转储(这是一个 UPDATE ... SET comment = 'foo122' WHERE 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)
编辑:错误消息
我说它没有产生错误信息我错了,我只是没有看到它。在丢弃文件 (.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 |
我发现了问题所在。我错过了将 ADD TRANDATA 添加到源数据库中所有表的步骤。我以前做过这个,但在测试期间我重新设置了整个模式,当然那些设置丢失了。
将它应用于所有表后,我现在开始看到以 Kafka 消息形式传入的更新。
我仍然需要了解如何在 Kafka 消息中生成完整的 before/after 图像,目前它只记录 ID 列和修改后的列。
我正在尝试使用 OGG BD (v12.3.2.1.1) 将所有更改从 Oracle DB (11.2.0.4) 传播到 Kafka 主题。
我得到了所有的基本设置,并且我正在监视的 schemas/tables 的 INSERT 和 DELETE 被捕获并在配置的主题上生成 Kafka 消息(每个 table 1 个主题)。到目前为止一切都符合预期。
但是对数据库的更新操作不起作用。他们没有产生任何错误,只是没有相应的消息出现在主题上。我已经使用 logdump 实用程序验证 UPDATE 实际上已传播到跟踪文件中,但 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 跟踪文件的日志转储(这是一个 UPDATE ... SET comment = 'foo122' WHERE 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)
编辑:错误消息
我说它没有产生错误信息我错了,我只是没有看到它。在丢弃文件 (.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 |
我发现了问题所在。我错过了将 ADD TRANDATA 添加到源数据库中所有表的步骤。我以前做过这个,但在测试期间我重新设置了整个模式,当然那些设置丢失了。
将它应用于所有表后,我现在开始看到以 Kafka 消息形式传入的更新。
我仍然需要了解如何在 Kafka 消息中生成完整的 before/after 图像,目前它只记录 ID 列和修改后的列。