Действия сервиса ADB

В этой статье описаны действия, доступные для сервиса ADB в веб-интерфейсе ADCM.

Create database

Создает базу данных по умолчанию. Название по умолчанию — adb.

Эта база данных требуется для установки большинства расширений ADB. Если вы установили кластер при помощи кластерного действия Install, эта БД создается автоматически. Если вы устанавливали каждый сервис по отдельности, БД не создается автоматически и ее требуется создать вручную при помощи действия Create database.

После того как действие успешно завершилось, вы можете проверить, что БД создана:

  1. Подключитесь к мастер-хосту ADB под учетной записью пользователя gpadmin:

    $ sudo su - gpadmin
  2. Выведите список БД:

    $ psql -l

    В выводе команды должна присутствовать БД adb:

                                   List of databases
       Name    |  Owner  | Encoding |  Collate   |   Ctype    |  Access privileges
    -----------+---------+----------+------------+------------+---------------------
     adb       | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =Tc/gpadmin        +
               |         |          |            |            | gpadmin=CTc/gpadmin
     postgres  | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 |
     template0 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
               |         |          |            |            | gpadmin=CTc/gpadmin
     template1 | gpadmin | UTF8     | en_US.utf8 | en_US.utf8 | =c/gpadmin         +
               |         |          |            |            | gpadmin=CTc/gpadmin
    (5 rows)

Create role

Добавляет новую роль в кластер.

Окно Create role
Окно Create role

На вкладке Configuration открывшегося окна заполните параметры.

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

Role name

Уникальное имя новой роли

 — 

Role password

Пароль роли. Не может быть пустым

 — 

Allow this role to login

Флаг, определяющий, можно ли использовать роль для подключения к БД. Если значение — true, роль можно воспринимать как пользователя

true

Make role superuser

Флаг, определяющий, является ли роль суперпользователем

false

Allow role to create databases

Флаг, определяющий, может ли роль создавать новые базы данных

false

Allow role to create users/roles

Флаг, определяющий, может ли роль создавать новые роли

false

Allow role create external tables

Флаг, определяющий, может ли роль создавать внешние таблицы

false

Resource Group

Название одной из существующих ресурсных групп, которой будет принадлежать роль. Значение не может быть пустым, так как каждая роль должна входить в ресурсную группу

default_group

Enable auto core dump

Устанавливает сервис Auto Core Dump (systemd-coredump) на хостах мастера, резервного мастера и сегментов. При вызове действия используются следующие значения параметров сервиса:

  • Storage=external — дампы памяти (core dump) будут храниться в директории /var/lib/systemd/coredump/.

  • MaxUse=1024M — удалять старые дампы, если их размер превышает 1 ГБ.

Чтобы проверить, что сервис успешно установлен и запущен, выполните следующую команду на хосте мастера, резервного мастера или сегмента:

$ systemctl status systemd-coredump.socket

Сервис должен иметь статус active (listening):

systemd-coredump.socket - Process Core Dump Socket
     Loaded: loaded (/lib/systemd/system/systemd-coredump.socket; static)
     Active: active (listening) since Thu 2025-09-04 10:24:43 UTC; 21min ago
       Docs: man:systemd-coredump(8)
     Listen: /run/systemd/coredump (SequentialPacket)
   Accepted: 0; Connected: 0;
     CGroup: /system.slice/systemd-coredump.socket

Disable auto core dump

Удаляет сервис Auto Core Dump (systemd-coredump) и его конфигурационные файлы.

Enable mirroring

Включает репликацию данных primary-сегментов путем добавления mirror-сегментов в кластер.

На вкладке Configuration открывшегося окна в списке Type of mirroring выберите тип зеркалирования: распределенное (spread) или групповое (group).

По умолчанию используется распределенное зеркалирование. При выборе такого зеркалирования действие Enable mirroring проверяет, что число сегментных хостов в кластере больше числа сегментов на одном хосте и что число сегментов на хост без остатка делится на число data-каталогов. Если эти условия не выполняются, то действие завершится ошибкой.

Окно Enable mirroring
Окно Enable mirroring

Install diskquota

Устанавливает расширение ADB diskquota. Это расширение предназначено для ограничения дискового пространства, выделяемого под схемы и роли.

Действие создает базу данных diskquota и схему diskquota и регистрирует расширение diskquota.

Чтобы проверить наличие расширения diskquota, выполните следующую команду:

SELECT * FROM pg_extension WHERE extname = 'diskquota';

Результат команды:

  extname  | extowner | extnamespace | extrelocatable | extversion |   extconfig   | extcondition
-----------+----------+--------------+----------------+------------+---------------+--------------
 diskquota |       10 |         2200 | t              | 2.3        | {48320,48328} | {"",""}
(1 row)

После установки diskquota становятся доступными действия Uninstall diskquota и Reinstall diskquota.

Install MADlib

Устанавливает библиотеку MADlib.

Действие создает схему madlib, в которой хранятся функции MADlib.

Чтобы проверить установленную версию, выполните следующую команду:

SELECT madlib.version();

Результат команды:

          version
---------------------------------------------------------------------------------------------------------
 MADlib version: 1.21.0, git revision: 6.27.1_arenadata64-66-gbf5684f4, cmake configuration time: Tue Aug
 19 23:01:09 UTC 2025, build type: RelWithDebInfo, build system: Linux-4.15.0-175-generic, C compiler: gc
c 11, C++ compiler: g++ 11
(1 row)

После установки MADlib становятся доступными действия Uninstall MADlib и Reinstall MADlib.

Install PostGIS

Устанавливает расширение PostGIS.

Чтобы проверить установленную версию PostGIS, выполните следующую команду:

SELECT PostGIS_Lib_Version();

Результат команды:

 postgis_lib_version
---------------------
 2.5.4
(1 row)

После установки PostGIS становятся доступными действия Uninstall PostGIS и Reinstall PostGIS.

Install Plpython3

Устанавливает расширение plpython3u для поддержки процедурного языка PL/Python.

Чтобы проверить наличие расширения plpython3u, выполните следующую команду:

SELECT * FROM pg_extension WHERE extname = 'plpython3u';

Результат команды:

  extname   | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
------------+----------+--------------+----------------+------------+-----------+--------------
 plpython3u |       10 |           11 | f              | 1.0        |           |
(1 row)

После установки Plpython3 становятся доступными действия Uninstall Plpython3 и Reinstall Plpython3.

Reconfigure & Restart

Обновляет конфигурацию сервиса в соответствии с параметрами конфигурации.

Действие перезапускает кластер (с помощью команды gpstop -arM fast), если был изменен один из следующих конфигурационных параметров:

  • ADB GPperfmon Extension

  • Interconnect properties → Interconnect type

  • Любой параметр в блоке SSL

Если изменения не касались этих параметров, действие перечитывает конфигурацию без перезапуска всего кластера (с помощью команды gpstop -au).

Флаг Migrate db_files_history table now, доступный в открывшемся окне, определяет необходимость миграции таблицы arenadata_toolkit.db_files_history во время обновления. При установке флага таблица пересоздается с последующей загрузкой данных, а также опций партиционирования/сжатия данных. Для больших таблиц этот процесс может занять длительное время. Сброс флага означает, что миграция будет выполнена позднее вручную либо при следующем обновлении.

Redistribute

Действие Redistribute предназначено для перераспределения данных между сегментами кластера ADB, расширенного действием Expand. При выполнении действия используется утилита Greengage DB gpexpand.

До ADB 6.31, действие Redistribute было кластерным действием, при этом все другие кластерные действия были недоступны после выполнения действия Expand до выполнения действия Redistribute. Начиная с ADB 6.31, действие Redistribute является действием сервиса ADB и не блокирует кластерные действия.

Перед запуском действия рекомендуется выполнить ранжирование таблиц баз данных, т.е. указать, в каком порядке следует перераспределять таблицы.

Ранжирование таблиц перед перераспределением

Приоритет обработки таблиц во время перераспределения определяется их рангом (значением столбца rank) в таблице gpexpand.status_detail. Таблицы с наименьшим рангом будут перераспределяться в первую очередь. Для ранжирования таблиц выполните следующие шаги:

  1. Подключитесь к базе данных postgres кластера ADB под пользователем gpadmin (например, через psql).

  2. Для всех строк таблицы gpexpand.status_detail установите начальное значение столбца rank, который будет считаться максимальным (и соответствовать наименьшему приоритету обработки), например 100:

    UPDATE gpexpand.status_detail SET rank = 100;
  3. Уменьшите значение rank для тех таблиц, которые должны быть перераспределены в первую очередь. Например, следующие запросы приведут к тому, что во время выполнения действия Redistribute первой будет обработана таблица public.test, затем public.test2 и далее все остальные из gpexpand.status_detail:

    UPDATE gpexpand.status_detail SET rank = 10 WHERE fq_name = 'public.test';
    UPDATE gpexpand.status_detail SET rank = 20 WHERE fq_name = 'public.test2';

В качестве значения столбца fq_name необходимо указывать полное имя таблицы, включающее название схемы. Для исключения таблицы из процедуры перераспределения следует удалить ее из таблицы gpexpand.status_detail.

РЕКОМЕНДАЦИЯ
  • При ранжировании таблиц рекомендуется использовать шаг 10, а не 1 — чтобы в случае необходимости можно было быстро повысить приоритет какой-либо таблицы, не затрагивая остальные.

  • Наибольший приоритет (наименьшее значение rank) следует присвоить тем таблицам, что используются чаще других.

Запуск перераспределения

Запуск перераспределения осуществляется с помощью сервисного действия Redistribute. Перераспределение рекомендуется выполнять в период низкой нагрузки на базу данных, когда блокировки таблиц не будут оказывать существенного влияния на функционирование кластера.

ВАЖНО
  • Для выполнения перераспределения на сегмент-хостах должно быть достаточно места для хранения временной копии наибольшей из существующих таблиц/партиций.

  • Во время перераспределения каждая обрабатываемая таблица или партиция блокируется (с типом блокировки ACCESS EXCLUSIVE) и становится недоступна для операций чтения и записи. После завершения перераспределения возможность операций для этой конкретной таблицы возобновляется.

  • Новые таблицы и партиции продолжают распределяться по всем сегментам в штатном режиме.

При выборе действия Redistribute открывается диалоговое окно, в котором можно заполнить следующие поля:

  • Timeout for expanding — максимальная длительность сеанса перераспределения в часах, минутах и секундах. Если действие завершается ошибкой по причине этого тайм-аута, в логах задачи будет сообщение Redistribution incomplete уровня warning (уровни критичности неуспешного результата доступны в ADCM начиная с версии 2.12.0). В этом случае запустите действие повторно. При повторном запуске Redistribute процесс перераспределения не начнется с начала, а возобновится с того состояния, в котором действие было прервано по таймауту, то есть будут перераспределяться только оставшиеся таблицы.

  • Number of parallel processes — значение опции -n для утилиты gpexpand. Определяет количество таблиц, перераспределяемых одновременно. Допускаются значения 1 — 96. Для каждого процесса перераспределения требуется два подключения к БД: одно для изменения таблицы и одно для обновления статуса таблицы в схеме gpexpand. Перед увеличением значения Number of parallel processes проверьте значение серверного параметра max_connections и убедитесь, что лимит соединений не исчерпан.

Окно для ввода параметров действия Redistribute
Окно для ввода параметров действия Redistribute

Для запуска действия Redistribute нажмите Run в окне с параметрами. Затем подтвердите действие в открывшемся стандартном окне. Если перераспределение данных всех таблиц завершается в срок, указанный в поле Timeout for expanding, схема gpexpand удаляется из базы данных postgres, кластер ADB переводится в статус running, а Redistribute пропадает из списка действий сервиса. Иначе кластер остается в статусе expanding, а продолжить перераспределение с момента его прерывания по таймауту можно путем повторного вызова действия Redistribute.

Мониторинг перераспределения

