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

gprecoverseg

Восстанавливает основной или зеркальный сегмент, отмеченный как неактивный (если включено зеркалирование).

Синтаксис

gprecoverseg [-p <new_recover_host>[,...]]
             |-i <recover_config_file>
             [-d <master_data_directory>]
             [-B <batch_size>] [-b <segment_batch_size>] [--differential]
             [-F] [-a] [-q] [-s] [--no-progress]
             [--hba-hostnames]
             [-l <logfile_directory>]
             [-v | --verbose]

gprecoverseg -r [--replay-lag <replay_lag>]

gprecoverseg -o <output_recover_config_file>
             [-p <new_recover_host>[,...]]

gprecoverseg -? | -h | --help

gprecoverseg --version

Описание

В системе с включенным зеркалированием утилита gprecoverseg реактивирует отказавший сегмент и определяет измененные файлы базы данных, требующие синхронизации. После завершения процесса СУБД переходит в режим Not in Sync и остается в нем до полной синхронизации восстановленного сегмента. При этом система остается доступной и полностью работоспособной.

При инкрементальном восстановлении (без указания параметра -F) утилита gprecoverseg, обнаружив сегмент без зеркала в кластере с включенным зеркалированием, выводит соответствующее сообщение, пропускает восстановление данного сегмента и продолжает выполнение.

Сегмент может отказать по разным причинам: отказ хоста, сбой сети или проблемы с диском. При отказе сегмента его статус помечается как d (down) в системном каталоге Greengage DB, а его зеркало активируется в режиме Not in Sync. Для восстановления отказавшего сегмента необходимо сначала устранить причину отказа, после чего выполнить восстановление сегмента с помощью утилиты gprecoverseg.

Восстановление сегментов с помощью gprecoverseg требует наличия активного зеркала. Для систем без зеркалирования или в случае двойного отказа (основной сегмент и зеркало неактивны одновременно) необходимо вручную восстановить отказавшие сегменты, а затем перезапустить систему. Например, эта команда перезапускает СУБД:

$ gpstop -r

По умолчанию отказавший сегмент восстанавливается на месте (in-place recovery): система переводит его в рабочее состояние на том же хосте и в том же каталоге данных, где сегмент был изначально настроен. В этом случае для файла конфигурации восстановления (опция -i) используется следующий формат. Параметр failed_host_name является необязательным:

<failed_host_name>|<failed_host_address>|<port>|<data_directory>

В некоторых случаях восстановление на месте невозможно (например, при аппаратном отказе хоста). В таких ситуациях gprecoverseg позволяет восстановить отказавшие сегменты на другой хост (с помощью -p), в альтернативный каталог данных на работающих сегмент-хостах (с помощью -s) или с использованием файла конфигурации восстановления (опция -i) в следующем формате. Символ <SPACE> обозначает обязательный пробел — дополнительных пробелов добавлять не следует. Параметр failed_host_name является необязательным:

<failed_host_name>|<failed_host_address>|<port>|<data_directory><SPACE><recovery_host_name>|<recovery_host_address>|<port>|<data_directory>

Подробности и примеры файла конфигурации восстановления см. в описании параметра -i ниже.

Таблица системного каталога gp_segment_configuration помогает определить текущую конфигурацию сегментов для планирования восстановления зеркал. Например:

SELECT dbid, content, address, port, datadir
FROM gp_segment_configuration
ORDER BY dbid;

Новый хост, на который будут восстановлены сегменты, должен иметь предустановленное программное обеспечение Greengage DB и быть настроен идентично существующим сегмент-хостам. На всех сегмент-хостах, участвующих в восстановлении, должен быть доступен каталог данных с правами на запись и достаточным дисковым пространством для размещения восстановленных сегментов.

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

Параметры

-a

Не запрашивает подтверждение у пользователя.

-b <segment_batch_size>

Максимальное количество сегментов на хост для параллельной обработки. Допустимые значения от 1 до 128. Если параметр не указан, утилита начнет восстанавливать до 64 сегментов параллельно на каждом хосте.

-B <batch_size>

Количество хостов для параллельной обработки. Если параметр не указан, утилита будет обрабатывать до 16 хостов параллельно. Допустимые значения: от 1 до 64.

-d <master_data_directory>

(Необязательно) Каталог данных мастер-хоста. Если параметр не указан, будет использовано значение, установленное для MASTER_DATA_DIRECTORY.

-F

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

ВНИМАНИЕ

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

Кроме того, при полном восстановлении утилита не восстанавливает пользовательские файлы, хранящиеся в каталоге данных экземпляра сегмента, даже если пользовательские файлы также находятся в активном экземпляре сегмента. Вы должны восстановить пользовательские файлы вручную. Например, при использовании протокола GPFDISTS (gpfdist с шифрованием SSL) для управления внешними данными требуются файлы клиентских сертификатов в каталоге PGDATA/gpfdists экземпляра сегмента. Эти файлы не восстанавливаются. Для получения информации о настройке gpfdists см. раздел Настройка SSL.

Используйте параметр -s для вывода новой строки раз в секунду для каждого сегмента. Также можно использовать параметр --no-progress для полного отключения отчетов о прогрессе. Чтобы ускорить полное восстановление после неудачного предыдущего запуска и избежать копирования всего содержимого каталога данных, используйте параметр --differential. Он пропускает файлы и каталоги, которые не изменились с момента последнего запуска gprecoverseg.

--differential

(Необязательно) Выполняет дифференциальное копирование активного сегмента для восстановления отказавшего сегмента. По умолчанию копируются только изменения, произошедшие за время отсутствия сегмента.

