Wie kann ich eine PostgreSQL-Datenbank von einer Version auf eine andere migrieren?
- Vorbereitung vor der Migration
- Migration bei Minor-Versionen
- Migration bei Major-Versionen
- Verwendung von pg_upgrade
- Dump & Restore-Verfahren
- Nach der Migration
- Zusammenfassung
Die Migration einer PostgreSQL-Datenbank von einer Version auf eine andere ist ein wichtiger Prozess, der sorgfältig durchgeführt werden muss, um Datenverlust und Ausfallzeiten zu vermeiden. Je nachdem, ob die Migration auf eine Minor-Version (z.B. 13.2 zu 13.5) oder eine Major-Version (z.B. 12.x zu 13.x) erfolgt, gestaltet sich das Vorgehen unterschiedlich.
Vorbereitung vor der Migration
Bevor Sie mit der Migration beginnen, ist es essenziell, ein vollständiges Backup Ihrer bestehenden Datenbank anzufertigen. Dies können Sie am einfachsten mit dem PostgreSQL-internen Tool pg_dump oder bei großen Datenbanken mit pg_basebackup erledigen. Achten Sie darauf, dass keine aktiven Verbindungen zur Datenbank bestehen und dass die bestehende Datenbank im konsistenten Zustand ist. Außerdem empfiehlt es sich, die Dokumentation der neuen Version zu lesen, da sich im Major-Update häufig neue Features, Änderungen oder Inkompatibilitäten ergeben können.
Migration bei Minor-Versionen
Bei einem Upgrade innerhalb derselben Major-Version, also einem Minor-Upgrade, ist normalerweise kein Dump & Restore nötig. Die neuen Patch-Versionen können in der Regel durch Stoppen des aktuellen Dienstes, Ersetzen der Binärdateien und Starten des Servers durchgeführt werden. Das bedeutet, Sie stoppen den PostgreSQL-Server, aktualisieren die Softwarepakete Ihres Betriebssystems oder installieren die neue Version, und starten den Server neu. Die Daten bleiben dabei unverändert und kompatibel zum neuen Minor-Release. Dennoch ist es ratsam, den Betrieb nach der Aktualisierung intensiv zu beobachten und bei größeren Systemen vorab Tests durchzuführen.
Migration bei Major-Versionen
Bei einem Major-Upgrade, also dem Wechsel von z.B. PostgreSQL 12 auf PostgreSQL 13, ist das Verfahren komplexer, da es strukturelle Änderungen im Datenbanksystem geben kann. Ein direktes Upgrade über die Datenbankdateien ist nicht möglich. Hier bieten sich zwei wichtige Möglichkeiten an: Das Verwenden des Tools pg_upgrade oder das Dump & Restore-Verfahren mittels pg_dumpall und psql.
Verwendung von pg_upgrade
Das Tool pg_upgrade unterstützt ein schnelles Upgrade, indem es die alten Daten direkt in das neue Datenformat überführt, ohne umfangreiche Dumps anzufertigen. Sie benötigen zwei PostgreSQL-Installationen: Die alte und die neue Version. Nach dem Stoppen des alten Servers und der Installation der neuen Version führen Sie pg_upgrade aus, wobei Pfade zu den alten und neuen Datenbank-Clustern angegeben werden. Dieses Verfahren ist schneller und vermeidet längere Ausfallzeiten. Anschließend können Sie den neuen Server starten und die Migration testen.
Dump & Restore-Verfahren
Alternativ können Sie ein vollständiges Backup der alten Datenbank mit pg_dumpall erzeugen, das alle Datenbanken, Rollen und Konfigurationen umfasst. Nach der Installation der neuen PostgreSQL-Version legen Sie einen neuen Datenbank-Cluster an und spielen den Dump mit psql ein. Dieses Verfahren ist besonders zuverlässig, braucht aber mehr Zeit, vor allem bei großen Datenbeständen, und verursacht eine längere Serviceunterbrechung.
Nach der Migration
Nach erfolgreicher Migration sollten Sie die Funktionalität der Datenbank intensiv prüfen, dazu gehören Prüfung der Datenintegrität, Testen von Anwendungen und Überwachen der Performance. Entfernen Sie gegebenenfalls veraltete Datenbankobjekte oder Erweiterungen, die in der neuen Version nicht mehr unterstützt werden. Außerdem empfiehlt es sich, die Statistiken mit ANALYZE oder vacuumdb zu aktualisieren, damit der Optimizer gut arbeiten kann.
Zusammenfassung
Die Migration einer PostgreSQL-Datenbank erfordert Vorbereitung, Sorgfalt und das passende Verfahren je nach Versionssprung. Minor-Versionen können meist direkt aktualisiert werden, während Major-Versionen entweder mit dem Tool pg_upgrade oder über Dump & Restore migriert werden. Ein Backup vor der Migration ist unerlässlich, ebenso wie umfangreiche Tests danach.
