Как управлять отсутствующим сегментом WAL в postgreSQL 9.6 с главного сервера?

A имеют конфигурацию PITR с postgresql 9.6, с главным сервером, промежуточным сервером и двумя подчиненными серверами, с горячим резервированием, но с переключением вручную, например:

Master
  |
 I1
 / \
S1 S2

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

Теперь у меня нет отсутствующих транзакций, но подчиненный 1, а также промежуточный сервер жалуются на отсутствующий wal (ОШИБКА: запрошенный сегмент WAL [...] уже был удален), хотя они все еще обновляются; s2 также жалуется (то же, что и выше, но ему предшествует (FATAL: не удалось получить данные из потока WAL:), и он не обновляется.

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

1) Как избавиться от нытья по поводу пропавшего вала? Я уже пробовал pg_resetxlog -l (следующий действительный файл WAL) -f (который больше не жалуется, но не обновляется) и pg_basebackup, который, что неудивительно, после второй попытки возвращается к описанной выше ситуации.

2) Почему одно из ведомых устройств обновляется (неожиданно), а другое - нет (ожидается)? Сначала я подумал, что, возможно, обновляемый ведомый напрямую подключается к мастеру, но это не так; Я проверил файлы конфигурации, они идентичны на обоих подчиненных устройствах.

Спасибо за внимание

0 ответов

Другие вопросы по тегам