Debezium MS SQL Server 连接器问题

时间:2021-03-14 22:49:13

标签: sql-server apache-kafka apache-kafka-connect debezium

这里是卡夫卡新手。

环境设置

操作系统:Ubuntu 20.04

Kafka 安装在本地计算机上的主文件夹中。 Kafka 和 Zookeeper 服务都在运行。

我正在尝试配置 Kafka 连接以连接到我使用以下命令构建的 SQL Server 容器中托管的数据库

docker run --name SQL19 -p 1433:1433 -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password258*" -e "MSSQL_AGENT_ENABLED=True" -v ~/SqlDockerVol/userdatabase:/userdatabase -v ~/SqlDockerVol/sqlbackups:/sqlbackups -d mcr.microsoft.com/mssql/server:2019-latest

容器正在运行并且可以成功连接。

我在数据库级别和表级别启用了 CDC。

EXEC sys.sp_cdc_enable_db
GO
EXEC sys.sp_cdc_enable_table
    @source_schema = N'dbo',
    @source_name   = N'WorkQueue',
    @role_name     = NULL,
    @supports_net_changes = 1

连接器属性文件

name= DebeziumSQLServerconnector 
connector.class= io.debezium.connector.sqlserver.SqlServerConnector 
database.hostname=linuxdesktop 
database.port= 1433 
database.user= sa 
database.password= Password258* 
database.dbname= mydb 
database.server.name= linuxdesktop 
table.include.list= dbo.WorkQueue 
database.history.kafka.bootstrap.servers= linuxdesktop:9092 
database.history.kafka.topic= dbhistory.mydb 

connect-standalone.properties plugin.path

plugin.path=/home/vinu/kafka-server/connector

我将所有 .JAR 文件复制到 plugin.path 中

然后我尝试使用以下命令启动连接器

~/kafka-server/bin/connect-standalone.sh ~/kafka-server/config/connect-standalone.properties  DebeziumSQLServerconnector.properties

但进程无法启动并收到以下错误消息

<块引用>

2021-03-15 13:36:36,752] 错误无法创建作业 DebeziumSQLServerconnector.properties (org.apache.kafka.connect.cli.ConnectStandalone:110) [2021-03-15 13:36:36,753] 错误连接器错误后停止 (org.apache.kafka.connect.cli.ConnectStandalone:121) java.util.concurrent.ExecutionException: org.apache.kafka.connect.errors.ConnectException:找不到任何 实现连接器且名称匹配的类 io.debezium.connector.sqlserver.SqlServerConnector ,可用 连接器是: PluginDesc{klass=class io.debezium.connector.sqlserver.SqlServerConnector, name='io.debezium.connector.sqlserver.SqlServerConnector', version='1.4.2.Final',encodedVersion=1.4.2.Final,type=source, 类型名称='来源', location='file:/home/vinu/kafka-server/connector/debezium-connector-sqlserver/'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=sink,typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockConnector, name='org.apache.kafka.connect.tools.MockConnector', version='2.7.0', 编码版本=2.7.0,类型=连接器,类型名称=“连接器”, location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSinkConnector, name='org.apache.kafka.connect.tools.MockSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=sink,typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSourceConnector, name='org.apache.kafka.connect.tools.MockSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.SchemaSourceConnector, name='org.apache.kafka.connect.tools.SchemaSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSinkConnector, name='org.apache.kafka.connect.tools.VerifiableSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSourceConnector, name='org.apache.kafka.connect.tools.VerifiableSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'} 在 org.apache.kafka.connect.util.ConvertingFutureCallback.result(ConvertingFutureCallback.java:115) 在 org.apache.kafka.connect.util.ConvertingFutureCallback.get(ConvertingFutureCallback.java:99) 在 org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:118) 引起:org.apache.kafka.connect.errors.ConnectException:失败 查找任何实现连接器且名称匹配的类 io.debezium.connector.sqlserver.SqlServerConnector ,可用 连接器是: PluginDesc{klass=class io.debezium.connector.sqlserver.SqlServerConnector, name='io.debezium.connector.sqlserver.SqlServerConnector', version='1.4.2.Final',encodedVersion=1.4.2.Final,type=source, 类型名称='来源', location='file:/home/vinu/kafka-server/connector/debezium-connector-sqlserver/'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSinkConnector, name='org.apache.kafka.connect.file.FileStreamSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=sink,typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.file.FileStreamSourceConnector, name='org.apache.kafka.connect.file.FileStreamSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorCheckpointConnector, name='org.apache.kafka.connect.mirror.MirrorCheckpointConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorHeartbeatConnector, name='org.apache.kafka.connect.mirror.MirrorHeartbeatConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.mirror.MirrorSourceConnector, name='org.apache.kafka.connect.mirror.MirrorSourceConnector', version='1',encodedVersion=1,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockConnector, name='org.apache.kafka.connect.tools.MockConnector', version='2.7.0', 编码版本=2.7.0,类型=连接器,类型名称=“连接器”, location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSinkConnector, name='org.apache.kafka.connect.tools.MockSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=sink,typeName='sink', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.MockSourceConnector, name='org.apache.kafka.connect.tools.MockSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.SchemaSourceConnector, name='org.apache.kafka.connect.tools.SchemaSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSinkConnector, name='org.apache.kafka.connect.tools.VerifiableSinkConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'}, PluginDesc{klass=class org.apache.kafka.connect.tools.VerifiableSourceConnector, name='org.apache.kafka.connect.tools.VerifiableSourceConnector', version='2.7.0',encodedVersion=2.7.0,type=source,typeName='source', location='classpath'} 在 org.apache.kafka.connect.runtime.isolation.Plugins.connectorClass(Plugins.java:208) 在 org.apache.kafka.connect.runtime.isolation.Plugins.newConnector(Plugins.java:180) 在 org.apache.kafka.connect.runtime.AbstractHerder.getConnector(AbstractHerder.java:572) 在 org.apache.kafka.connect.runtime.AbstractHerder.validateConnectorConfig(AbstractHerder.java:342) 在 org.apache.kafka.connect.runtime.AbstractHerder.lambda$validateConnectorConfig$1(AbstractHerder.java:326) 在 java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 java.base/java.lang.Thread.run(Thread.java:834)

可能是什么问题?

注意 所有 Kafka 组件都安装在本地机器上。我设置中唯一的容器是 SQL Server。

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

available connectors 列出了类,所以你的插件没问题。

你有空间问题。注意日志输出逗号的位置

matches io.debezium.connector.sqlserver.SqlServerConnector ,

从整个属性文件中删除尾随空格和值前的前导空格

答案 1 :(得分:0)

您不得将连接器 JAR 放入 /home/vinu/kafka-server/connector 中,而应放入 /home/vinu/kafka-server/connector/debezium-sqlserver-connector 或任何其他名称中。 连接器未放置到 plugin.path,而是每个连接器放置到 plugin.path 中的单独目录。