Привет, Я DocuDroid!
Оценка ИИ поиска
Спасибо за оценку нашего ИИ поиска!
Мы будем признательны, если вы поделитесь своими впечатлениями, чтобы мы могли улучшить наш ИИ поиск для вас и других читателей.
GitHub

ggrebalance

Изменяет топологию существующего кластера Greengage DB: число сегментов и/или набор хостов, на которых они располагаются.

ВАЖНО

В версии 1.0 ggrebalance не поддерживает расширение кластера. Чтобы увеличить количество сегментов, используйте утилиту gpexpand.

Синтаксис

ggrebalance -x <segment_count>
    [-n <parallel_processes>] [-B <batch_size>]
    [{-H <hostname_1>,<hostname_2>,...,<hostname_N> | --target-hosts-file <filename>} |
     {{-A <hostname_1>,<hostname_2>,...,<hostname_N> | --add-hosts-file <filename>}
      {-R <hostname_1>,<hostname_2>,...,<hostname_N> | --remove-hosts-file <filename>}}]
    [{-d "<target_primary_datadir>,<target_mirror_datadir>" | --target-datadirs-file <filename>}]
    [-m grouped|spread] [--inplace-swap-roles] [-p]
    [--skip-resource-estimation] [--skip-rebalance]
    [{-T hh:mm:ss | -E 'YYYY-MM-DD hh:mm:ss'}]
    [{-D | -S | --no-progress}]
    [--hba-hostnames] [--replay-lag <replay_lag>] [-a]
    [--non-interactive-mode] [-y] [-l <log_dir>] [-q] [-v]
    [--seed <planner_seed>]

ggrebalance
    [-n <parallel_processes>] [-B <batch_size>]
    [{-T hh:mm:ss | -E 'YYYY-MM-DD hh:mm:ss'}]
    [{-D | -S | --no-progress}]
    [--hba-hostnames] [--replay-lag <replay_lag>] [-a]
    [--non-interactive-mode] [-y] [-l <log_dir>] [-q] [-v]

ggrebalance -r
    [-n <parallel_processes>] [-B <batch_size>]
    [{-T hh:mm:ss | -E 'YYYY-MM-DD hh:mm:ss'}]
    [{-D | -S | --no-progress}]
    [--hba-hostnames] [--replay-lag <replay_lag>] [-a]
    [--non-interactive-mode] [-y] [-l <log_dir>] [-q] [-v]

ggrebalance -c

ggrebalance -? | -h | --help | --usage

ggrebalance --version

Предварительные требования

  • При добавлении новых сегмент-хостов они должны быть предварительно подготовлены и настроены так же, как и существующие сегмент-хосты. Это включает:

    • Настройку аппаратного и программного обеспечения.

    • Установку Greengage DB.

    • Создание учетной записи пользователя gpadmin.

    • Обмен SSH-ключами.

  • На всех сегмент-хостах должно быть достаточно дискового пространства:

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

    • Во время ребалансировки сегмент-хост может временно хранить больше сегментов, чем в итоговом сбалансированном состоянии.

  • При перераспределении данных кластер Greengage DB должен работать в рабочем (production) режиме. Он не должен быть запущен в ограниченном режиме (gpstart -R) или режиме только координатора (gpstart -m).

ПРИМЕЧАНИЕ

Эти утилиты нельзя запускать во время работы ggrebalance: gpbackup, gpcheckcat, gpconfig, gpexpand, gprestore.

ВАЖНО

При расширении или уменьшении кластера Greengage DB необходимо отключить прокси для интерконнекта (ic-proxy) перед изменением топологии кластера. После завершения обновите параметр gp_interconnect_proxy_addresses в соответствии с новой топологией и повторно включите прокси для интерконнекта. Дополнительную информацию о прокси для интерконнекта в кластере Greengage DB см. в статье Настройка прокси для интерконнекта.

Описание

ggrebalance изменяет физическую топологию кластера Greengage DB, перераспределяя данные между сегментами и изменяя их размещение по хостам.

Утилита поддерживает следующие изменения топологии:

  • добавление и удаление сегмент-хостов (расширение и уменьшение кластера);

    ВАЖНО

    В версии 1.0 ggrebalance не поддерживает увеличение числа сегментов (расширение кластера). Для расширения используйте утилиту gpexpand.

  • изменение общего количества сегментов в кластере;

  • перераспределение сегментов между хостами;

  • изменение политики зеркалирования.

В зависимости от заданных параметров ggrebalance можно использовать в следующих сценариях:

  • удаление и добавление хостов с сохранением общего количества сегментов;

  • удаление и добавление хостов с уменьшением количества сегментов;

  • перенос сегментов на другой набор хостов;

  • перенос сегментов на другой набор хостов с уменьшением количества сегментов;

  • изменение политики зеркалирования для существующих сегментов;

  • перераспределение сегментов на тех же хостах для достижения сбалансированного состояния.

ПРИМЕЧАНИЕ

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

Сбалансированное состояние

