Настройка внешних баз данных для ADB Control и ADBM

В production-средах рекомендуется использовать внешние базы данных PostgreSQL и ClickHouse для хранения данных ADB Control (см. Query DB и Metrics DB в статье Обзор Arenadata DB Control) и ADBM (см. PostgreSQL в статье Обзор Arenadata DB Backup Manager) по следующим причинам:

  • У вас будет возможность настроить внешние БД на хостах с ресурсами, необходимыми для обеспечения высокой производительности, а также предусмотреть отказоустойчивость (High Availability, HA).

  • Процесс восстановления ADB Control после сбоев будет проходить значительно проще и состоять по большей части из шагов по настройке сервисов.

Ниже приведены шаги, необходимые для настройки внешних БД в ADB ES (начиная с версии ADB Control 4.16.0). Для получения информации об установке внешних БД для предыдущих версий ADB Control и ADBM (поставлявшихся в виде сервисов в составе ADB) следует обратиться к соответствующим версиям документации ADB:

ВНИМАНИЕ
  • Для получения информации об исходной установке ADB ES (включая настройку внешних БД) следует обратиться к статье Миграция метаданных ADB Control и ADBM при установке ADB ES.

  • Действия для ADBM необходимы только при использовании этого сервиса в ADB ES.

  • Так как в кластере ADB ES предусмотрен один сервис Database для БД PostgreSQL ADB Control и ADBM, необходимо использовать один общий сервер PostgreSQL и впоследствии указать его настройки в сервисе Database кластера ADB ES. Владельцем обеих БД должен быть один пользователь.

  • Имена внешних баз данных PostgreSQL, используемых для сервисов ADB Control и ADBM в кластере ADB ES, должны формироваться по следующему шаблону:

    • ADB Control — <prefix>_adcc

    • ADBM — <prefix>_adbm

    Префикс <prefix> должен быть одинаковым для обоих сервисов, впоследствии он указывается в настройках сервиса Database в параметре External postgres parameters → Database name prefix. Примеры корректных имен баз данных: external_adcc и external_adbm (где external — префикс).

  • Если переход на использование внешних БД производится уже после исходной установки сервисов Database и/или Clickhouse в ADB ES, после заполнения и сохранения описанных ниже конфигурационных параметров важно применить сервисное действие Reinstall к сервису Database и/или Clickhouse.

PostgreSQL

Шаг 1. Запуск SQL-запросов для базы данных ADB Control

  1. Выполните следующие запросы на стороне PostgreSQL. Запросы следует запускать под пользователем с правами superuser:

    CREATE ROLE <user_name> LOGIN PASSWORD '<user_password>';
    ALTER ROLE <user_name> SET search_path TO public, adcc;
    CREATE DATABASE <prefix>_adcc WITH owner <user_name>;
  2. Подключитесь к созданной базе данных под суперпользователем и выполните:

    CREATE SCHEMA adcc;
    ALTER SCHEMA adcc OWNER TO <user_name>;
    
    CREATE EXTENSION IF NOT EXISTS pgcrypto WITH schema public;
    CREATE EXTENSION IF NOT EXISTS btree_gin WITH schema public;
    CREATE EXTENSION IF NOT EXISTS pg_trgm WITH schema public;
    
    GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog TO <user_name>;
    
    CREATE OPERATOR adcc.^| (PROCEDURE = jsonb_exists_any, LEFTARG = jsonb, RIGHTARG = _text, RESTRICT = contsel, JOIN = contjoinsel);
    ALTER OPERATOR adcc.^|(jsonb, text[]) OWNER TO <user_name>;
    CREATE OPERATOR CLASS adcc.jsonb_ops_custom
    FOR TYPE jsonb USING gin AS
    OPERATOR 7 pg_catalog.@>(jsonb, jsonb),
    OPERATOR 10 adcc.^| (jsonb, _text),
    FUNCTION 1  gin_compare_jsonb(text, text),
    FUNCTION 2  gin_extract_jsonb(jsonb, internal, internal),
    FUNCTION 3  gin_extract_jsonb_query(jsonb, internal, smallint, internal, internal, internal, internal),
    FUNCTION 4  gin_consistent_jsonb(internal, smallint, jsonb, integer, internal, internal, internal, internal),
    FUNCTION 6  gin_triconsistent_jsonb(internal, smallint, jsonb, integer, internal, internal, internal);
    ALTER OPERATOR CLASS adcc.jsonb_ops_custom USING GIN OWNER TO <user_name>;

    где <user_name> — имя созданного на предыдущем шаге пользователя.

    Если есть возможность назначить права superuser пользователю в PostgreSQL (под которым будет выполняться подключение из ADB Control), достаточно создать роль и базу данных в PostgreSQL перед установкой или реконфигурацией ADB Control для использования внешней БД:

    CREATE ROLE <user_name> LOGIN PASSWORD '<user_password>' SUPERUSER;
    ALTER ROLE <user_name> SET search_path TO public, adcc;
    CREATE DATABASE <prefix>_adcc WITH owner <user_name>;
  3. Опционально можно запустить следующий запрос для отключения синхронной записи в WAL-файлы с целью увеличения производительности:

    ALTER DATABASE <prefix>_adcc SET synchronous_commit = OFF;

