JDBC融合连接器模式

时间:2019-05-29 17:20:40

标签: jdbc apache-kafka apache-kafka-connect confluent

我在JDBC kafka源连接器中使用自定义查询,如果我使用批量模式,谁能告诉我在JDBC kafka源连接器中使用自定义查询时的模式是什么,那么它将重新插入kafka主题中的所有数据。 注意:-我的表中没有任何主键或时间戳列。

2 个答案:

答案 0 :(得分:0)

您可以使用incrementing or timestamp

  

incrementing -在每个表上使用严格递增的列来   仅检测新行。请注意,这不会检测到修改或   删除现有行。

     

timestamp -使用时间戳记(或   类似于timestamp的列)来检测新行和修改过的行。假设   该列随每次写入而更新,并且值是   单调递增,但不一定唯一。

     

timestamp+incrementing -使用两列,即时间戳列,   检测新行和修改行以及严格递增的列   提供用于更新的全局唯一ID,以便可以分配每一行   唯一的流偏移量。

timestamp的示例:

name=mysql-source-test
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10

connection.url=jdbc:mysql://mysql.example.com:3306/my_database?user=myuser&password=mypass
table.whitelist=users,products

mode=timestamp
timestamp.column.name=last_modified

topic.prefix=mysql-test-

incrementing的示例:

name=mysql-source-test
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10

connection.url=jdbc:mysql://mysql.example.com:3306/my_database?user=myuser&password=mypass
table.whitelist=users,products

mode=incrementing
incrementing.column.name=id

topic.prefix=mysql-test-

timestamp+incrementing的示例:

name=mysql-source-test
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=10

connection.url=jdbc:mysql://mysql.example.com:3306/my_database?user=myuser&password=mypass
table.whitelist=users,products

mode=timestamp+incrementing
incrementing.column.name=id
timestamp.column.name=last_modified

topic.prefix=mysql-test-

答案 1 :(得分:0)

如果没有时间戳或ID列递增,则无法进行基于查询的CDC,只能进行批量加载。

您的替代选择是将基于日志的CDC与Debezium等工具一起使用。

此演讲详细介绍了每个可用选项和工具:http://rmoff.dev/ksny19-no-more-silos