Können wir die alte Primärdatenbank verwenden, um nach dem Failover in PostgreSQL mit dem Standby-Modus zu synchronisieren?

7

Wenn mein Standby (Postgres) einige Sekunden vor dem Failover zurückliegt. Was ist der einfachste Weg, um meine alte Primärdatenbank nach dem Failover in PostgreSQL wieder zu synchronisieren?

In Oracle haben wir die Möglichkeit, eine fehlgeschlagene Primärdatenbank wiederherzustellen, wenn Flashback aktiviert ist.

Haben wir eine solche Option in Postgres, wenn ich alle WAL-Archive nach dem Failover auf einem neuen Primärserver generiert habe? Oder müssen wir den Standby komplett neu aufbauen?

user2478225
quelle
3
Ich glaube nicht, dass PG (bis zu 9.3) Hilfe beim schnellen Wiederaufbau einer Primärdatenbank bietet. Die Verwendung rsynczum Übertragen des Datenverzeichnisses ist möglicherweise kostengünstiger als eine vollständige Neuerstellung, da sie inkrementell ist. Der Nutzen hängt jedoch davon ab, wie viel Aktivität nach dem Failover aufgetreten ist und wie sie auf die Tabellen verteilt ist.
Daniel Vérité

Antworten:

3

In der aktuellen Version (S. 9.0-9.3) gibt es keinen schnellen "Failback" -Mechanismus. Sie müssen die offiziellen Richtlinien befolgen, die Folgendes angeben :

Der frühere Standby ist jetzt der primäre, aber der frühere primäre ist ausgefallen und bleibt möglicherweise ausgefallen. Um zum normalen Betrieb zurückzukehren, muss ein Standby-Server entweder auf dem früheren Primärsystem beim Hochfahren oder auf einem dritten, möglicherweise neuen System neu erstellt werden.

Ihre zweite Vermutung ist also richtig: Sie müssen den Standby-Modus vollständig neu erstellen.

Dies ergibt sich aus PostgreSQL-Interna, WAL-Format und Zeitleisten. Bei jedem Failover wird eine neue Zeitleiste erstellt. Sie können WAL-Dateien vom neuen Server (dem heraufgestuften) nicht sicher verwenden, um sie nach der Wiederbelebung auf dem alten Server wiederzugeben.

Ab Version 9.1 haben Sie ein Tool zum schnellen Klonen von PostgreSQL-Instanzen: pg_basebackup . Sie können auch Dateisystem-Snapshots verwenden (z. B. LVM2 + XFS).

Wenn Sie vor dem Absturz einen Snapshot des primären Postgres-Clusters und ab diesem Zeitpunkt eine Reihe von WAL-Dateien haben, können Sie den primären Cluster aus diesem Snapshot wiederbeleben und seine WAL-Dateien wiedergeben. Dies wird in den Dokumenten behandelt .

PS. Vielen Dank für eine gute Frage - dies ist aus den Dokumenten nicht so klar.

Filiprem
quelle