8
Повреждение данных
Контрольные суммы журнальных записей
включены всегда, CRC-32
Контрольные суммы страниц
нужно включить при инициализации кластера
initdb -k
Настройки
data_checksums
ignore_checksum_failure = off
wal_log_hints = off (неявно on при контрольных суммах страниц)
wal_compression = off
накладные
расходы, увеличение
размера журнала
Во-вторых, данные могут быть повреждены на носителе, при передаче
данных по интерфейсным кабелям и т. п. Часть таких ошибок
обрабатывается на аппаратном уровне, но часть — нет.
Чтобы вовремя обнаружить возникшую проблему, журнальные записи
всегда снабжаются контрольными суммами.
Страницы данных также можно защитить контрольными суммами. Это
лучше сделать сразу при инициализации кластера, но можно включить
и потом, остановив сервер. В производственной среде контрольные
суммы должны быть включены обязательно, несмотря на накладные
расходы на их вычисление и контроль. Иначе можно получить
ситуацию, когда возникший сбой не будет вовремя обнаружен.
Проверить, включены ли контрольные суммы, можно с помощью
параметра data_checksums (только для чтения). Параметр
ignore_checksum_failure позволяет не прерывать транзакцию,
прочитавшую сбойную страницу, но обычно его не следует включать.
При включенных контрольных суммах в журнал всегда попадает такая
«несущественная» информация, как биты подсказок (рассмотрены
в модуле «Многоверсионность»), поскольку изменение любого бита
приводит и к изменению контрольной суммы. При выключенных
контрольных суммах за запись битов подсказок в журнал отвечает
параметр wal_log_hints.
Изменения битов подсказок всегда журналируется в виде полного
образа страницы (FPI, full page image), что сильно увеличивает размер
журнала. Для экономии можно включить сжатие полных образов
с помощью параметра wal_compression.