PostgreSQL Upgrade

Gestern hab ich Wartungsarbeiten auf einem Peertube-Server durchgeführt. Dieser verwendet im Hintergrund eine PostgreSQL-Datenbank. In diesem Zusammenhang hab ich auch das darunter liegende Debian auf die Version 13 (Trixie) aktualisiert. Dabei wurde auch die PostgreSQL Datenbank von 15 auf Version 17 aktualisert. Mittlerweile geht das ja wirklich gut von der Hand, aber wenn ich nachfolgende Warnmeldungen sehe, bin ich immer etwas skeptisch.

Hinweis zur Konfiguration von Postgres beim Update auf Debian Trixie
Hinweis zur Konfiguration von Postgres beim Update auf Debian Trixie

Im Zweifel sage ich bei solchen Dingen eher “Nein”. So auch gestern. Nach dem Upgrade musste ich dann aber das Upgrade selbst durchführen. Vorher noch schnell einen Snapshot erstellt und die entsprechenden Man-Pages konsultiert. Die Lösung sah wie folgt aus:

Update durchführen

Die aktuellen Posgres-Instanzen können mit dem Befehl pg_lsclusters angezeigt werden:

1
2
3
4
root@video01:~# pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log
17  main    5433 online postgres /var/lib/postgresql/17/main /var/log/postgresql/postgresql-17-main.log

Die alte Version 15, läuft unter dem Standard-Port 5432 und wird von Peertube verwendet. Der neue Cluster mit der Version 17, ist nicht aktiv genutzt. Dieser Cluster wurde in einem ersten Schritt entfernt:

1
2
3
4
root@video01:~# pg_dropcluster 17 main --stop
root@video01:~# pg_lsclusters
Ver Cluster Port Status Owner    Data directory              Log file
15  main    5432 online postgres /var/lib/postgresql/15/main /var/log/postgresql/postgresql-15-main.log

Nun konnte der neue Postrgres-Cluster angelegt und die Datenbank aus dem alten Postgres-Cluster rüber gezogen werden. Es wurde der entsprechende Befehl (siehe Screenshot oben) ausgeführt:

1
pg_upgradecluster 15 main -v 17

Es folgten eine Latte von Ausgabemeldungen die mit einem Success [..] endeten. Im Anschluss konnte der alte Postgres-Cluster entfernt und die entsprechenden Pakete gelöscht werden:

1
2
pg_dropluster 15 main
apt purge postgresql-15 postgresql-client-15

Fazit

Dieser kurze Artikel fällt Mal wieder unter die Kategorie “Info an mich”. Wenn ich erneut in die Situation komme einen PostrgeSQL-Cluster zu aktuslisieren, weiß ich wo ich nachschauen kann.

Quellen