Во время полного восстановления из основного сегмента в зеркальный копируются только те файлы и каталоги, которые изменились с момента отказа сегмента. Параметр --differential можно использовать только при полном восстановлении на месте.

ПРИМЕЧАНИЕ

Параметр --differential нельзя использовать вместе с любым из следующих параметров gprecoverseg: -i, -o, -F или -p.

--hba-hostnames

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

-i <recover_config_file>

Указывает имя файла с информацией об отказавших сегментах для восстановления.

Каждая строка файла конфигурации описывает сегмент, который необходимо восстановить. Строка может быть указана в одном из трех форматов. При восстановлении на месте (инкрементальном) каждая строка должна содержать одну группу полей, разделенных вертикальной чертой. Например:

failedAddress|failedPort|failedDataDirectory

или

failedHostname|failedAddress|failedPort|failedDataDirectory

Для восстановления в новое расположение укажите в строке две группы полей, разделенные пробелом. Обязательный пробел обозначается как <SPACE>. Не добавляйте лишние пробелы.

failedAddress|failedPort|failedDataDirectory<SPACE>newAddress|newPort|newDataDirectory

или

failedHostname|failedAddress|failedPort|failedDataDirectory<SPACE>newHostname|newAddress|newPort|newDataDirectory

Для смешанного восстановления укажите в каждой строке поле со значениями I/D/F/i/d/f. Если поле recovery_type не задано, по умолчанию выполняется инкрементальное восстановление.

recoveryType|failedAddress|failedPort|failedDataDirectory

Поле recoveryType поддерживает следующие значения:

  • I/i для инкрементального восстановления.

  • D/d для дифференциального восстановления.

  • F/f для полного восстановления.

    ПРИМЕЧАНИЕ

    Строки, начинающиеся с #, рассматриваются как комментарии и игнорируются.

    Примеры

    Восстановление на месте (инкрементальное) одного зеркала:

    sdw1-1|50001|/data1/mirror/gpseg16

    Восстановление одного зеркала на новый хост:

    sdw1-1|50001|/data1/mirror/gpseg16<SPACE>sdw4-1|50001|/data1/recover1/gpseg16

    Восстановление на месте неактивных зеркал с типом восстановления:

    sdw1-1|50001|/data1/mirror/gpseg1     // Выполняет инкрементальное восстановление (по умолчанию)
    I|sdw1-1|50001|/data1/mirror/gpseg1   // Выполняет инкрементальное восстановление
    i|sdw1-1|50001|/data1/mirror/gpseg1   // Выполняет инкрементальное восстановление
    D|sdw2-1|50002|/data1/mirror/gpseg2   // Выполняет дифференциальное восстановление
    d|sdw2-1|50002|/data1/mirror/gpseg2   // Выполняет дифференциальное восстановление
    F|sdw3-1|50003|/data1/mirror/gpseg3   // Выполняет полное восстановление
    f|sdw3-1|50003|/data1/mirror/gpseg3   // Выполняет полное восстановление

    Получение примера файла

    Вы можете использовать параметр -o для создания примера файла конфигурации восстановления, который можно использовать как отправную точку. Выходной файл содержит список текущих недоступных сегментов и их расположение для восстановления по умолчанию. Этот файл можно использовать с параметром -i для восстановления на месте (инкрементального).

-l <logfile_directory>

Каталог для записи логов. По умолчанию: ~/gpAdminLogs.

-o <output_recover_config_file>

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

$ gprecoverseg -o /home/gpadmin/recover_conf_file
-p <new_recover_host>[,…​]

Указывает новый хост вне текущей настроенной системы Greengage DB, на который следует восстановить недоступные сегменты.

Новый хост должен иметь установленное и настроенное программное обеспечение Greengage DB и соответствовать конфигурации существующих сегмент-хостов: ту же версию ОС, локали, учетную запись пользователя gpadmin, созданные каталоги данных, SSH-ключи, количество сетевых интерфейсов, соглашение об именовании интерфейсов и т.д. В частности, на новом хосте должны быть установлены бинарные файлы Greengage DB, обеспечена возможность подключения без пароля ко всем сегментам, включая мастер, и применены все другие специфические для Greengage DB настройки ОС.

ПРИМЕЧАНИЕ

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

-q

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

-r

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

--replay-lag <replay_lag>

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

-s

Отображает ход выполнения pg_basebackup или pg_rewind построчно вместо перезаписи одной строки. Полезно при записи в файл или если терминал не поддерживает управляющие последовательности. По умолчанию прогресс отображается в одной строке.

--no-progress

Отключает вывод прогресса утилит pg_basebackup, pg_rewind и rsync. По умолчанию прогресс отображается.

-v | --verbose

Включает подробный вывод логов.

--version

Отображает версию утилиты.

-? | -h | --help

Выводит справку.

Примеры

Пример 1: восстановление отказавших сегментов на месте

Восстановить любые отказавшие экземпляры сегментов на месте:

$ gprecoverseg

Пример 2: балансировка сегментов, не находящихся в предпочтительных ролях

Сначала убедитесь, что все сегменты запущены, работают и завершена их синхронизация, а также что есть сегменты, не находящиеся в предпочтительных ролях:

$ gpstate -e

Если это необходимо, выполните балансировку сегментов:

$ gprecoverseg -r

Пример 3: восстановление отказавших сегментов на отдельный хост

Восстановите все отказавшие экземпляры сегментов на вновь настроенный сегмент-хост:

$ gprecoverseg -i <recover_config_file>

См. также