PostgreSQL 9.2 - 9.6 Upgrade ohne Ausfallzeit


9

Ich muss ein Upgrade von PostgreSQL 9.2 auf 9.6 durchführen. Im Folgenden sind die Herausforderungen aufgeführt, vor denen ich stehe:

  1. Da wir ein Streaming-Replikations-Setup haben und PostgreSQL im Streaming-Replikationsmodus kein Upgrade der unteren auf die obere Version unterstützt, muss ich beim Upgrade des Masters die Slaves neu erstellen, was 3 Stunden dauert. Ich habe nicht die Zeit zu verlieren. Zu jedem Zeitpunkt benötigen wir einen Slave und einen Master. Gibt es eine andere Möglichkeit, ein Upgrade durchzuführen, ohne die Slaves mithilfe der Streaming-Replikation neu erstellen zu müssen?

  2. Um eine logische Replikation zu erstellen, haben wir uns überlegt, Slony zu verwenden, aber Slony hat einige Einschränkungen, da es nicht automatisch repliziert:

    • Änderungen an großen Objekten (BLOBS)
    • Änderungen durch DDL-Befehle
    • Änderungen an Benutzern und Rollen
      ... und unsere Anwendung verfügt über fortlaufende Erstellungsbefehle. Wir können also keinen Slony verwenden.

Bitte schlagen Sie etwas vor, um eine Neuerstellung des Slaves zu vermeiden und ein Upgrade mit minimaler Ausfallzeit und einem Master und einem Slave durchzuführen.


3
Dieselben Probleme, die Sie daran hindern, Slony zu verwenden, verhindern, dass Sie andere Tools wie Bucardo, Londiste, pglogical usw. verwenden. Sie müssen die Anwendung anpassen, damit sie nicht kontinuierlich erstellt wird. Und ja, LOBs werden ein Problem sein.
Craig Ringer

Antworten:


1

Das Aktualisieren einer Datenbank erfordert Ausfallzeiten auf Ihren Servern. Um die Ausfallzeit zu minimieren, würde ich vorschlagen, dass Sie die neuere Version auf einem neuen Server installieren, ein Replikationssetup darauf erstellen und alle Daten von der alten Instanz hier sichern und den Server so ändern, dass die Anwendung auf einen neuen Server verweist, um eine Verbindung zur Datenbank herzustellen.


2
Nun, wir haben kürzlich eine 9-TB-Datenbank von 9.3 auf 9.6 aktualisiert pg_upgrade. Es dauerte Minuten (bei Master und Slave zusammen), während ein Dump allein mehr als 3 Stunden benötigt.
Dekso

Das Dumping erfordert jedoch keine Ausfallzeiten.
Lohit Gupta

Absolut meinte ich (und vergaß hinzuzufügen), dass das Wiederherstellen des Backups mehr oder weniger genauso lange dauert wie das Wiederherstellen, was in unserem Fall einige unserer Ausfallzeiten bedeutet.
Dekso

Vielen Dank für den Vorschlag, also habe ich den Master aktualisiert und den Slave neu aufgebaut.
Ist

1
Schritt 2 wird nicht funktionieren. Das WAL-Format ist zwischen den Hauptversionen nicht kompatibel, daher ist dies erforderlich pg_upgrade.
Dekso
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.