现在要做一个案例,暂时的需求是这样的。客户那边是关系型数据库,我们这边也是关系型数据库。 首先我们会把客户那边的数据库copy一份,放在我们本地。然后具体的需求就是,客户那边对数据库中的数据进行修改、增加、删除的时候,我们这边的数据也可以实时同步。 我利用Kafka-connect可以实现了数据的新增、修改,可是删除一直实现不了,请问可以实现吗,还是说需要自己去写一些接口什么的呢?
下边是source和sink的配置
***source:***
name=mysql-b-source-comments
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:mysql://localhost/test?user=root&password=root
table.whitelist=comments
mode=timestamp
timestamp.column.name=commenttime
topic.prefix=mysql-kafka-
***sink:***
name=mysql-b-sink-comments
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
tasks.max=1
topics=mysql-kafka-comments
connection.url=jdbc:mysql://localhost:3306/test?user=root&password=root
auto.create=false
insert.mode=upsert
pk.mode = record_value
pk.fields = id
table.name.format=kafkacomments
连接器无法捕获从表中删除的行,因为连接器通过 JDBC 查询源表,因此无法查看从表中删除的行。
但是,你可以换一种
软删除
的方式。就是标记该行状态为删除
,你能捕获到更新,连接器就可以收到同步信息,最后你统一删除这些标记为删除的数据。如果说批处理的话我觉得可以搞定,那实时性的同步,不知道该怎么实现呢,麻烦再多提供一些思路,谢谢了
我没有了,基因决定了上层的可操作性。
谢谢!
你的答案