Целевая конфигурация кластера считается сбалансированной, если выполняются следующие условия:

  • каждый сегмент-хост содержит одинаковое количество основных сегментов;

  • зеркальные сегменты распределены в соответствии с выбранной политикой (grouped или spread);

  • основной сегмент и его зеркало не находятся на одном и том же хосте.

Если такую топологию невозможно построить при указанных в вызове аргументах, ggrebalance сообщает об ошибке и не выполняет никаких изменений.

Порядок выполнения

При запуске ggrebalance выполняет шаги, которые безопасно переводят кластер к целевой топологии:

  1. Построение и проверка плана

    Сначала утилита формирует план ребалансировки — упорядоченную последовательность шагов, необходимых для достижения целевой конфигурации. Выполнение плана должно приводить к сбалансированному состоянию; кроме того, план должен быть технически выполнимым. Если любое из этих условий не выполняется, утилита сообщает об ошибке и завершает работу без внесения изменений. Вы можете просмотреть сгенерированный план без выполнения операций ребалансировки с помощью параметра --show-plan.

  2. Инициализация состояния

    В базе данных postgres создается схема ggrebalance. Эта схема хранит метаданные операции ребалансировки и отслеживает ход выполнения.

  3. Изменение количества сегментов (опционально)

    Если целевое количество сегментов отличается от текущего, ggrebalance изменяет его. На этом этапе утилита выполняет операции ALTER TABLE …​ REBALANCE для обычных таблиц, материализованных представлений и пишущих внешних таблиц, чтобы перераспределить данные по новому набору сегментов.

  4. Перемещение сегментов

    Экземпляры сегментов перемещаются между хостами в соответствии с планом. Этот этап может включать переключения (switchover) — смену ролей между основными сегментами и их зеркалами. Переключение выполняется для копирования данных основного сегмента, поскольку перемещение основных сегментов во время работы невозможно. Для этого основной сегмент меняется ролями со своим зеркалом. Каждое переключение требует подтверждения пользователя, если не указан параметр --approve-swap-roles.

После успешного завершения схема ggrebalance остается в кластере и хранит информацию о выполненной операции. Перед запуском новой операции ребалансировки удалите эту схему с помощью ggrebalance -c.

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

Операцию ребалансировки можно разбить на несколько сессий с помощью параметров -T (максимальная длительность) или -E (время завершения). В этом режиме прогресс сохраняется в схеме ggrebalance. Чтобы продолжить прерванную операцию, запустите ggrebalance без параметров изменения топологии или задайте новое ограничение времени с помощью -T или -E.

Если операция ребалансировки была прервана или завершилась с ошибкой, вы можете попытаться откатить ее с помощью параметра -r.

Параметры

-a | --analyze

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

--add-hosts-file <filename>

Указывает файл со списком хостов, которые нужно добавить в кластер при расширении, по одному на строку. Чтобы указать новые хосты в аргументе командной строки, используйте --add-hosts.

-A | --add-hosts <hostname_1>,<hostname_2>,…​,<hostname_N>

Указывает список хостов, которые нужно добавить в кластер при расширении, через запятую. Чтобы указать новые хосты в файле, используйте --add-hosts-file.

-B | --batch-size <batch_size>

Задает максимальное количество экземпляров сегментов на хост, обрабатываемых параллельно при перемещении сегментов. Этот параметр ограничивает число операций над сегментами (копирование, запуск, остановка), выполняемых одновременно на одном хосте. Значение по умолчанию — 4. Допустимые значения: 1 — 128.

-c | --clean

Удаляет существующую схему ggrebalance и файлы, созданные предыдущей операцией ребалансировки, за исключением лог-файлов. Используйте этот параметр после успешной ребалансировки, чтобы можно было запустить новую операцию.

-d | --target-datadirs "<target_primary_datadir>,<target_mirror_datadir>"

Указывает расположение каталогов данных для экземпляров сегментов на хостах, добавляемых при расширении. Значение должно быть строкой в двойных кавычках, содержащей два пути к каталогам, разделенных запятой: первый — для основных сегментов, второй — для зеркал. ggrebalance создает эти каталоги на всех новых хостах, если они отсутствуют.

Чтобы указать каталоги данных для новых хостов в файле, используйте --target-datadirs-file.

-D | --detailed-progress

Отображает подробную информацию о ходе выполнения операции в представлении ggrebalance.rebalance_progress.

-E | --end 'YYYY-MM-DD hh:mm:ss'

Задает временную метку UTC завершения текущего сеанса ребалансировки. Операция корректно останавливается при достижении указанного времени с сохранением прогресса.

--hba-hostnames

(Опционально) Определяет, использовать ли имена хостов в файле pg_hba.conf при добавлении адресов для подключения к Greengage DB. По умолчанию утилита использует IP-адреса. Для согласованности рекомендуется использовать то же значение, которое было задано для HBA_HOSTNAMES при инициализации системы Greengage DB.

-H | --target-hosts <hostname_1>,<hostname_2>,…​,<hostname_N>

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

Чтобы указать целевой список хостов в файле, используйте опцию --target-hosts-file.

