Действия сервиса ADB
В этой статье описаны действия, доступные для сервиса ADB в веб-интерфейсе ADCM.
Create database
Создает базу данных по умолчанию.
Название по умолчанию — adb.
Эта база данных требуется для установки большинства расширений ADB. Если вы установили кластер при помощи кластерного действия Install, эта БД создается автоматически. Если вы устанавливали каждый сервис по отдельности, БД не создается автоматически и ее требуется создать вручную при помощи действия Create database.
После того как действие успешно завершилось, вы можете проверить, что БД создана:
-
Подключитесь к мастер-хосту ADB под учетной записью пользователя
gpadmin:$ sudo su - gpadmin -
Выведите список БД:
$ 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
Добавляет новую роль в кластер.
На вкладке Configuration открывшегося окна заполните параметры.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
Role name |
Уникальное имя новой роли |
— |
Role password |
Пароль роли. Не может быть пустым |
— |
Allow this role to login |
Флаг, определяющий, можно ли использовать роль для подключения к БД.
Если значение — |
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-каталогов. Если эти условия не выполняются, то действие завершится ошибкой.
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.
Таблицы с наименьшим рангом будут перераспределяться в первую очередь.
Для ранжирования таблиц выполните следующие шаги:
-
Подключитесь к базе данных
postgresкластера ADB под пользователемgpadmin(например, черезpsql). -
Для всех строк таблицы
gpexpand.status_detailустановите начальное значение столбцаrank, который будет считаться максимальным (и соответствовать наименьшему приоритету обработки), например100:UPDATE gpexpand.status_detail SET rank = 100; -
Уменьшите значение
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.
|
РЕКОМЕНДАЦИЯ
|
Запуск перераспределения
Запуск перераспределения осуществляется с помощью сервисного действия Redistribute. Перераспределение рекомендуется выполнять в период низкой нагрузки на базу данных, когда блокировки таблиц не будут оказывать существенного влияния на функционирование кластера.
|
ВАЖНО
|
При выборе действия 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 нажмите 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. Поэтому в таблице ADBgpexpand.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 корневой партиции. Иначе —
Nonerank
Ранг, определяющий приоритет обработки таблицы во время перераспределения. Таблицы с наименьшим рангом обрабатываются в первую очередь
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-progressrel_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.
Stop
Останавливает сервис ADB. На вкладке Configuration открывшегося окна выберите значение параметра ADB shutdown mode:
-
fast— принудительная остановка сервиса после прерывания и отката выполняющихся транзакций, а также закрытия всех активных соединений. Этот режим используется по умолчанию. -
smart— остановка только в случае отсутствия клиентских соединений к базе данных. Иначе действие завершается с предупреждением. -
immediate— принудительное завершение процессов PostgreSQL без корректной обработки активных транзакций. Этот режим не рекомендуется к использованию, так как в некоторых случаях может привести к повреждению базы данных.
Run SQL
Выполняет SQL-команду с правами пользователя gpadmin.
Команда выполняется в базе adb или в другой базе, указанной как БД по умолчанию для клиентских подключений.
На вкладке Configuration открывшегося окна в поле SQL query введите SQL-команду.
Чтобы посмотреть результат действия, на странице Jobs нажмите на название действия и перейдите на вкладку Ansible [check] — результат будет в строке SQL query.
Manage tablespace
Создает табличное пространство (tablespace) или изменяет существующие.
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
Name |
Уникальное название нового табличного пространства.
Название не может начинаться с префикса Вместо названия нового табличного пространства можно также ввести название существующего, чтобы изменить его параметры |
pg_default |
Path |
Каталог, который будет использоваться табличным пространством. При создании нового табличного пространства этот параметр является обязательным. Действие не создает каталог, поэтому он должен существовать на мастер-хосте и каждом сегментном хосте |
— |
Storage device |
Если вы хотите разместить табличное пространство на отдельном запоминающем устройстве, укажите имя блочного устройства на мастер-хосте (внутри каталога /dev). ADB создаст файловую систему XFS на этом устройстве, отформатирует устройство и смонтирует его в каталог, указанный в Path |
— |
Use for temporary and transaction files |
Флаг, определяющий, нужно ли использовать табличное пространство для хранения временных объектов.
Действие добавит табличное пространство в конфигурационный параметр Чтобы проверить табличные пространства, которые используются для хранения временных файлов, выполните следующую команду:
Результат команды: Values on all segments are consistent GUC : temp_tablespaces Master value: fast_storage Segment value: fast_storage |
false |