Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Greenplum®
  • Начало работы
    • Все инструкции
      • Информация об имеющихся кластерах
      • Создание кластера
      • Расширение кластера
      • Изменение конфигурации кластера
      • Изменение настроек кластера
      • Остановка и запуск кластера
      • Управление резервными копиями
      • Удаление кластера
    • Подключение к базе данных
    • Подключение к внешнему файловому серверу (gpfdist)
    • Вспомогательные утилиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Расширить кластер
  • Мониторинг перераспределения данных
  • Дополнительные действия
  • Изменить приоритет перераспределения таблиц
  • Запустить перераспределение данных вручную
  1. Пошаговые инструкции
  2. Кластеры
  3. Расширение кластера

Расширение кластера

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 7 мая 2025 г.
  • Расширить кластер
  • Мониторинг перераспределения данных
  • Дополнительные действия
    • Изменить приоритет перераспределения таблиц
    • Запустить перераспределение данных вручную

Вы можете расширить кластер Managed Service for Greenplum®, добавив хосты-сегменты. Количество добавляемых хостов не может быть меньше двух. Вы также можете увеличить количество сегментов на хост.

Во время расширения кластера данные автоматически перераспределяются равномерно по всем хостам кластера (включая добавленные хосты). Подробнее см. в разделе Расширение кластера Greenplum®.

Расширить кластерРасширить кластер

