Когда я пытаюсь подключить Debezium к моей базе данных SQL Server после включения функции CDC, у меня появляется это сообщение об ошибке:
java.lang.RuntimeException: Couldn't obtain database name,
at io.debezium.connector.sqlserver.SqlServerConnection.retrieveRealDatabaseName(SqlServerConnection.java:364),
at io.debezium.connector.sqlserver.SqlServerConnection.<init>(SqlServerConnection.java:84),
at io.debezium.connector.sqlserver.SqlServerConnectorTask.start(SqlServerConnectorTask.java:86),
at io.debezium.connector.common.BaseSourceTask.start(BaseSourceTask.java:47),
at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:198),
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:175),
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:219),
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511),
at java.util.concurrent.FutureTask.run(FutureTask.java:266),
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149),
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624),
at java.lang.Thread.run(Thread.java:748),
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:bce7b974-bac3-4068-b85f-271ba41295e4".,
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2670),
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1837),
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2257),
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1921),
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1762),
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1077),
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:623),
at io.debezium.jdbc.JdbcConnection.lambda$patternBasedFactory$1(JdbcConnection.java:179),
at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:734),
at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:729),
at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:516),
at io.debezium.jdbc.JdbcConnection.queryAndMap(JdbcConnection.java:391),
at io.debezium.connector.sqlserver.SqlServerConnection.retrieveRealDatabaseName(SqlServerConnection.java:358),
... 11 more,
Caused by: java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:bce7b974-bac3-4068-b85f-271ba41295e4,
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:780),
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:836),
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:827),
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1009),
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:997),
at sun.security.ssl.InputRecord.readFully(InputRecord.java:465),
at sun.security.ssl.InputRecord.read(InputRecord.java:503),
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975),
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367),
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395),
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379),
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1767),
... 22 more,
Вот моя конфигурация соединителя:
curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d '{ "name": "sql-connector",
"config": {
"connector.class": "io.debezium.connector.sqlserver.SqlServerConnector",
"database.hostname": "XXX.XXX.XXX.XXX",
"database.port": "1433",
"database.user": "login",
"database.password": "password",
"database.dbname": "BDNAME",
"database.server.name": "bdservername",
"table.whitelist": "bdSchema.TABLE",
"database.history.kafka.bootstrap.servers": "kafka:9092",
"database.history.kafka.topic": "dbhistory.TABLE" }
}'
Я нашел обходной путь здесь:
https://github.com/Microsoft/mssql-jdbc/issues/879#issuecomment-438825486
Но возможно ли применить его на разъеме дебезиума?Совместим ли Debezium с Sql Server 2008 R2, потому что в документации написано:
The functionality of the connector is based upon change data capture feature provided by SQL Server Standard (since SQL Server 2016 SP1) or Enterprise edition
Для информации я использовал Debezium Docker Images 0.9.2: - debezium / zookeeper - debezium / kafka - debezium / connect
Заранее спасибо за помощь.
Себастьян