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?
postgresql
replication
failover
user2478225
quelle
quelle
rsync
zum Ü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.Antworten:
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 :
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.
quelle