--inplace-swap-roles

Разрешает временное размещение основных сегментов на одних и тех же хостах с зеркалами во время выполнения операции. По умолчанию ggrebalance избегает совместного размещения основных и зеркальных сегментов и может требовать использования промежуточных хостов для безопасного перемещения. Использование этого параметра нужно, если хостов недостаточно, чтобы выполнить все перемещения через промежуточные хосты. При этом отказоустойчивость может снижаться на время выполнения перемещений.

-l | --log-dir <log_dir>

Каталог, в который записываются лог-файлы. По умолчанию используется ~/gpAdminLogs.

-m | --mirror-mode grouped|spread

Задает политику зеркалирования в кластере после ребалансировки: grouped (по умолчанию) или spread.

-n | --parallel <parallel_processes>

Уровень параллелизма операции:

  • при перемещении сегментов задает количество хостов, обрабатываемых одновременно;

  • при изменении количества сегментов (перераспределении таблиц) задает максимальное количество таблиц, обрабатываемых параллельно.

Значение по умолчанию — 4. Допустимые значения: 1 — 96.

--no-progress

Отключает вывод информации о ходе выполнения в представление ggrebalance.rebalance_progress.

--non-interactive-mode

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

-p | --show-plan

Отображает сформированный план ребалансировки без его выполнения.

-q | --quiet

Запускает утилиту в тихом режиме. Вывод не отображается на экране, но записывается в журнал.

-r | --rollback

Откатывает прерванную операцию, если это возможно.

--remove-hosts-file <filename>

Указывает файл со списком хостов, которые нужно удалить из кластера при уменьшении, по одному на строку. Чтобы указать хосты в аргументе командной строки, используйте --remove-hosts.

--replay-lag <replay_lag>

Допустимая задержка воспроизведения (replay lag) на зеркале (в ГБ) при балансировке сегментов. Если текущая задержка превышает указанное значение, балансировка будет прервана.

-R | --remove-hosts <hostname_1>,<hostname_2>,…​,<hostname_N>

Указывает список хостов, которые нужно удалить из кластера при уменьшении, через запятую. Чтобы указать хосты в файле, используйте --remove-hosts-file.

--seed <planner_seed>

Указывает seed-значение для обеспечения генерации одинаковых планов в нескольких вызовах ggrebalance. Допустимые значения — неотрицательные целые числа.

--skip-rebalance

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

--skip-resource-estimation

Пропускает проверку доступного дискового пространства и других ресурсов перед выполнением. Используйте с осторожностью, так как нехватка ресурсов может привести к сбою операции.

-S | --simple-progress

Отображает информацию о ходе операции в представлении ggrebalance.rebalance_progress в упрощенном виде.

--target-datadirs-file <filename>

Указывает файл с путями к каталогам данных для экземпляров сегментов на хостах, добавляемых при расширении. Файл должен содержать две строки: первая — каталог данных для основных сегментов, вторая — для зеркал. ggrebalance создает эти каталоги на всех новых хостах, если они отсутствуют.

Чтобы указать каталоги данных в аргументе командной строки, используйте --target-datadirs.

--target-hosts-file <filename>

Указывает файл с полным списком хостов целевого состояния кластера после выполнения операции, по одному на строку. Файл должен включать все целевые хосты и только их, независимо от того, входят ли они в кластер до начала операции. Чтобы указать целевой список хостов в аргументе командной строки, используйте опцию --target-hosts.

-T | --duration hh:mm:ss

Указывает максимальную длительность текущего сеанса ребалансировки. По истечении этого времени операция корректно останавливается и может быть продолжена позже.

-v | --verbose

Включает подробный вывод отладочной информации.

-x | --target-segment-count <segment_count>

Указывает целевое число основных сегментов в кластере. Это число может быть больше или меньше текущего числа сегментов. В зависимости от этого ggrebalance выполнит расширение или уменьшение кластера соответственно. Возможные значения: 1 — 4096.

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

-y | --approve-swap-roles

Автоматически разрешает переключения (смены ролей основной-зеркальный) сегментов в интерактивном режиме без запроса подтверждения от пользователя.

--version

Выводит версию ggrebalance и завершает работу.

-? | -h | --help | --usage

Выводит справочную информацию и завершает работу.

Примеры

Удалить хост из кластера и уменьшить количество сегментов:

$ ggrebalance --target-segment-count 6 --remove-hosts sdw4

Показать план ребалансировки без выполнения изменений:

$ ggrebalance --show-plan \
    --mirror-mode grouped \
    --target-segment-count 6 \
    --remove-hosts sdw4

Перераспределить сегменты между теми же хостами для улучшения баланса:

$ ggrebalance --target-segment-count 8

Запустить ребалансировку с ограничением времени:

$ ggrebalance --target-segment-count 6 --remove-hosts sdw4 -T 00:30:00

Продолжить прерванную операцию:

$ ggrebalance

Откатить прерванную операцию:

$ ggrebalance -r

Удалить схему ggrebalance после завершения операции:

$ ggrebalance -c