Использование DBCatalogManager
Обзор
DBCatalogManager — это одна из реализаций управления каталогами Trino, которая хранит конфигурации каталогов в базе данных ADPG/PostgreSQL, а не в файлах .properties. Хранение метаданных каталога в БД — полезная практика с точки зрения совместного доступа, версионирования, синхронизации настроек, а также безопасности.
Данная реализация позволяет динамически управлять каталогами Trino с помощью команд CREATE CATALOG
/DROP CATALOG
.
DBCatalogManager позволяет обновлять свойства каталогов без необходимости перезапускать сервис Trino.
DBCatalogManager поддерживает шифрование для хранения конфиденциальных параметров конфигурации в зашифрованном виде.
По умолчанию DBCatalogManager настроен для работы с ADH-сервисом ADPG. DBCatalogManager может подключаться к ADPG-сервису "из коробки", не требуя дополнительных настроек, а также может инициализировать все необходимые сущности на стороне ADPG (БД, пользователь, роль). Больше информации об использовании DBCatalogManager с сервисом ADPG можно найти в разделе Пример подключения к ADPG.
Активация DBCatalogManager
DBCatalogManager можно активировать с помощью ADCM.
Для этого укажите значение DB
в параметре catalog.management (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → Trino catalog management) и перезапустите сервис Trino.
РЕКОМЕНДАЦИЯ
При выборе DBCatalogManager и последующем рестарте сервиса Trino ADCM предлагает автоматически создать необходимые сущности в ADPG (БД, пользователь, роли).
|
После активации DBCatalogManager новые каталоги можно создавать с помощью команды CREATE CATALOG
, а сервис Trino будет сохранять конфигурацию каталогов в БД, указанной в свойстве Postgres JDBC URL (БД по умолчанию — catalog
).
DBCatalogManager сохраняет конфигурации каталогов в таблицах в схеме trino
.
Например, чтобы увидеть эти таблицы с помощью psql, используйте команду:
\c catalog
\dt trino.*
Вывод:
List of relations Schema | Name | Type | Owner --------+------------------------------+-------+--------- trino | catalog | table | catalog trino | catalog_property | table | catalog trino | catalog_scheduler_job_launch | table | catalog
Настройка
ADCM предоставляет список конфигурационных параметров для настройки DBCatalogManager. Эти параметры приведены ниже.
Параметр | Описание | Значение по умолчанию |
---|---|---|
catalog.management |
Тип менеджера каталогов |
static |
Postgres JDBC URL |
URL для JDBC-подключения к хранилищу каталогов Postgres |
jdbc:postgresql://{{ groups['adpg.adpg'][0] | d(omit) }}:5432/catalog |
Postgres username |
Имя пользователя хранилища каталогов Postgres для JDBC-подключения |
catalog |
Postgres password |
Пароль для JDBC-подключения к хранилищу каталогов Postgres |
— |
Enable cleanup |
Определяет, включена ли очистка каталогов старых версий |
true |
Encryption password |
Пароль для шифрования свойств |
— |
RegEx pattern |
Шаблон регулярного выражения для определения свойств, подлежащих шифрованию |
— |
Cleanup old version catalogs |
Интервал очистки каталогов старых версий. Минимальное значение -- |
30d |
Time to live of old version catalogs |
Время жизни (TTL) каталогов старых версий. Минимальное значение — |
365d |
Версионирование и удаление каталогов
Выполнение команды DROP CATALOG
для DBCatalogManager не удаляет данные каталога мгновенно, а помечает каталог как неактивный.
Такой каталог не будет отображаться при последующих операциях SHOW CATALOGS
.
Неактивные каталоги могут храниться в базе данных в течение определенного периода времени, который можно указать с помощью параметра Time to live of old version catalogs в настройках ADCM. После этого каталоги старше указанного time-to-live значения удаляются планировщиком, который регулярно запускает процесс очистки через определенный интервал (свойство Cleanup old version catalogs).
Шифрование
DBCatalogManager позволяет шифровать определенные поля конфигурации перед записью в базу данных. Чтобы указать поле, которое необходимо зашифровать, используйте параметр RegEx pattern в ADCM. В значении параметра необходимо указать регулярное выражение, соответствующее одному или нескольким ключам свойств конфигурации каталога, которые необходимо зашифровать. Например, для шифрования паролей можно использовать следующее выражение:
.*password
Миграция
Существующие конфигурации каталогов, хранящиеся в файлах .properties, можно перенести в базу данных ADPG. Для этого используйте команду:
MIGRATE CATALOG [IF NOT EXISTS] ALL | <catalog name>
Ниже показаны примеры миграции одного каталога, а также всех доступных каталогов:
MIGRATE CATALOG IF NOT EXISTS test_trino_catalog
MIGRATE CATALOG IF NOT EXISTS ALL
Пример подключения к ADPG
В следующем примере показано использование DBCatalogManager с сервисом ADPG, работающим в том же кластере ADH. Сценарий предполагает, что оба сервиса Trino и ADPG используют настройки по умолчанию, что позволяет установить соединение без каких-либо манипуляций на стороне ADPG. Если для подключения к ADPG необходимо использовать другого пользователя, пароль или базу данных, укажите их с помощью соответствующих настроек.
-
Активируйте DBCatalogManager, используя параметр Trino catalog.management в ADCM (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → Trino catalog management) и перезапустите сервис Trino. При выполнении действия Restart убедитесь, что выбрана опция Init DB credentials.
-
Создайте тестовый каталог Trino. Для этого подключитесь к Trino Coordinator и выполните команду:
CREATE CATALOG test_trino_catalog USING memory WITH ("memory.max-data-per-node"='128MB');
-
Убедитесь, что каталог создан:
SHOW CATALOGS;
Вывод:
information_schema test_trino_catalog
-
Проверьте базу данных ADPG на наличие новых таблиц. Например, с помощью psql запросите таблицы, принадлежащие схеме
trino
:\c catalog SELECT * FROM trino.catalog;
Пример вывода:
id | name | connector_name | date_from | date_to | is_active ----+--------------------+----------------+----------------------------+---------+----------- 1 | test_trino_catalog | memory | 2025-06-03 21:12:11.193509 | | t
-
Чтобы перенести в базу данных существующий каталог, хранящийся в файле .properties (например, /etc/trino/catalogs/hive-adh.properties), выполните команду:
MIGRATE CATALOG "hive-adh"
Убедитесь, что каталог появился в списке доступных:
SHOW CATALOGS;
Вывод:
Catalog | ------------------+ hive-adh | system | test_trino_catalog|
Проверьте информацию о каталоге в ADPG:
\c catalog SELECT * FROM trino.catalog;
Вывод:
id | name | connector_name | date_from | date_to | is_active ----+--------------------+----------------+----------------------------+---------+----------- 1 | test_trino_catalog | memory | 2025-06-03 21:12:11.193509 | | t 2 | hive-adh | hive | 2025-06-03 22:10:43.222419 | | t