Консоль управления
CLI
REST API
gRPC API
  1. Перейдите на страницу каталога и выберите сервис Managed Service for Greenplum.

  2. Выберите кластер и откройте вкладку Хосты.

  3. Нажмите кнопку Расширить кластер в правом верхнем углу.

  4. Укажите настройки расширения кластера:

    • Количество новых хостов-сегментов — количество хостов-сегментов, на которое нужно расширить кластер.

      Минимальное значение (по умолчанию) — 2, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов).

    • Добавить сегментов на хост — количество добавляемых сегментов на хост.

      Важно

      Сегменты будут добавлены на все хосты — как новые, так и существующие.

      Минимальное значение (по умолчанию) — 0 (количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов.

      Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Greenplum®. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.

    • Закрыть кластер от нагрузки — закрыть ли кластер для доступа.

      Если настройка включена, то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.

      Важно

      Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.

      Процесс расширения может выполняться длительное время.

    • Фоновое перераспределение данных — использовать ли фоновое перераспределение данных.

      • Если фоновый режим выключен, то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.

        Кластер будет находиться в статусе Updating до тех пор, пока не завершатся все этапы расширения кластера.

        Важно

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

      • Если фоновый режим включен, то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.

        Кластер будет находиться в статусе Updating только на этапе подготовки к расширению кластера.

    • Таймаут редистрибуции — таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.

      Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус IN PROGRESS). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.

      Минимальное значение — 0. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.

      Максимальное значение зависит от того, включено ли фоновое перераспределение данных:

      • 28800 (8 часов) — если включено.
      • Не ограничено — если выключено.
    • Количество потоков редистрибуции — количество потоков, которые будут запущены в ходе процесса перераспределения данных.

      Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.

      Минимальное значение (по умолчанию) — 0 (количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное — 25.

  5. Нажмите кнопку Расширить.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы расширить кластер:

  1. Посмотрите описание команды CLI для расширения кластера:

    yc managed-greenplum cluster expand --help
    
  2. Выполните команду, чтобы расширить кластер:

    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 (количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов.

      Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Greenplum®. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.

    • --close-cluster — закрыть ли кластер для доступа: true или false.

      Если настройка включена (true), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.

      Важно

      Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.

      Процесс расширения может выполняться длительное время.

    • --delay-redistribution — использовать ли фоновое перераспределение данных: true или false.

      • Если фоновый режим выключен (false), то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.

        Кластер будет находиться в статусе Updating до тех пор, пока не завершатся все этапы расширения кластера.

        Важно

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

      • Если фоновый режим включен (true), то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.

        Кластер будет находиться в статусе Updating только на этапе подготовки к расширению кластера.

    • --duration-seconds — таймаут (в секундах), после истечения которого процесс перераспределения данных будет прерван.

      Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус IN PROGRESS). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.

      Минимальное значение — 0. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.

      Максимальное значение зависит от того, включено ли фоновое перераспределение данных:

      • 28800 (8 часов) — если включено.
      • Не ограничено — если выключено.
    • --parallel — количество потоков, которые будут запущены в ходе процесса перераспределения данных.

      Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.

      Минимальное значение (по умолчанию) — 0 (количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное — 25.

    Идентификатор и имя кластера можно получить со списком кластеров в каталоге.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Воспользуйтесь методом Cluster.Expand и выполните запрос, например, с помощью cURL:

    curl \
        --request POST \
        --header "Authorization: Bearer $IAM_TOKEN" \
        --header "Content-Type: application/json" \
        --url 'https://mdb.api.cloud.yandex.net/managed-greenplum/v1/clusters/<идентификатор_кластера>/expand' \
        --data '{
                  "segmentHostCount": "<количество_добавляемых_хостов-сегментов>",
                  "addSegmentsPerHostCount": "<количество_добавляемых_сегментов_на_хост>",
                  "duration": "<таймаут_перераспределения_данных>",
                  "parallel": "<количество_потоков_перераспределения_данных>",
                  "closeCluster": "<временный_запрет_на_подключение_к_кластеру>",
                  "delayRedistribution": "<фоновое_перераспределение_данных>"
                }'
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

    Параметры тела запроса:

    • segmentHostCount — количество хостов-сегментов, на которое нужно расширить кластер.

      Минимальное значение (по умолчанию) — 2, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов).

    • addSegmentsPerHostCount — количество добавляемых сегментов на хост.

      Важно

      Сегменты будут добавлены на все хосты — как новые, так и существующие.

      Минимальное значение (по умолчанию) — 0 (количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов.

      Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Greenplum®. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.

    • duration — таймаут в секундах, после истечения которого процесс перераспределения данных будет прерван.

      Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус IN PROGRESS). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.

      Минимальное значение — 0. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.

      Максимальное значение зависит от того, включено ли фоновое перераспределение данных:

      • 28800 (8 часов) — если включено.
      • Не ограничено — если выключено.
    • parallel — количество потоков, которые будут запущены в ходе процесса перераспределения данных.

      Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.

      Минимальное значение (по умолчанию) — 0 (количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное — 25.

    • closeCluster — закрыть кластер для доступа: true или false.

      Если настройка включена (true), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.

      Важно

      Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.

      Процесс расширения может выполняться длительное время.

    • delayRedistribution — использовать фоновое перераспределение данных: true или false.

      • Если фоновый режим выключен (false), то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.

        Кластер будет находиться в статусе Updating до тех пор, пока не завершатся все этапы расширения кластера.

        Важно

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

      • Если фоновый режим включен (true), то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.

        Кластер будет находиться в статусе Updating только на этапе подготовки к расширению кластера.

  3. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

  1. Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:

    export IAM_TOKEN="<IAM-токен>"
    
  2. Клонируйте репозиторий cloudapi:

    cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
    

    Далее предполагается, что содержимое репозитория находится в директории ~/cloudapi/.

  3. Воспользуйтесь вызовом ClusterService.Expand и выполните запрос, например, с помощью gRPCurl:

    grpcurl \
        -format json \
        -import-path ~/cloudapi/ \
        -import-path ~/cloudapi/third_party/googleapis/ \
        -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/cluster_service.proto \
        -rpc-header "Authorization: Bearer $IAM_TOKEN" \
        -d '{
              "cluster_id": "<идентификатор_кластера>",
              "segment_host_count": "<количество_добавляемых_хостов-сегментов>",
              "add_segments_per_host_count": "<количество_добавляемых_сегментов_на_хост>",
              "duration": "<таймаут_перераспределения_данных>",
              "parallel": "<количество_потоков_перераспределения_данных>",
              "close_cluster": "<временный_запрет_на_подключение_к_кластеру>",
              "delay_redistribution": "<фоновое_перераспределение_данных>"
            }' \
        mdb.api.cloud.yandex.net:443 \
        yandex.cloud.mdb.greenplum.v1.ClusterService.Expand
    

    Идентификатор кластера можно запросить со списком кластеров в каталоге.

    Параметры тела запроса:

    • segment_host_count — количество хостов-сегментов, на которое нужно расширить кластер.

      Минимальное значение (по умолчанию) — 2, максимальное значение ограничено лимитом на количество хостов-сегментов в кластере (за вычетом существующих хостов).

    • add_segments_per_host_count — количество добавляемых сегментов на хост.

      Важно

      Сегменты будут добавлены на все хосты — как новые, так и существующие.

      Минимальное значение (по умолчанию) — 0 (количество сегментов на хост остается неизменным), максимальное — зависит от класса хостов.

      Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Greenplum®. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.

    • duration — таймаут в секундах, после истечения которого процесс перераспределения данных будет прерван.

      Истечение таймаута не приводит к немедленному прерыванию процесса: будет завершено перераспределение данных для тех таблиц, которые находятся в обработке (статус IN PROGRESS). Можно запросить статус таблиц, если кластер не закрыт от нагрузки.

      Минимальное значение — 0. Таймаут будет рассчитан автоматически в зависимости от конфигурации кластера и объема данных.

      Максимальное значение зависит от того, включено ли фоновое перераспределение данных:

      • 28800 (8 часов) — если включено.
      • Не ограничено — если выключено.
    • parallel — количество потоков, которые будут запущены в ходе процесса перераспределения данных.

      Большее количество потоков ускорит перераспределение данных, но увеличит нагрузку на кластер.

      Минимальное значение (по умолчанию) — 0 (количество будет рассчитано автоматически в зависимости от конфигурации кластера и объема данных), максимальное — 25.

    • close_cluster — закрыть кластер для доступа: true или false.

      Если настройка включена (true), то к кластеру нельзя подключиться и в него не поступают новые пользовательские запросы. В результате расширение кластера будет выполняться быстрее.

      Важно

      Если вы закроете кластер от нагрузки и при этом выключите фоновое перераспределение данных, то потеряете доступ к кластеру до завершения расширения кластера.

      Процесс расширения может выполняться длительное время.

    • delay_redistribution — использовать фоновое перераспределение данных: true или false.

      • Если фоновый режим выключен (false), то процесс перераспределения будет запущен однократно сразу после завершения подготовки к расширению кластера.

        Кластер будет находиться в статусе Updating до тех пор, пока не завершатся все этапы расширения кластера.

        Важно

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

      • Если фоновый режим включен (true), то процесс перераспределения будет отложен. Процесс будет выполняться по заданному расписанию как регламентная операция.

        Кластер будет находиться в статусе Updating только на этапе подготовки к расширению кластера.

  4. Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.

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

