#postgresql #confluent-platform #ssh-tunnel #debezium
Вопрос:
Я пытаюсь подключить исходный разъем Debezium по SSH к базе данных PostgreSQL, но не смог установить соединение. Получаю эту ошибку.
Caused by: org.postgresql.util.PSQLException: Connection to localhost:6432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:285)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:211)
at org.postgresql.Driver.makeConnection(Driver.java:459)
at org.postgresql.Driver.connect(Driver.java:261)
at io.debezium.jdbc.JdbcConnection.lambda$patternBasedFactory$1(JdbcConnection.java:190)
at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:788)
at io.debezium.jdbc.JdbcConnection.connection(JdbcConnection.java:783)
at io.debezium.connector.postgresql.connection.PostgresConnection.determineDatabaseCharset(PostgresConnection.java:431)
... 13 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
Вот конфигурация соединителя
"config":{
"connector.class":"io.debezium.connector.postgresql.PostgresConnector",
"tasks.max":"1",
"database.hostname":"localhost",
"database.port":"6432",
"database.user":"test",
"database.password":"testpassword",
"database.dbname":"postgres",
"database.server.name":"localhost",
"transforms":"unwrap",
"transforms.unwrap.type":"io.debezium.transforms.ExtractNewRecordState",
"transforms":"route",
"transforms.route.type":"org.apache.kafka.connect.transforms.RegexRouter",
"transforms.route.regex":"([^.] ).(^.] ).([^.] )",
"transforms.route.replacement":"$3"
}
Хотя подключение к базе данных через диспетчер баз данных, т. е. Dbeaver или Pgdmin, было успешным.
Комментарии:
1. Для того, чтобы подключиться через туннель, вам нужен туннель. Ничто из того, что вы здесь показываете, похоже, не пытается его создать.
2. @jjanes доступен туннель между виртуальной машиной базы данных postgresql и виртуальной машиной, к которой я подключаю разъем. Это я не мог показать, но соединение через pgadmin прошло успешно.
3. Таким образом, вы не используете встроенную возможность туннелирования pgAdmin, а просто указываете на уже существующий туннельный порт? Если мне нужно что-то отладить, я нахожу psql намного лучше, чем pgAdmin. В любом случае, сообщение об ошибке, похоже, показывает, что туннель вышел из строя или находится на другом порту, чем вы пытаетесь.
4. @jjanes да, существующий туннельный порт. Соединение Pgadmin также установлено с использованием того же туннельного порта.