Расширение кластера Greenplum®
Кластер можно расширить, чтобы добавить в него дополнительные хосты-сегменты.
Процедура расширения состоит из этапа подготовки и этапа перераспределения данных. Этап перераспределения данных можно выполнить как сразу после этапа подготовки, так и позднее в фоновом режиме.
Выполнение каждого из этапов может занять длительное время. Нельзя повлиять на длительность этапа подготовки, но можно повлиять на длительность этапа перераспределения данных, таким образом контролируя общую длительность процедуры расширения кластера.
Этап подготовки
На этом этапе происходят следующие процессы:
-
В кластер добавляются новые хосты-сегменты.
-
Утилита gpexpand
производит подготовку к перераспределению таблиц:-
Создает служебную схему данных
gpexpand
в базе данныхpostgres
. -
Формирует очередь таблиц для перераспределения.
Будут перераспределены все таблицы из всех баз данных кластера, но им будет назначен разный приоритет, который влияет на положение таблицы в очереди.
Приоритетом можно управлять, если перераспределение данных для конкретной таблицы еще не началось и кластер не закрыт от нагрузки.
-
Подготавливает партиционированные таблицы
к перераспределению данных.
-
Ориентировочная длительность этапа — несколько часов, повлиять на нее нельзя. Подробнее о длительности этапов см. ниже.
Важно
Фактически новые хосты-сегменты будут добавлены в кластер уже на этом этапе, но расширение кластера считается выполненным только после завершения этапа перераспределения данных.
Этап перераспределения данных
На этом этапе происходят следующие процессы:
-
Данные таблиц в кластере перераспределяются с помощью утилиты gpexpand
таким образом, чтобы эти данные были равномерно распределены по всем хостам-сегментам. -
Служебная схема данных
gpexpand
удаляется.
Ориентировочная длительность этапа — несколько дней, на нее можно повлиять с помощью настроек. Подробнее о длительности этапов см. ниже.
Длительность этапов и контроль за длительностью
Ориентировочная длительность каждого этапа составляет:
- Несколько часов для этапа подготовки.
- Несколько дней для этапа перераспределения данных.
Реальная длительность каждого этапа зависит не только от объема баз данных в кластере и общего количества таблиц, но также от уровня и характера нагрузки на кластер.
Это связано с тем, что на каждом этапе расширения кластера работает утилита gpexpandgpexpand
, так и обработка пользовательских запросов: это зависит от того, какой процесс первым захватил блокировку, а какой — ожидает особождения этой блокировки. Оба этих процесса могут создавать повышенную нагрузку на кластер.
Этап подготовки сократить нельзя, но можно повлиять на длительность этапа перераспределения данных. Для этого перед запуском процедуры укажите необходимые настройки, которые определяют поведение кластера на этом этапе. Комбинируя настройки, можно найти нужный баланс между скоростью перераспределения данных и скоростью обработки пользовательских запросов.
Поскольку этап перераспределения данных может длиться достаточно долго, для кластеров Managed Service for Greenplum® предоставляются инструменты для мониторинга процесса перераспределения данных. Используйте эти инструменты, когда запущено расширение кластера, чтобы получить более точную информацию о ходе процесса и оценить время до его завершения.
Настройки, влияющие на процесс перераспределения данных
Доступны следующие настройки:
-
Закрыть кластер от нагрузки
Консоль управления
CLI
API
Если настройка включена (
true
), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее, потому что не нужно ожидать освобождения блокировок, которые бы захватывались при выполнении поступающих пользовательских запросов.Важно
Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.
Процесс расширения может выполняться длительное время.
-
Фоновое перераспределение данных
Консоль управления
CLI
API
Эта настройка влияет на стратегию перераспределения данных:
-
Если настройка выключена (
false
), то данные будут перераспределены сразу же после завершения этапа подготовки к расширению кластера.Кластер будет находиться в статусе
Updating
до тех пор, пока не завершатся все этапы расширения кластера.Процесс перераспределения данных будет запущен однократно и продлится либо до завершения перераспределения всех таблиц в кластере, либо до истечения соответствующего таймаута.
Если процесс перераспределения данных завершится по таймауту и часть таблиц останется не обработанной, то такие таблицы потребуется перераспределить вручную.
-
Если настройка включена (
true
), то перераспределение данных будет отложено.Кластер будет находиться в статусе
Updating
только на этапе подготовки к расширению кластера.Процесс перераспределения данных будет запускаться по расписанию во время выполнения регламентных операций до тех пор, пока не будут обработаны все таблицы.
При включенном фоновом перераспределении данных регламентные операции выполняются по следующему алгоритму:
-
Выполняется очистка пользовательских таблиц (
VACUUM
). -
Выполняется перераспределение данных (
REDISTRIBUTE
):- Если до истечения таймаута были обработаны все таблицы, то процесс перераспределения данных будет удален из расписания регламентных работ и больше не будет запускаться.
- Если до истечения таймаута была обработана только часть таблиц, то процесс запустится повторно при следующем проведении регламентных операций и обработка таблиц будет продолжена.
-
Выполняется сбор статистики (
ANALYZE
).
-
-
-
Таймаут редистрибуции
Консоль управления
CLI
API
Таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.
Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус
IN PROGRESS
). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.Минимальное значение —
0
. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.Максимальное значение зависит от того, включено ли фоновое перераспределение данных:
28800
(8 часов) — если включено.- Не ограничено — если выключено.
-
Количество потоков редистрибуции
Консоль управления
CLI
API
Количество потоков, которые будут запущены в ходе процесса перераспределения данных.
Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.
Минимальное значение (по умолчанию) —
0
(количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное —25
.
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.