Holt PostgreSQL 9.1 Streaming Replication nach einer Verzögerung ohne WAL-Archivierung auf?

16

Kontext:

Angenommen, bei Verwendung von Streaming Replication / Hot Standby in einem Postgres 9.1-Cluster fällt ein Standby-Knoten aus. Es bleibt einen Tag lang unten. Während dieser Zeit tritt viel DML auf dem Master auf. Die recovery.conf des Standbys enthält keinen 'restore_command'-Eintrag (zum Wiederherstellen aus WAL-Journaldateien), aber eine' primary_conninfo'-Zeichenfolge (für Streaming Replication).

Frage:

Wenn ich nach einem Tag der Änderungen am Master den Standby erneut starte. Wird es nur mit Streaming Replication "aufholen" (irgendwann in einen Zustand kommen, der dem Master entspricht)? Oder muss ich die WAL-Dateiarchivierung aktivieren und die während des Ausfalls archivierten Dateien anwenden lassen, um die Aktualität sicherzustellen?

Ich habe das WAL-Archivierungs- / Streaming-Replikationsdokument hier überprüft und es besagt, dass Sie nicht sowohl die WAL-Archivierung als auch die Streaming-Replikation aktivieren müssen, aber es ist unklar, ob eine Aufholjagd stattfinden wird, ohne dass die WAL-Dateiarchivierung aktiviert ist.

Vielen Dank!

Zac B
quelle

Antworten:

9

Ja, bei Verwendung von Streaming wird nur dann (und nur dann) aufgeholt , wenn die Anzahl der seit der letzten Aktualisierung im Standby generierten WAL-Segmente unter dem Wert von wal_keep_segments in postgresql.conf liegt. Dies wird in diesem Abschnitt der Dokumentation behandelt: Replikation

Matthew Wood
quelle
2
Diese Antwort ist richtig, zeigt aber das Problem auf. Wenn Sie jemals wal_keep_segments übergeben, ist Ihre Replikation tot. Das Einrichten der dateibasierten Replikation ist nicht optional, wenn Sie ein System wünschen, das eine lange Trennung vom Master übersteht und ein Backup vornimmt.
Greg Smith
0

Im Standby-Knoten können Sie restore_command in der Datei recovery.conf festlegen und anschließend die Master-Dateien pg_xlog (die im Standby-Modus fehlen) in den Ordner kopieren, auf den restore_command verweist. Sie können leicht feststellen, welche xlog-Dateien fehlen, indem Sie den Startknoten starten und eingeben

ps aux | grep postgres

Dort wird "Warten auf 000000020000005200000025" oder so angezeigt, das angibt, welches pg_xlog Sie vom Master in den restore_command-Pfad von Standby kopieren sollen.

Wenn Sie wal_archiving aktivieren, wird die Archivierung ab dem Zeitpunkt Ihrer Einrichtung gestartet.

sftsz
quelle
Ich verstehe, dass ich mithilfe der dateibasierten WAL-Archivierung und eines Wiederherstellungsbefehls für den Standby-Modus zum Laden von WAL-Dateien sicherstellen kann, dass der Fehler behoben wird. Das ist jedoch nicht meine Frage; Ich möchte wissen, ob der Standby-Modus aufholt, wenn ich nur die Streaming-Replikation verwende (kein WAL-Dateiversand, nur der Replikations-Stream wie in 'primary_conninfo' angegeben).
Zac B
Nein. postgres macht das nicht. Sie sollten Protokolldateien kopieren, wenn sich Ihre Replikation verzögert.
sftsz
0

Nein, ich habe eine Instanz der Streaming-Replikation eingerichtet, die nicht mehr synchron ist. Ich konnte sie erst wieder in Betrieb nehmen, als ich ein Handbuch rsyncfür die WAL-Archive erstellt habe.

Xenoterracid
quelle