Wie interagieren Datenprüfsummen mit der Streaming-Replikation?

11

Datenprüfsummen sind eine neue Funktion, die in 9.3 eingeführt wurde, und:

Es gibt einen neuen GUC-Parameter "ignore_checksum_failure", der PostgreSQL zwingt, die Verarbeitung einer Transaktion fortzusetzen, auch wenn eine Beschädigung festgestellt wird

Im Falle eines Prüfsummenfehlers auf einem Replikationsmaster werden diese beschädigten Daten auf Slaves repliziert oder die Replikation wird angehalten. Kommt es auf die Einstellung von an ignore_checksum_failure?

Diese README-Datei enthält einige nützliche Informationen, beantwortet die Frage jedoch nicht direkt.

Jack sagt, versuchen Sie es mit topanswers.xyz
quelle
6
Sehr gute Frage. Hängt teilweise davon ab, ob sich Datenprüfsummen auch auf WAL auswirken (welches IIRC sie nicht haben, außer für ganzseitige Bilder in WAL). Ich hatte keine Zeit, mich mit Datenprüfsummen zu befassen, da ich mit anderen Funktionen geholfen habe. Fragen zu pgsql-general kann eine gute Idee sein. Wenn es die Zeit und das Neugeborene erlauben, werde ich mir die Quellen ansehen, aber ich würde meinen Atem nicht anhalten.
Craig Ringer
3
@Craig Glückwunsch!
Jack sagt, versuchen Sie es mit topanswers.xyz
4
Die Dinge, die Sie auf StackExchange lernen ... "haben mit anderen Funktionen geholfen", sind ein Euphemismus für "Windeln wechseln".
Colin 't Hart

Antworten:

1

Wenn die Daten auf der Festplatte beschädigt wurden, sollte die Beschädigung nur repliziert werden, wenn sie bereits in der Sicherung vorhanden war, aus der das Replikat erstellt wurde.

Wenn Sie Prüfsummenfehler ignorieren, kann der Master natürlich anfangen, falsche Dinge zu tun, und diese Fehler werden repliziert.

Wenn die Beschädigung im Speicher auftritt, sind alle Wetten deaktiviert.

jjanes
quelle
2
ist hier ziemlich nah an der Marke. Die Dokumentation zum ignore_checksum_failureParameter enthält die Warnung, dass "dieses Verhalten ... Korruption ... verbreiten kann". Ohne die (Streaming-) Replikation explizit zu erwähnen, scheint dies hier impliziert zu sein. Normalerweise würde ein Prüfsummenfehler dazu führen, dass die Transaktion abgebrochen wird, sodass keine Daten repliziert werden. Wenn Sie diesen Fehler ignorieren, können Sie die Transaktion festschreiben und (möglicherweise) beschädigte Daten schreiben, die ebenfalls repliziert werden.
Colin 't Hart