Как контрольные суммы данных взаимодействуют с потоковой репликацией?

11

Контрольные суммы данных - это новая функция, представленная в 9.3, и:

появился новый параметр GUC «ignore_checksum_failure», который заставит PostgreSQL продолжить обработку транзакции, даже если обнаружено повреждение

В случае сбоя контрольной суммы на ведущем устройстве репликации будут ли эти поврежденные данные реплицироваться на ведомые или будет остановлена ​​репликация. Это зависит от настройки ignore_checksum_failure?

Это README имеет некоторую полезную информацию, но не дает прямого ответа на вопрос.

Джек говорит, попробуйте topanswers.xyz
источник
6
Очень хороший вопрос Частично зависит от того, влияют ли контрольные суммы данных на WAL (какой IIRC они не влияют, за исключением полностраничных изображений в WAL). У меня не было времени копаться в контрольных суммах данных, так как я помогал с другими функциями. Спрашивать о pgsql-general может быть хорошей идеей. Если позволит время и новый ребенок, я посмотрю на источники, но я не задерживаю дыхание.
Крейг Рингер
3
@ Крейг поздравляю!
Джек говорит, что попробуйте topanswers.xyz
4
То, что вы узнаете в StackExchange ... «помогать с другими функциями», является эвфемизмом «смены подгузников».
Colin 't Hart

Ответы:

1

Если данные были повреждены в то время как на диске, повреждение не должно быть реплицировано, если оно уже не присутствовало в резервной копии, из которой была создана реплика.

Конечно, если вы игнорируете ошибки контрольной суммы, мастер может начать ошибаться, и эта ошибка будет воспроизведена.

Если в памяти происходит повреждение, тогда все ставки выключены.

jjanes
источник
2
довольно близко к отметке здесь. Документация по этому ignore_checksum_failureпараметру включает предупреждение о том, что «такое поведение может ... распространять ... повреждение». Без явного упоминания (потоковой) репликации может показаться, что это подразумевается здесь. Обычно ошибка контрольной суммы приводит к прерыванию транзакции, поэтому никакие данные не будут реплицированы. Игнорирование этой ошибки позволит вам зафиксировать транзакцию и записать (потенциально) поврежденные данные, которые также будут реплицированы.
Colin 't Hart