Шаг 2. Запуск SQL-запросов для базы данных ADBM

  1. Выполните следующие запросы на стороне PostgreSQL. Запросы следует запускать под дефолтным пользователем postgres с правами superuser:

    ALTER ROLE <user_name> SET search_path TO public, adcc, adbm; (1)
    CREATE DATABASE <prefix>_adbm WITH owner <user_name>; (2)
    1 Присвоение пользователю <user_name> (созданному ранее для ADB Control) необходимых прав для подключения к внешней БД ADBM.
    2 Создание базы данных для миграции данных ADBM.
  2. Подключитесь к созданной базе данных под суперпользователем и выполните:

    CREATE SCHEMA adbm; (1)
    GRANT USAGE, CREATE ON SCHEMA adbm TO <user_name>; (2)
    ALTER DEFAULT PRIVILEGES IN SCHEMA adbm GRANT UPDATE, INSERT, SELECT, DELETE ON TABLES TO <user_name>;
    CREATE EXTENSION btree_gin WITH schema adbm;
    CREATE EXTENSION pg_trgm WITH schema adbm;
    GRANT SELECT ON pg_extension TO <user_name>;
    1 Создание схемы adbm в базе данных для миграции данных ADBM.
    2 Создание расширений (extension) в схеме adbm и предоставление созданному пользователю <user_name> прав для их использования.

    Если есть возможность назначить права superuser пользователю в PostgreSQL (под которым будет выполняться подключение из ADBM), достаточно создать роль и базу данных в PostgreSQL перед установкой или реконфигурацией ADBM для использования внешней БД:

    ALTER ROLE <user_name> SET search_path TO public, adcc, adbm;
    CREATE DATABASE <prefix>_adbm WITH owner <user_name>;

Шаг 3. Настройка pg_hba.conf на стороне PostgreSQL

  1. Обеспечьте возможность доступа хоста с ADB Control к внешним базам данных PostgreSQL. Для этого на стороне сервера PostgreSQL требуется добавить записи следующего вида в файл pg_hba.conf.

  • Без SSL

  • С использованием SSL

host    <prefix>_adcc  <user_name>       <adbc_address>      trust
host    <prefix>_adbm  <user_name>       <adbm_address>      trust

где:

  • <prefix>_adcc, <prefix>_adbm — имена созданных выше БД.

  • <user_name> — имя созданного выше пользователя.

  • <adbc_address> — IP-адрес ADB Control с подсетью.

  • <adbm_address> — IP-адрес ADBM с подсетью.

hostssl    all  all       0.0.0.0/0      md5

Шаг 4. Настройка сервиса Database в ADB ES

  1. На странице конфигурирования сервиса Database выберите External postgres parameter в поле Database type и заполните параметры в открывшемся списке. Назначение параметров описано в разделе Конфигурационные параметры → Database → External postgres parameters.

    Параметры для подключения к внешней БД PostgreSQL
    Параметры для подключения к внешней БД PostgreSQL
  2. После заполнения параметров нажмите Save для сохранения конфигурации Database.

  3. Выполните установку сервиса Database с помощью сервисного действия Install либо примените действие Reinstall к ранее установленному сервису Database.

ClickHouse

ВАЖНО
  • Для использования кластеризованного ClickHouse в качестве внешней БД (вместо одиночной ноды) предварительно требуется создать логический кластер с именем adcc_cluster на стороне ClickHouse.

  • В случае использования SSL-шифрования в ADB Control необходимо предварительно настроить SSL на стороне ClickHouse и в параметрах подключения к хостам ClickHouse указать порт 8443 (см. External Clickhouse parameters ниже).

  1. Выполните следующие запросы для создания пользователя с необходимыми правами на стороне ClickHouse:

    CREATE USER <user_name> NOT IDENTIFIED;
    GRANT SELECT, INSERT, ALTER, CREATE, DROP, TRUNCATE ON *.* TO <user_name>
  2. На странице конфигурирования сервиса Clickhouse выберите External Clickhouse parameters в поле Database type и заполните параметры в открывшемся списке. Назначение параметров описано в разделе Конфигурационные параметры → Clickhouse → External Clickhouse parameters.

    Параметры для подключения к внешней БД ClickHouse
    Параметры для подключения к внешней БД ClickHouse
  3. После заполнения параметров нажмите Save для сохранения конфигурации Clickhouse.

  4. Выполните установку сервиса Clickhouse с помощью сервисного действия Install либо примените действие Reinstall к ранее установленному сервису Clickhouse.

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней