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

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

Create database

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

Эта база данных требуется для установки большинства расширений ADB.

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

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

  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 log in

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

true

Make role superuser

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

false

Allow role to create databases

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

false

Allow role to create users/roles

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

false

Allow role to 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';

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

  oid  |  extname  | extowner | extnamespace | extrelocatable | extversion |   extconfig   | extcondition
-------+-----------+----------+--------------+----------------+------------+---------------+--------------
 20312 | diskquota |       10 |         2200 | t              | 2.3        | {20314,20321} | {"",""}
(1 row)

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

Install MADlib

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

Действие создает расширение и схему madlib.

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

SELECT madlib.version();

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

          version
---------------------------------------------------------------------------------------------------------
 MADlib version: 2.1.0, git revision: 6.22.1_arenadata41-244-g5ab0b4c4, cmake configuration time: Tue Oct 14 14:
46:34 UTC 2025, build type: RelWithDebInfo, build system: Linux-4.15.0-175-generic, C compiler: gcc 11, C++ comp
iler: g++ 11
(1 row)

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

Install PostGIS

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

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

SELECT PostGIS_Lib_Version();

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

 postgis_lib_version
---------------------
 3.3.2
(1 row)

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

Reconfigure

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

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

  • Interconnect properties → Interconnect type

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

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

Redistribute

 

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

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

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

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

  • При ранжировании таблиц рекомендуется использовать шаг 10, а не 1 — чтобы в случае необходимости можно было быстро повысить приоритет какой-либо таблицы, не затрагивая остальные.

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

  • Для исключения таблицы из процедуры перераспределения следует удалить ее из таблицы gpexpand.status_detail.

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

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

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

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

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

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

  • Timeout for expanding — максимальная длительность сеанса перераспределения в часах, минутах и секундах.

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

Окно Redistribute
Окно Redistribute

Для запуска действия Redistribute нажмите Run в диалоговом окне. Если перераспределение данных всех таблиц завершается в срок, указанный в поле Timeout for expanding, схема gpexpand удаляется из базы данных postgres. В противном случае продолжить перераспределение можно путем повторного вызова действия 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

    Пример запроса
    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. Значение по умолчанию — false: перезагрузку потребуется выполнить вручную.

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

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

Run SQL

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

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

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

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

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

Start

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

Stop

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

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

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

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

Manage tablespace

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

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

Name

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

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

pg_default

Path

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

 — 

Use for temporary and transaction files

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

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

$ gpconfig -s temp_tablespaces

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

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

false

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