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

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

Master
  |
 I1
 / \
S1 S2

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

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

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

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

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

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

...