30.5. Исправление повреждённых записей WAL

Postgres Pro использует WAL для обеспечения защиты от повреждений данных, которые могут возникнуть из-за неполадок оборудования. Для контроля целостности все записи WAL защищены CRC.

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

Postgres Pro предлагает решение этой проблемы, реализуя механизм исправления повреждённых данных WAL из буферов в оперативной памяти. Объём этих буферов, хранящихся в памяти, определяется параметром wal_buffers. Процесс-передатчик WAL проверяет CRC для всех записей, отправляемых реплике, и в случае выявления повреждённой записи пытается восстановить её из буферов. Для обеспечения дополнительной защиты буферы существуют в двух экземплярах. Если повреждённая запись не может быть восстановлена, процесс-передатчик WAL прерывает репликацию с ошибкой. Уровень ошибки зависит от значения параметра конфигурации wal_sender_panic_on_crc_error. Поэтому, если вы сталкивались с подобными аппаратными проблемами или допускаете их возможность, рекомендуется включить механизм исправления WAL из буферов с помощью параметра wal_sender_check_crc.