Kafka 连接 MySQL 来源

Kafka Connect with MySQL Source

在开始之前,我想首先声明我对 Kafka 是全新的,对 Linux 也是相当陌生,所以如果这最终成为一个简单得可笑的答案,请多多包涵! :)

我正在尝试做的事情的高级想法是使用 Confluent 的 Kafka Connect 从 MySQL 数据库中读取,该数据库在一分钟或一分钟内将传感器数据流式传输到它,然后使用 Kafka 作为 "ETL pipeline" 立即将该数据路由到数据仓库 and/or MongoDB 以进行报告,甚至直接从我们的网络应用程序连接到 Kafka。

我正在使用 Robin Moffatt 的 series as well as Confluent's JDBC Source Connector Quickstart 作为我的初始指南。至于这些托管的位置,我使用的是 Amazon RDS MySQL 数据库和一个单独的 AWS EC2 t2.large 实例,其中 Ubuntu 16.04.2 到 运行 Kafka Connect。

使用 Robin 的工作流程,我已经创建了配置文件,但我没有使用他使用的 json 格式。我使用的是快速入门文章中的格式。

name=jdbc_source_mysql_4427_Data       
connector.class=io.confluent.connect.jdbc.JdbcSourceConnector
key.converter=io.confluent.connect.avro.AvroConverter
key.converter.schema.registry.url=http://localhost:8081
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://localhost:8081
connection.url=jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*****                
table.whitelist=4427_Data              
mode=timestamp                
timestamp.column.name=TmStamp               
validate.non.null=false                
topic.prefix=mysql-

保存在:

/etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties

我然后运行:

/usr/bin/confluent load jdbc_source_mysql_4427_Data  -d /etc/kafka-connect-jdbc/kafka-connect-jdbc-source.properties

并得到这个错误:

{
  "error_code": 400,
  "message": "Connector configuration is invalid and contains the following 2 error(s):\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nInvalid value java.sql.SQLException: No suitable driver found for jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=*** for configuration Couldn't open connection to jdbc:mysql://lndbtest.cdveaddpnevv.us-east-2.rds.amazonaws.com:3306/LNDBv1?user=adminRDS&password=***\nYou can also find the above list of errors at the endpoint `/{connectorType}/config/validate`"
}

好像是驱动问题。我现在的问题是,"Do I need to download the MySQL JDBC driver to my EC2 instance, or should that have been included in the Confluent Platform package?"

此外,我的总体想法听起来是否适合 Kafka Connect?

正如我之前提到的,我是这些技术的新手,但我发现最好的学习方法是直接投入并尝试解决问题。任何想法和建议都将非常受欢迎。谢谢!

整体概念对我来说很有意义。您确实需要下载驱动程序并将其添加到您的工作程序类路径中。它没有打包,我认为是出于许可原因。

正如@dawsaw 所说,您确实需要使 MySQL JDBC 驱动程序可用于连接器。

我在这里的观察是——在你描述的所有应用程序和架构中自由发挥——最好从传感器流式传输到 Kafka,然后从 Kafka 流式传输到 MySQL,Mongo、webapp 等

如果可以的话,流式传输到数据库中然后流出数据库并不是一个完美的选择。

因为confluent的发行版中没有mysql驱动。我认为您可以通过下载 mysql 驱动程序 jar 文件,然后将其放入 confluent/share/java/kafka-connect-jdbc 文件夹并重新 运行 程序来解决问题。