Ich muss ein Upgrade von PostgreSQL 9.2 auf 9.6 durchführen. Im Folgenden sind die Herausforderungen aufgeführt, vor denen ich stehe:
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?
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.
quelle
Antworten:
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.
quelle
pg_upgrade
. Es dauerte Minuten (bei Master und Slave zusammen), während ein Dump allein mehr als 3 Stunden benötigt.pg_upgrade
.