Я создал конвейер данных с Апач Ни-Фай (версия 1.15.2) для передачи данных из базы данных MySQL в экземпляре AWS RDS в Timescale (postgreSQL). Ni-Fi работает в Linux Ubuntu 18.04 в Virtual Box поверх Windows 10. Конвейер был успешно протестирован с использованием в качестве цели базы данных Timescale, расположенной в моем локальном экземпляре Linux, без использования SSL.
Затем я изменил конвейер, чтобы использовать Облако шкалы времени в качестве цели (https://portal.timescale.cloud/логин). Имя базы данных: periodic-measurements
На странице службы Timescale Cloud я вижу эти учетные данные:
<host-string>
10250
tsdbadmin
<timescale-cloud-service-password>
postgres://tsdbadmin:<timescale-cloud-service-password>@<host-string>:10250/defaultdb?sslmode=require
require
0.0.0.0/0
Я использую процессор PutDatabaseRecord для записи данных в базу данных postgreSQL, которая использует службу контроллера DBCPConnectionPool.
Я скопировал сертификат CA, полученный со страницы службы Timescale Cloud, в следующий каталог в моем экземпляре Linux со следующим именем файла:
/etc/ca-certificates/ts-cloud-ca.pem
Это параметры конфигурации в службе контроллера DBCPConnectionPool:
• URL-адрес подключения к базе данных: jdbc:postgres://<host-string>:10250/periodic-measurements
• Имя класса драйвера базы данных: org.postgresql.Driver
• Расположение драйвера базы данных: /usr/share/java/postgresql/postgresql-42.3.1.jar
• Пользователь базы данных: tsdbadmin
• Пароль: <timescale-cloud-service-password>
• SSL-режим: require
• sslrootcert: /etc/ca-certificates/ts-cloud-ca.pem
При включении службы контроллера я получаю следующую ошибку:
StandardControllerServiceNode[service=DBCPConnectionPool[id=017e1005-818e-1423-7951-125faf9dff4d], name=Connector to Timescale Cloud, active=true] Failed to invoke @OnEnabled method due to java.sql.SQLException: No suitable driver
causes: org.apache.nifi.processor.exception.ProcessException: No suitable driver for the given Database Connection URL: No suitable driver for the given Database Connection URL
Я получаю тот же результат, если изменю настройки службы контроллера DBCPConnectionPool с помощью sslmode: verify-ca
Обратите внимание, что мне удалось успешно подключиться к базе данных Timescale Cloud с помощью Grafana из моего экземпляра Linux, используя те же учетные данные.
Любая подсказка, что может быть не так?
Спасибо,
Бернардо
🤔 А знаете ли вы, что...
Java поддерживает аннотации для добавления метаинформации в код.
Ошибка была в параметрах конфигурации в службе контроллера DBCPConnectionPool в URL-адресе подключения к базе данных, который начинался с jdbc:postgres, а не с jdbc:postgresql.
Правильная конфигурация:
• URL-адрес подключения к базе данных: jdbc:postgresql://:10250/periodic-measurements.