Schlagwort-Archive: DB-Upgrade

Migration auf ein neueres PostgreSQL-Image im Containerland

Als kleines Wochenendprojekt betreibe ich Kanboard im Container. Als ich den Pod initial deployt habe, verwendete ich für die Datenbank rhel8/postgresql-96 in der Annahme, dass hierfür der gleiche Support-Zeitraum wie für RHEL 8 gilt. Eher durch Zufall habe ich noch im letzten Jahr bemerkt, dass das von mir genutzte Image deprecated ist und somit keine Updates mehr erhält.

An dieser Stelle dokumentiere ich kurz die Migration zu rhel8/postgresql-13. Offen bleibt für mich die Frage, wie ich hätte früher von der Deprication erfahren können.

Migration und Upgrade auf die neuere PostgreSQL-Version

Ich habe mich an den englischsprachigen Artikel „How to Upgrade Your PostgreSQL Version Using Docker“ von José Postiga gehalten, welcher folgende Vorgehensweise vorsieht:

  1. Aktuelle Datenbank sichern
  2. Pod stoppen und entfernen
  3. Verzeichnis und Dateien der alten PostgreSQL-Version aus dem Podman-Volume löschen
  4. SQL-Dump-Datei ins Podman-Volume verschieben
  5. Pod mit rhel8/postgresql-13-Container starten
  6. Datenbank wiederherstellen

Dazu habe ich auf meinem System folgende Befehle ausgeführt:

# Backup DB
podman exec -t <NAME des Containers> /usr/bin/pg_dump <DB-NAME> >dump.sql

# Podman-Volume der DB leeren
podman volume inspect <Volume-NAME>
sudo rm -rf /home/tronde/.local/share/containers/storage/volumes/<Volume-NAME/_data/*

# Dump ins Podman-Volume verschieben
mv dump.sql /home/tronde/.local/share/containers/storage/volumes/<Volume-Name>/_data/

# Datenbank im Container wiederherstellen
podman exec -it <Container-ID> bash
bash-4.4$ psql -U <USER-Name> -d <DB-Name> < /var/lib/pgsql/data/dump.sql

Fazit

Wenn man einmal weiß, wie es geht, ist die Migration auf ein neues DB-Release nicht schwer. Die hier dokumentierte Vorgehensweise lässt sich in meinen Augen auch auf andere DBMS übertragen, die in Containern laufen.

Mich stört nur, dass ich quasi nur zufällig davon erfahren habe, dass das von mir eingesetzte Container-Image im Status deprecated gelandet ist. Wie informiert ihr euch über Statusänderungen bei den von euch verwendeten Container-Images?