Расширение кластера
Вы можете расширить кластер Managed Service for Greenplum®, добавив хосты-сегменты. Количество добавляемых хостов не может быть меньше двух. Вы также можете увеличить количество сегментов на хост.
Во время расширения кластера данные автоматически перераспределяются равномерно по всем хостам кластера (включая добавленные хосты). Подробнее см. в разделе Расширение кластера Greenplum®.
Расширить кластер
-
Перейдите на страницу каталога
и выберите сервис Managed Service for Greenplum. -
Выберите кластер и откройте вкладку
Хосты. -
Нажмите кнопку Расширить кластер в правом верхнем углу.
-
Укажите настройки расширения кластера:
-
Количество новых хостов-сегментов — количество хостов-сегментов, на которое нужно расширить кластер.
Минимальное значение (по умолчанию) —
2
, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов). -
Добавить сегментов на хост — количество добавляемых сегментов на хост.
Важно
Сегменты будут добавлены на все хосты — как новые, так и существующие.
Минимальное значение (по умолчанию) —
0
(количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов. -
Закрыть кластер от нагрузки — закрыть ли кластер для доступа.
Если настройка включена, то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.
Важно
Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.
Процесс расширения может выполняться длительное время.
-
Фоновое перераспределение данных — использовать ли фоновое перераспределение данных.
-
Если фоновый режим выключен, то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.
Кластер будет находиться в статусе
Updating
до тех пор, пока не завершатся все этапы расширения кластера.Важно
Если процесс перераспределения данных завершится по таймауту и часть таблиц останется не обработанной, то такие таблицы потребуется перераспределить вручную.
-
Если фоновый режим включен, то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.
Кластер будет находиться в статусе
Updating
только на этапе подготовки к расширению кластера.
-
-
Таймаут редистрибуции — таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.
Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус
IN PROGRESS
). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.Минимальное значение —
0
. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.Максимальное значение зависит от того, включено ли фоновое перераспределение данных:
28800
(8 часов) — если включено.- Не ограничено — если выключено.
-
Количество потоков редистрибуции — количество потоков, которые будут запущены в ходе процесса перераспределения данных.
Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.
Минимальное значение (по умолчанию) —
0
(количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное —25
.
-
-
Нажмите кнопку Расширить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы расширить кластер:
-
Посмотрите описание команды CLI для расширения кластера:
yc managed-greenplum cluster expand --help
-
Выполните команду, чтобы расширить кластер:
yc managed-greenplum cluster expand <имя_или_идентификатор_кластера> \ --segment-host-count <количество_добавляемых_хостов_сегментов> \ --add-segments-per-host-count <количество_добавляемых_сегментов_на_хост> \ --close-cluster <временный_запрет_на_подключение_к_кластеру> \ --delay-redistribution <фоновое_перераспределение_данных> \ --duration-seconds <таймаут_перераспределения_данных> \ --parallel <количество_потоков_перераспределения_данных>
Где:
-
--segment-host-count
— количество хостов-сегментов, на которое нужно расширить кластер.Минимальное значение (по умолчанию) —
2
, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов). -
--add-segments-per-host-count
— количество добавляемых сегментов на хост.Важно
Сегменты будут добавлены на все хосты — как новые, так и существующие.
Минимальное значение (по умолчанию) —
0
(количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов. -
--close-cluster
— закрыть ли кластер для доступа:true
илиfalse
.Если настройка включена (
true
), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.Важно
Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.
Процесс расширения может выполняться длительное время.
-
--delay-redistribution
— использовать ли фоновое перераспределение данных:true
илиfalse
.-
Если фоновый режим выключен (
false
), то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.Кластер будет находиться в статусе
Updating
до тех пор, пока не завершатся все этапы расширения кластера.Важно
Если процесс перераспределения данных завершится по таймауту и часть таблиц останется не обработанной, то такие таблицы потребуется перераспределить вручную.
-
Если фоновый режим включен (
true
), то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.Кластер будет находиться в статусе
Updating
только на этапе подготовки к расширению кластера.
-
-
--duration-seconds
— таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус
IN PROGRESS
). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.Минимальное значение —
0
. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.Максимальное значение зависит от того, включено ли фоновое перераспределение данных:
28800
(8 часов) — если включено.- Не ограничено — если выключено.
-
--parallel
— количество потоков, которые будут запущены в ходе процесса перераспределения данных.Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.
Минимальное значение (по умолчанию) —
0
(количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное —25
.
Идентификатор и имя кластера можно получить со списком кластеров в каталоге.
-
Чтобы расширить кластер, воспользуйтесь методом REST API expand для ресурса Cluster или вызовом gRPC API ClusterService/Expand и передайте в запросе:
-
Идентификатор кластера в параметре
clusterId
.Идентификатор кластера можно получить со списком кластеров в каталоге.
-
Параметр
segmentHostCount
— количество хостов-сегментов, на которое нужно расширить кластер.Минимальное значение (по умолчанию) —
2
, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов). -
Параметр
addSegmentsPerHostCount
— количество добавляемых сегментов на хост .Важно
Сегменты будут добавлены на все хосты — как новые, так и существующие.
Минимальное значение (по умолчанию) —
0
(количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов. -
Параметр
closeCluster
— закрыть ли кластер для доступа:true
илиfalse
.Если настройка включена (
true
), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.Важно
Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.
Процесс расширения может выполняться длительное время.
-
Параметр
delayRedistribution
— использовать ли фоновое перераспределение данных:true
илиfalse
.-
Если фоновый режим выключен (
false
), то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.Кластер будет находиться в статусе
Updating
до тех пор, пока не завершатся все этапы расширения кластера.Важно
Если процесс перераспределения данных завершится по таймауту и часть таблиц останется не обработанной, то такие таблицы потребуется перераспределить вручную.
-
Если фоновый режим включен (
true
), то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.Кластер будет находиться в статусе
Updating
только на этапе подготовки к расширению кластера.
-
-
Параметр
duration
— таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус
IN PROGRESS
). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.Минимальное значение —
0
. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.Максимальное значение зависит от того, включено ли фоновое перераспределение данных:
28800
(8 часов) — если включено.- Не ограничено — если выключено.
-
Параметр
parallel
— количество потоков, которые будут запущены в ходе процесса перераспределения данных.Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.
Минимальное значение (по умолчанию) —
0
(количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное —25
.
Мониторинг перераспределения данных
Доступно несколько способов мониторинга процесса перераспределения данных:
-
Если кластер закрыт от нагрузки и фоновое перераспределение данных выключено, то отслеживать ход процесса можно только с помощью инструментов мониторинга Yandex Cloud.
Наблюдайте за графиком Expansion progress на вкладке Мониторинг страницы управления кластером или запрашивайте значения метрик
gp_expand.*
с помощью сервиса Yandex Monitoring. -
Если кластер не закрыт от нагрузки, то также можно выполнять SQL-запросы к объектам служебной схемы данных
gpexpand
.Примечание
Эта схема доступна только в ходе расширения кластера, потом она удаляется.
Чтобы отслеживать ход процесса перераспределения данных с помощью SQL-запросов:
-
Подключитесь к базе данных
postgres
от имени пользователя с рольюmdb_admin
. -
Выполните запрос, чтобы получить текущий статус процесса:
SELECT dbname, fq_name, rank, status, expansion_started, expansion_finished FROM gpexpand.status_detail ORDER BY rank;
Результат запроса будет содержать различную информацию
о ходе процесса перераспределения данных. В столбцеstatus
будет указан текущий статус обработки конкретных таблиц:-
NOT STARTED
— запланировано перераспределение данных таблицы, таблица находится в очереди на перераспределение.Если кластер не закрыт от нагрузки, то при необходимости можно повлиять на приоритет таблицы, чтобы изменить ее позицию в очереди.
-
IN PROGRESS
— происходит перераспределение данных таблицы. -
COMPLETED
— перераспределение данных таблицы завершено. -
NO LONGER EXISTS
— таблица больше не существует.
-
Дополнительные действия
Изменить приоритет перераспределения таблиц
На этапе подготовки к расширению кластера каждой таблице назначается ранг, влияющий на ее приоритет в очереди на перераспределение. Чем выше ранг таблицы, тем выше ее приоритет в очереди и тем быстрее будет выполнено перераспределение данных таблицы.
При необходимости можно изменить ранг одной или нескольких таблиц, если кластер не закрыт от нагрузки. Для этого нужно изменить таблицу в служебной схеме данных gpexpand
.
Примечание
Эта схема доступна только в ходе расширения кластера, потом она удаляется.
Чтобы изменить ранг перераспределяемых таблиц:
-
Подключитесь к базе данных
postgres
от имени пользователя с рольюmdb_admin
. -
Выполните запрос, чтобы получить текущий статус процесса перераспределения данных:
SELECT dbname, fq_name, rank, status, expansion_started, expansion_finished FROM gpexpand.status_detail ORDER BY rank;
В том числе будут выведены полные имена таблиц (
fq_name
) и их ранги (rank
). -
Измените ранг для одной или нескольких таблиц:
UPDATE gpexpand.status_detail SET rank=<нужный_ранг> WHERE fq_name IN (<список_полных_имен_таблиц>);
Подробнее см. в документации Greenplum®
.
Запустить перераспределение данных вручную
Если при расширении кластера не использовалось фоновое перераспределение данных и был установлен недостаточно большой таймаут для процесса перераспределения данных, то этот процесс может завершиться раньше, чем будут перераспределены данные всех таблиц.
При этом часть данных останется распределенной неравномерно. Как следствие, в логах кластера будет возникать ошибка Unknown error: Partially Distributed Data
. Чтобы устранить ошибку, вручную запустите перераспределение данных:
-
Узнайте общее количество сегментов в кластере:
- Получите детальную информацию о кластере.
- Умножьте количество сегментов на хост на количество хостов-сегментов.
-
Подключитесь к нужной базе данных от имени пользователя с ролью
mdb_admin
. -
Найдите таблицы, данные которых распределены неравномерно:
SELECT * FROM (SELECT oid, relname FROM pg_class) pgc JOIN (SELECT localoid AS oid, numsegments FROM gp_distribution_policy) gpdp USING (oid) WHERE numsegments != <общее_количество_сегментов>;
Будет выведен список таблиц, в котором для каждой таблицы указаны:
oid
— идентификатор таблицы;relname
— имя таблицы;numsegment
— количество сегментов, по которым размещены данные.
Подробнее см. в документации Greenplum®, посвященной таблице gp_distribution_policy
. -
Запустите перераспределение данных, пользуясь информацией, полученной ранее.
Чтобы перераспределить данные отдельной таблицы, выполните запрос:
-
Для обычной таблицы:
ALTER TABLE ONLY <имя_таблицы> EXPAND TABLE;
-
Для партиционированной
таблицы:ALTER TABLE <имя_таблицы> SET WITH (REORGANIZE=true) <политика_распределения>;
Чтобы узнать значение политики распределения Greenplum® для отдельной партиции таблицы, выполните запрос:
SELECT pg_get_table_distributedby(<OID_партиции>) AS distribution_policy;
-
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.