Для отслеживания прогресса перераспределения данных в режиме реального времени можно использовать запросы к следующим объектам схемы gpexpand в базе данных postgres:

  • gpexpand.status — таблица, отображающая историю изменения статуса процедуры расширения кластера.

    Структура
    Столбец Описание

    status

    Статус процедуры расширения кластера ADB. Возможные значения:

    • SETUP — подготовка к расширению начата в ходе выполнения действия Expand.

    • SETUP DONE — подготовка к расширению завершена в результате успешного выполнения действия Expand.

    • EXPANSION STARTED — перераспределение данных начато в ходе выполнения действия Redistribute.

    • EXPANSION STOPPED — перераспределение данных остановлено. Требуется повторный запуск действия Redistribute.

    • COMPLETED — перераспределение данных всех таблиц успешно завершено в результате одного или нескольких запусков действия Redistribute.

    updated

    Дата и время изменения статуса

    Пример запроса
    SELECT * FROM gpexpand.status;

    Результат:

          status       |          updated
    -------------------+----------------------------
     EXPANSION STARTED | 2024-02-28 08:02:31.026412
     SETUP DONE        | 2024-02-27 17:40:55.160054
     SETUP             | 2024-02-27 17:40:50.830922
    (3 rows)
  • gpexpand.expansion_progress — представление, отображающее текущий статус перераспределения данных (сколько таблиц/байт уже успешно перераспределено и сколько осталось), а также прогноз скорости и времени завершения перераспределения данных. Прогноз строится один раз при каждом вызове действия Redistribute после обработки первой из таблиц. Статистика по таблицам/байтам обновляется сразу по мере их перераспределения.

    ПРИМЕЧАНИЕ

    В ADB запуск утилиты gpexpand производится с опцией --simple-progress — с целью повышения производительности расширения кластера путем уменьшения информации, записываемой в таблицы gpexpand. Поэтому в таблице ADB gpexpand.expansion_progress заполняются только поля Tables Expanded и Tables Left.

    Структура
    Столбец Описание

    name

    Название метрики:

    • Bytes Left — объем еще не распределенных данных (в байтах).

    • Bytes Done — объем успешно перераспределенных данных (в байтах).

    • Estimated Expansion Rate — прогнозируемая скорость перераспределения данных (с указанием единицы измерения).

    • Estimated Time to Completion — прогнозируемая длительность перераспределения данных (в часах, минутах и секундах).

    • Tables Expanded — число успешно перераспределенных таблиц.

    • Tables Left — число еще не распределенных таблиц.

    value

    Значение метрики, указанной в столбце name

    Пример запроса
    SELECT * FROM gpexpand.expansion_progress;

    Результат:

          name       | value
    -----------------+-------
     Tables Expanded | 90
     Tables Left     | 7
    (2 rows)
  • gpexpand.status_detail — таблица, отображающая текущий статус перераспределения каждой таблицы/партиции.

    Структура
    Столбец Описание

    table_oid

    Внутренний идентификатор таблицы (OID)

    dbname

    Название базы данных, в которой расположена таблица

    fq_name

    Полное название таблицы с именем схемы

    root_partition_oid

    Для партиционированной таблицы — OID корневой партиции. Иначе — None

    rank

    Ранг, определяющий приоритет обработки таблицы во время перераспределения. Таблицы с наименьшим рангом обрабатываются в первую очередь

    external_writable

    Признак того, что таблица имеет тип EXTERNAL WRITABLE (для таких таблиц применяется иной синтаксис при вызове gpexpand)

    status

    Текущий статус перераспределения таблицы:

    • NOT STARTED — перераспределение не начато.

    • IN PROGRESS — перераспределение выполняется.

    • COMPLETED — перераспределение завершено.

    • NO LONGER EXISTS — таблица более не существует.

    expansion_started

    Дата и время начала перераспределения таблицы. Столбец заполняется после завершения перераспределения

    expansion_finished

    Дата и время завершения перераспределения таблицы

    source_bytes

    Размер исходной таблицы (в байтах). Ввиду возможного "раздувания данных" (bloat) в heap-таблицах, а также увеличения числа сегментов в кластере в процессе расширения, не гарантируется, что итоговый размер таблицы останется прежним. Значения данного столбца используются для оценки продолжительности выполнения перераспределения.

    В ADB source_bytes=0 для всех таблиц ввиду использования опции --simple-progress

    rel_storage

    Тип хранения данных в таблице. См. pg_class.relstorage

    Пример запроса
    SELECT dbname, fq_name, status, expansion_started, expansion_finished, source_bytes FROM gpexpand.status_detail;

    Фрагмент вывода:

      dbname   |                        fq_name                        |   status    |     expansion_started      |     expansion_finished     | source_bytes
    -----------+-------------------------------------------------------+-------------+----------------------------+----------------------------+--------------
     adb       | kadb.offsets                                          | NOT STARTED |                            |                            |            0
     adb       | arenadata_toolkit.db_files_history_1_prt_p202310      | NOT STARTED |                            |                            |            0
     gpperfmon | public.database_history_1_prt_r1013160842             | NOT STARTED |                            |                            |            0
     gpperfmon | public.log_alert_history_1_prt_r598663655             | NOT STARTED |                            |                            |            0
     gpperfmon | public.log_alert_history_1_prt_r1113542580            | NOT STARTED |                            |                            |            0
     adb       | public.kafka_ssl                                      | NOT STARTED |                            |                            |            0
     adb       | public.adb_to_kafka_table3                            | NOT STARTED |                            |                            |            0
     adb       | arenadata_toolkit.db_files_current                    | NOT STARTED |                            |                            |            0
     adb       | arenadata_toolkit.db_files_history_1_prt_p202312      | NOT STARTED |                            |                            |            0
     gpperfmon | public.database_history_1_prt_r2098142994             | NOT STARTED |                            |                            |            0
     gpperfmon | public.network_interface_history_1_prt_1              | NOT STARTED |                            |                            |            0
     adb       | public.ext_adb_to_kafka_sasl_gssapi                   | NOT STARTED |                            |                            |            0
     adb       | public.adb_to_kafka_table7                            | NOT STARTED |                            |                            |            0
     adb       | arenadata_toolkit.db_files_history_1_prt_default_part | NOT STARTED |                            |                            |            0
     gpperfmon | public.queries_history_1_prt_r81170841                | NOT STARTED |                            |                            |            0
     gpperfmon | public.queries_history_1_prt_r419258856               | NOT STARTED |                            |                            |            0
     gpperfmon | public.diskspace_history_1_prt_r526486693             | NOT STARTED |                            |                            |            0
     adb       | public.test2                                          | COMPLETED   | 2024-02-28 08:02:37.00728  | 2024-02-28 08:02:38.048592 |            0
     gpperfmon | public.system_history_1_prt_r1569528921               | COMPLETED   | 2024-02-28 08:02:41.066986 | 2024-02-28 08:02:44.182122 |            0
     gpperfmon | public.database_history_1_prt_r932188937              | COMPLETED   | 2024-02-28 08:02:44.305985 | 2024-02-28 08:02:44.697928 |            0
     gpperfmon | public.segment_history_1_prt_1                        | COMPLETED   | 2024-02-28 08:02:44.841786 | 2024-02-28 08:02:45.426392 |            0
     diskquota | arenadata_toolkit.db_files_history_1_prt_default_part | COMPLETED   | 2024-02-28 08:02:46.096083 | 2024-02-28 08:02:48.04711  |            0
     adb       | diskquota.target                                      | COMPLETED   | 2024-02-28 08:02:48.166249 | 2024-02-28 08:02:48.602075 |            0
     adb       | arenadata_toolkit.db_files_history_1_prt_p202402      | COMPLETED   | 2024-02-28 08:02:48.73606  | 2024-02-28 08:02:49.505108 |            0

