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.
postgresql
replication
postgresql-9.3
checksum
Jack sagt, versuchen Sie es mit topanswers.xyz
quelle
quelle
Antworten:
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.
quelle
ignore_checksum_failure
Parameter 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.