Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Greenplum®
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Расчет конфигурации кластера
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • Управление хостами кластера
      • Просмотр хостов кластера
      • Расширение кластера
    • Изменение настроек кластера
    • Управление ролями и пользователями
    • Управление клиентскими процессами
    • Использование внешних таблиц
    • Расширения Greenplum
      • Управление расширениями
      • pgcrypto
      • uuid-cb
    • Управление резервными копиями
    • Просмотр логов кластера
    • Удаление кластера
    • Диагностика производительности
    • Мониторинг состояния кластера и хостов
    • Управление ресурсными группами
  • Практические руководства
    • Миграция базы данных в Managed Service for Greenplum®
    • Создание внешней таблицы на базе таблицы из бакета Yandex Object Storage с помощью конфигурационного файла
    • Миграция базы данных из Greenplum® в PostgreSQL
    • Миграция базы данных из Greenplum® в ClickHouse
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Сеть в Managed Service for Greenplum®
    • Квоты и лимиты
    • Типы дисков
    • Резервные копии
    • Ресурсные группы
    • Шардирование
    • Типы хранения данных
    • Пользователи и роли
    • Техническое обслуживание
    • Настройки Greenplum®
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • ResourcePresetService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • create
        • delete
        • expand
        • get
        • list
        • listBackups
        • listLogs
        • listMasterHosts
        • listOperations
        • listSegmentHosts
        • restore
        • start
        • stop
        • streamLogs
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Подключение
    • Резервное копирование
    • Изменение кластера
    • Кластер и хосты Managed Service for Greenplum®
    • Работа с внешними таблицами
    • Управление пользователями
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Управление хостами кластера
  3. Расширение кластера

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

Статья создана
Yandex Cloud
  • Добавить хосты-сегменты
  • Мониторинг перераспределения данных
  • Пример ручного перераспределения данных

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

Для расширения кластера используется утилита gp_expand. Подробнее об утилите и ее режиме работы см. в документации Greenplum®.

Перераспределение данных бывает двух типов:

  • Автоматическое — после обновления кластера выполняется перенос части данных в новые сегменты последовательно для каждой таблицы в течение таймаута, указанного в параметрах расширения. Во время переноса таблица недоступна для операций чтения и записи. После завершения таймаута перераспределение данных прекращается.
  • Ручное — выполняется пользователем самостоятельно после добавления новых сегментов. Для этого укажите таймаут 0 в параметрах расширения.

Добавить хосты-сегменты

CLI
API

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

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

Чтобы добавить хосты-сегменты в кластер Greenplum®:

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

    yc managed-greenplum cluster expand --help
    
  2. Укажите параметры хостов-сегментов кластера в команде расширения кластера:

    yc managed-greenplum cluster expand <имя кластера> \
       --segment-host-count <количество добавляемых хостов-сегментов> \
       --add-segments-per-host-count <количество добавляемых сегментов на хост> \
       --duration-seconds <таймаут перераспределения данных в секундах>
    

    Значение по умолчанию для параметра --duration-seconds – 7200 (2 часа).

Воспользуйтесь методом API expand и передайте в запросе:

  • Идентификатор кластера в параметре clusterId.
  • Количество добавляемых хостов-сегментов в параметре segmentHostCount.
  • Количество добавляемых сегментов на хост в параметре addSegmentsPerHostCount.
  • Таймаут перераспределения данных (в секундах) в параметре duration. Минимальное значение и значение по умолчанию — 0 (не выполнять перераспределение).

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

Важно

Минимальное (0) или малое (меньше 2 часов) значение таймаута перераспределения может снизить производительность кластера. В этом случае повторно запустите перераспределение вручную (см. Пример).

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

Чтобы следить за ходом перераспределения данных по новым сегментам, подключитесь к базе postgres и выполните запрос от имени пользователя с ролью mdb_admin:

SELECT dbname, fq_name, status, expansion_started, source_bytes FROM gpexpand.status_detail;
  dbname   |               fq_name               |   status    |     expansion_started      | source_bytes
-----------+-------------------------------------+-------------+----------------------------+-------------
 diskquota | diskquota_namespace.database_list   | NOT STARTED |                            |            0
 postgres  | public.rnd_nocomp_distrnd_ao_res3   | NOT STARTED |                            |  52558742480
 postgres  | public.rnd_nocomp_distrnd_ao1       | COMPLETED   | 2022-09-06 12:44:36.71759  |     13013536
 postgres  | public.rnd_nocomp_distrnd_ao_res2   | IN PROGRESS | 2022-09-06 13:03:29.231359 |  63070490912
(4 rows)

Текущий статус перераспределения будет указан в колонке status.

Найти таблицы, которые перераспределились не полностью, можно с помощью запроса:

SELECT * FROM gp_toolkit.gp_skew_coefficients ORDER BY skccoeff DESC;

Пример ручного перераспределения данных

Если при расширении кластера Greenplum® указан таймаут 0 или мониторинг показывает, что не все данные перераспределены по новым сегментам, то необходимо выполнить перераспределение вручную:

  • Для обычных таблиц выполните запрос:

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

    ALTER TABLE <имя_таблицы> SET WITH (REORGANIZE=true) <distribution_policy>;
    

    где <distribution_policy> – это строка, обозначающая политику распределения Greenplum® для партиции выбранной таблицы. Ее можно получить в результате вызова встроенной функции Greenplum®:

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

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

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Добавить хосты-сегменты
  • Мониторинг перераспределения данных
  • Пример ручного перераспределения данных