如何在不使用 Docker 或 Windows Server 2016 上的 Confluent 平台的情况下在 Kafka 中设置 Debezium SQL Server 连接器?
Posted
技术标签:
【中文标题】如何在不使用 Docker 或 Windows Server 2016 上的 Confluent 平台的情况下在 Kafka 中设置 Debezium SQL Server 连接器?【英文标题】:How do I set up a Debezium SQL Server connector in Kafka without using Docker nor the Confluent Platform on Windows Server 2016? 【发布时间】:2021-04-08 11:25:27 【问题描述】:我正在尝试在独立模式下使用 Kafka 捕获 SQL Server 数据库中的一些更改。 在这个任务中,Confluent 平台和 Docker 不是选项。
源数据库上的 CDC 已启用。在 Kafka 方面,我遇到了 Debezium 连接器的问题。我将在下面描述更多细节:
--- zookeeper.properties:
dataDir=C:/kafka_2.13-2.7.0/data
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
--- server.properties:
broker.id=0
listeners=PLAINTEXT://localhost:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=C:/kafka_2.13-2.7.0/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=30000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
auto.create.topics.enable=true
delete.topic.enable=true
--- sqlserver-source-connector.properties:
name=sqlserver-connector
connector.class=io.debezium.connector.sqlserver.SqlServerConnector
database.hostname=myhostname
database.port=1433
database.user=sa
database.password=mySuperSecretPassord
database.dbname=myDbName
database.server.name=myhostname
table.include.list=dbo.employes
database.history.kafka.bootstrap.servers=myhostname:9092
database.history.kafka.topic=dbhistory.fullfillment
key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
offset.storage.file.filename=C:/kafka_2.13-2.7.0/connect.offsets
bootstrap.servers=localhost:9092
--- file-employes-sink.properties:
name=file-employes-sink
connector.class=FileStreamSink
tasks.max=1
file=file-employes-sink.txt
topics=myhostname.dbo.EMPLOYES
当我尝试运行时
.\connect-standalone.bat ..\..\config\sqlserver-source-connector.properties ..\..\config\file-employes-sink.properties
并检查可以通过链接 http://localhost:8083/connectors 创建的连接器,这是我得到的:
[“文件-雇员-接收器”]
这意味着我只能创建我的接收器连接器,对吗? 我的源连接器呢?不应该列在这里吗?
【问题讨论】:
【参考方案1】:您需要提供connect-standalone.properties
作为connect-standalone
的第一个参数来配置worker
然后您提供两个连接器属性文件来启动两个连接器
您也可以使用 connect-distributed
及其属性文件,然后通过 HTTP POST 两个连接器配置
虽然 Confluent 平台不正式支持 Windows,但它仍然可以正常工作。 Docker 也会如此
【讨论】:
感谢您的回复。听从您的建议后,我遇到了一个新问题:“找不到任何实现 Connector 且名称与 io.debezium.connector.sqlserver.SqlServerConnector 匹配的类。”我已经在我的属性文件中添加了参数 plugin.path=C:/kafka_2.13-2.7.0/plugins ,并且 Debezium 文件夹也在此路径中,但它仍然无法正常工作。有什么想法吗? 我不确定你的“debezium 文件夹”中有什么,但只要你有plugins/debezium-connector-sqlserver/debezium-connector-sqlserver-[version].jar
,它应该可以工作,尽管我从未将 Windows 与任何 Kafka 工具一起使用
这只是connector.class参数值后面的一个空格。它现在正在工作。感谢您的帮助!
啊。随意使用帖子旁边的复选标记接受答案以上是关于如何在不使用 Docker 或 Windows Server 2016 上的 Confluent 平台的情况下在 Kafka 中设置 Debezium SQL Server 连接器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 Docker-Hub 的情况下共享我的 Docker-Image?
p5.js:如何在不改变背景或使用外部画布的情况下在画布形状上打孔?
如何在不使用 pull 命令的情况下下载 Docker 镜像?