Обнаружение сбоев резервного сервера PostgreSQL
Потоковая репликация использует две общие процедуры обнаружения сбоев, которые не требуют специального оборудования:
-
Обнаружение сбоя процесса резервного сервера:
Первичный сервер немедленно идентифицирует неисправный резервный сервер или процесс walreceiver при обнаружении разрыва соединения между walsender и walreceiver. Если низкоуровневая сетевая функция возвращает ошибку из-за сбоя при записи или чтении интерфейса сокета walreceiver, первичный сервер оперативно определяет сбой;
-
Обнаружение сбоя оборудования и сетей:
Если walreceiver не возвращает никакого ответа в течение времени, заданного параметромwal_sender_timeout(по умолчанию 60 секунд), основной сервер считает резервный сервер неисправным. Однако, в отличие от предыдущего сценария сбоя, может потребоваться некоторое время (доwal_sender_timeoutсекунд), чтобы основной сервер подтвердил сбой резервного. Эта задержка возникает, когда резервный сервер не может отправить какой-либо ответ из-за различных сбоев, таких как проблемы с оборудованием или проблемы с сетью.
В зависимости от характера сбоев некоторые из них могут быть обнаружены немедленно, в то время как другие могут испытывать временную задержку между возникновением сбоя и его обнаружением. Важно отметить, что если синхронный резервный сервер сталкивается с последним типом сбоя, вся обработка транзакций на основном сервере будет остановлена до тех пор, пока сбой не будет обнаружен, даже если несколько потенциальных резервных серверов работают.