Reinstall ADB

Переустанавливает сервис ADB.

На вкладке Configuration открывшегося окна заполните параметры:

  • Reboot cluster servers after installation — флаг, определяющий необходимость автоматической перезагрузки хостов ADB после выполнения действия Reinstall ADB. Значение по умолчанию — true. Если значение — false, перезагрузку потребуется выполнить вручную.

  • Reboot timeout, sec — время ожидания перезагрузки хостов (в секундах). Значение по умолчанию — 1800. Значение не может быть меньше 600.

Окно Reinstall ADB
Окно Reinstall ADB

Start

Запускает сервис ADB.

Stop

Останавливает сервис ADB. На вкладке Configuration открывшегося окна выберите значение параметра ADB shutdown mode:

  • fast — принудительная остановка сервиса после прерывания и отката выполняющихся транзакций, а также закрытия всех активных соединений. Этот режим используется по умолчанию.

  • smart — остановка только в случае отсутствия клиентских соединений к базе данных. Иначе действие завершается с предупреждением.

  • immediate — принудительное завершение процессов PostgreSQL без корректной обработки активных транзакций. Этот режим не рекомендуется к использованию, так как в некоторых случаях может привести к повреждению базы данных.

Run SQL

Выполняет SQL-команду с правами пользователя gpadmin.

Команда выполняется в базе adb или в другой базе, указанной как БД по умолчанию для клиентских подключений.

На вкладке Configuration открывшегося окна в поле SQL query введите SQL-команду.

Окно Run SQL
Окно Run SQL

Чтобы посмотреть результат действия, на странице Jobs нажмите на название действия и перейдите на вкладку Ansible [check] — результат будет в строке SQL query.

Manage tablespace

Создает табличное пространство (tablespace) или изменяет существующие.

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

Name

Уникальное название нового табличного пространства. Название не может начинаться с префикса pg_.

Вместо названия нового табличного пространства можно также ввести название существующего, чтобы изменить его параметры

pg_default

Path

Каталог, который будет использоваться табличным пространством. При создании нового табличного пространства этот параметр является обязательным. Действие не создает каталог, поэтому он должен существовать на мастер-хосте и каждом сегментном хосте

 — 

Storage device

Если вы хотите разместить табличное пространство на отдельном запоминающем устройстве, укажите имя блочного устройства на мастер-хосте (внутри каталога /dev). ADB создаст файловую систему XFS на этом устройстве, отформатирует устройство и смонтирует его в каталог, указанный в Path

 — 

Use for temporary and transaction files

Флаг, определяющий, нужно ли использовать табличное пространство для хранения временных объектов. Действие добавит табличное пространство в конфигурационный параметр temp_tablespaces.

Чтобы проверить табличные пространства, которые используются для хранения временных файлов, выполните следующую команду:

$ gpconfig -s temp_tablespaces

Результат команды:

Values on all segments are consistent
GUC          : temp_tablespaces
Master  value: fast_storage
Segment value: fast_storage

false

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