Доступно несколько способов мониторинга процесса перераспределения данных:

  • Если кластер закрыт от нагрузки и фоновое перераспределение данных выключено, то отслеживать ход процесса можно только с помощью инструментов мониторинга Yandex Cloud.

    Наблюдайте за графиком Expansion progress на вкладке Мониторинг страницы управления кластером или запрашивайте значения метрик gp_expand.* с помощью сервиса Yandex Monitoring.

  • Если кластер не закрыт от нагрузки, то также можно выполнять SQL-запросы к объектам служебной схемы данных gpexpand.

    Примечание

    Эта схема доступна только в ходе расширения кластера, потом она удаляется.

    Чтобы отслеживать ход процесса перераспределения данных с помощью SQL-запросов:

    1. Подключитесь к базе данных postgres от имени пользователя с ролью mdb_admin.

    2. Выполните запрос, чтобы получить текущий статус процесса:

      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.

Примечание

Эта схема доступна только в ходе расширения кластера, потом она удаляется.

Чтобы изменить ранг перераспределяемых таблиц:

  1. Подключитесь к базе данных postgres от имени пользователя с ролью mdb_admin.

  2. Выполните запрос, чтобы получить текущий статус процесса перераспределения данных:

    SELECT dbname, fq_name, rank, status, expansion_started, expansion_finished
    FROM gpexpand.status_detail
    ORDER BY rank;
    

    В том числе будут выведены полные имена таблиц (fq_name) и их ранги (rank).

  3. Измените ранг для одной или нескольких таблиц:

    UPDATE gpexpand.status_detail
    SET rank=<нужный_ранг>
    WHERE fq_name IN (<список_полных_имен_таблиц>);
    

    Подробнее см. в документации Greenplum®.

Запустить перераспределение данных вручнуюЗапустить перераспределение данных вручную

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

При этом часть данных останется распределенной неравномерно. Как следствие, в логах кластера будет возникать ошибка Unknown error: Partially Distributed Data. Чтобы устранить ошибку, вручную запустите перераспределение данных:

  1. Узнайте общее количество сегментов в кластере:

    1. Получите детальную информацию о кластере.
    2. Умножьте количество сегментов на хост на количество хостов-сегментов.
  2. Подключитесь к нужной базе данных от имени пользователя с ролью mdb_admin.

  3. Найдите таблицы, данные которых распределены неравномерно:

    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.

  4. Запустите перераспределение данных, пользуясь информацией, полученной ранее.

    Чтобы перераспределить данные отдельной таблицы, выполните запрос:

    • Для обычной таблицы:

      ALTER TABLE ONLY <имя_таблицы> EXPAND TABLE;
      
    • Для партиционированной таблицы:

      ALTER TABLE <имя_таблицы>
      SET WITH (REORGANIZE=true) <политика_распределения>;
      

      Чтобы узнать значение политики распределения Greenplum® для отдельной партиции таблицы, выполните запрос:

      SELECT pg_get_table_distributedby(<OID_партиции>) AS distribution_policy;
      

Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.

Была ли статья полезна?

Предыдущая
Создание кластера
Следующая
Изменение конфигурации кластера
Проект Яндекса
© 2025 ООО «Яндекс.Облако»