我正在尝试使用基于Kafka Connect的Confluent在多个MySQL数据库之间同步数据。我在源连接器配置中使用“bulk”模式,因为主键类型是varchar,所以我无法使用递增模式。它工作正常,但我有两个问题:
这是我的源连接器配置:
name=test-source
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
tasks.max=1
connection.url=jdbc:mysql://xxx.xxx.xxx:3306/xxx?useUnicode=true&characterEncoding=utf8
connection.user=user
connection.password=password
mode=bulk
table.whitelist=a_table
这是我的接收器配置:
name=test-sink
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
tasks.max=1 topics=a_table
connection.url=jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx?useUnicode=true&characterEncoding=utf8
connection.user=user
connection.password=password
insert.mode=upsert
pk.mode=record_value
pk.fields=mypk
auto.evolve=true
任何建议都会受到赞赏。谢谢。
答案 0 :(得分:1)
如果要同步删除,则需要使用CDC,例如Debezium。 JDBC连接器只能检测那里的记录,而不能检测那些记录。
CDC也比批量提取更有效,因为它监视MySQL事务日志中所需表的任何事务。
您的主键是VARCHAR?哇。如果您不想使用CDC,我建议使用基于INT的密钥,然后使用JDBC连接器进行增量加载。那,或者在表中添加一个时间戳列,并将其用于增量。