16
Восстановление мастера
Простое подключение бывшего мастера — не работает
проблема потери записей WAL, не попавших на реплику из-за задержки
Восстановление «с нуля» из резервной копии
на месте бывшего мастера разворачивается абсолютно новая реплика
процесс занимает много времени (отчасти можно ускорить rsync)
Утилита pg_rewind
«откатывает» потерянные записи WAL, заменяя соответствующие
страницы на диске страницами с нового мастера
есть ряд ограничений, ограничивающий применение
Если переход на реплику произошел из-за аппаратуры (необходима
замена дисков или сервера) или операционной системы (необходима
переустановка ОС), то единственный вариант состоит в изготовлении
абсолютно новой реплики на новом сервере.
Если же переход был штатным, полезен способ быстро вернуть старый
мастер в строй (теперь уже в качестве реплики).
К сожалению, простой способ — подключить старый мастер к новому
по репликационному протоколу — не работает. Причина в том, что из-за
задержек в репликации часть записей WAL могла не дойти до реплики.
Если на старом мастере остались такие записи, то применение записей
с нового мастера приведет к повреждению базы.
Всегда есть вариант создать абсолютно новую реплику путем
изготовления базовой резервной копии. Однако для больших баз
данных этот процесс может занимать много времени. Его можно
ускорить с помощью rsync.
Еще более быстрый вариант состоит в использовании утилиты
Утилита определяет записи WAL, которые не дошли до реплики
(начиная с последней общей контрольной точки), и находит страницы,
затронутые этими записями. Найденные страницы (которых должно
быть немного) заменяются страницами с нового мастера. Кроме того,
утилита копирует с сервера-источника (нового мастера) все служебные
файлы. Дальше работает обычный процесс восстановления.