Использование 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. Эти параметры приведены ниже.

Trino catalog management
Параметр Описание Значение по умолчанию

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

Интервал очистки каталогов старых версий. Минимальное значение --10d

30d

Time to live of old version catalogs

Время жизни (TTL) каталогов старых версий. Минимальное значение — 1d

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 необходимо использовать другого пользователя, пароль или базу данных, укажите их с помощью соответствующих настроек.

  1. Активируйте DBCatalogManager, используя параметр Trino catalog.management в ADCM (Clusters → <clusterName> → Services → Trino → Components → Trino Coordinator → Trino catalog management) и перезапустите сервис Trino. При выполнении действия Restart убедитесь, что выбрана опция Init DB credentials.

  2. Создайте тестовый каталог Trino. Для этого подключитесь к Trino Coordinator и выполните команду:

    CREATE CATALOG test_trino_catalog USING memory
    WITH ("memory.max-data-per-node"='128MB');
  3. Убедитесь, что каталог создан:

    SHOW CATALOGS;

    Вывод:

    information_schema
    test_trino_catalog
  4. Проверьте базу данных 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
  5. Чтобы перенести в базу данных существующий каталог, хранящийся в файле .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
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней