【发布时间】:2019-10-18 10:25:36
【问题描述】:
我想使用 Kafka 发布 MSSQL CDC 事件。
我将 Docker 容器用于:
- debezium/动物园管理员
- debezium/kafka
- debezium/连接
- Microsoft SQL Server
容器启动如下:
docker run -it --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper
docker run -it --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka
docker run -it --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my-connect-configs -e OFFSET_STORAGE_TOPIC=my-connect-offsets -e ADVERTISED_HOST_NAME="localhost" --link zookeeper:zookeeper --link kafka:kafka debezium/connect
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=xxxxxxxxxxxxx" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2017-CU8-ubuntu
所有容器开始成功运行。
然后我在 SQL Server 容器中创建了新的 MSSQL 数据库。在新数据库中创建了 1 个表并为该表打开了 CDC。疾控中心工作正常。
然后我将下面的连接器配置发送到 Kafka Connect REST API,如下所示:
curl -X POST -H "Content-Type: application/json" -d @test-mssql-connector.json http://localhost:8083/connectors
使用 test-mssql-connector.json
{
"name": "test-mssql-connector5",
"config": {
"connector.class": "io.debezium.connector.sqlserver.SqlServerConnector",
"database.hostname": "localhost",
"database.port": "1433",
"database.user": "SA",
"database.password": "xxxxxxxxxxxxx",
"database.dbname": "test",
"database.server.name": "sql1",
"table.whitelist": "dbo.Persons",
"database.history.kafka.bootstrap.servers": "kafka:9092",
"database.history.kafka.topic": "dbhistory.sql1"
}
}
但是,Kafka 连接器无法连接到 MSSQL 数据库,并给出以下错误消息:
com.microsoft.sqlserver.jdbc.SQLServerException: TCP/IP 连接 到主机 localhost,端口 1433 失败。错误:\“连接 拒绝了。验证连接属性。确保一个实例 的 SQL Server 正在主机上运行并接受 TCP/IP 连接 在港口。确保与端口的 TCP 连接不 被防火墙阻止。
大多数故障排除是如果数据库实际运行,或者端口被阻塞,但新的 MSSQL 数据库没有问题。它的容器处于活动状态,并且数据库正在成功运行。端口没有被阻塞。我可以使用 DbVisualizer 或其他具有以下配置的查询工具从主机成功连接到它:
- 数据库服务器 = 本地主机
- 数据库端口 = 1433
- 用户 = SA
- 密码 = xxxxxxxxxxxxx
- 数据库名称 = 测试
我可以成功使用 telnet localhost 1433 连接到服务器。
上面的连接器配置中是否缺少某些内容?
【问题讨论】:
标签: sql-server apache-kafka-connect debezium