kafka connect jdbc
前提:安装kafka zk
文章目录
前言
解决小数据量的数据同步问题,支持新增和修改,不支持删除
一、kafka启动命令
./bin/kafka-server-start.sh ./config/server.properties
./bin/connect-distributed.sh ./config/connect-distributed.properties
二、使用步骤
1.启动成功之后调用注册源接口,注册SourceConnector
代码如下(示例):
http://ip:{kafkaconnect的port}/connectors/
{
"name":"topic-sit-upload-mysql",
"config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url":"jdbc:mysql://192.168.12.11:3306/test?user=root&password=123456",
"table.whitelist":"users_input",
"incrementing.column.name":"uid",
"mode":"bulk",
"topic.prefix":"topic-sit-"
}
}
参数说明
name:connector的名称
config:所有connector的配置信息
connector.class:指定的Connector类(Source or Sink)
connection.url:MySQL的连接url
table.whitelist:表名,多个用逗号分隔
incrementing.column.name:主键
mode:指定connector的模式,这里为增量模式(JDBC连接器有四种模式:bulk、timestamp、incrementing、timestamp+incrementing。我将最后三个分组为增量,因为它们共享相同的基本概念)
topic.prefix:Kafka会创建一个Topic,该配置项就是用于指定Topic名称的前缀,后缀为数据表的名称。例如在本例中将生成的Topic名称为:topic-sit-users_input
2.注册JdbcSinkConnector
代码如下(示例):
{"name":"topic-sit-download-mysql","config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url":"jdbc:mysql://192.168.12.11:3306/test?user=root&password=123456",
"topics":"topic-sit-users_input",
"auto.create":"false",
"insert.mode": "upsert",
"pk.mode":"record_value",
"pk.fields":"uid",
"table.name.format": "users_output"}}
总结
本文中主要主要kafka connect 使用SourceConnector从数据源中读取数据写入到Kafka中,然后再通过SinkConnector读取KafkaTopic中的数据输出到另一端(MySQL,也可以是另外的库)。