- Mitglied seit
- 03. Jan 2022
- Beiträge
- 2.066
- Punkte für Reaktionen
- 916
- Punkte
- 204
Das „leidige“ Thema PostgreSQL-Updates…
Hallo zusammen, immer wieder wird die Frage gestellt, wie im Zusammenhang mit Paperless-ngx eine Datenbankversion aktualisiert werden kann nach einem Major Update, wenn als Datenbank PostgreSQL zum Einsatz kommt. Da der ganze Vorgang nicht trivial ist und ich bei meinem Update von Version 15 auf 16 die eine oder andere Hürde gefunden habe, für die ich mir diverse Tips hier zusammengesucht habe nunmehr ein Versuch, das ganze in einer ausführlichen Anleitung zusammenzufassen.Stand 2. Februar 2024 ist die aktuellste Major Version von PostgreSQL v16, unterstützt und weiter mit Updates versorgt werden noch v12–v15. v11 hat im November 2023 das letzte Update erhalten. Folgende Versionen von PostgreSQL sind innerhalb ihrer Major Version derzeit aktuell:
- 9. November 2023:
16.1
,15.5
,14.10
,13.13
,12.17
und11.22
( EOL)
Auch wenn Updates immer eine sinnvolle Sache sind, so sei an dieser Stelle zunächst auch erwähnt, dass ein Update der Datenbank-Version keinerlei Vorteile im Betrieb von Paperless-ngx mit sich bringt. Neue Funktionen gibt es mit dem Update des Webservers, solange eine alte Version nicht zu Problemen führt, kann diese auch weiterverwendet werden.
Wer erst mit Paperless-ngx startet, dem sei auch empfohlen, von Beginn an auf MariaDB als Datenbank zu setzen; wer bisher PostgreSQL einsetzt und gerne auf MariaDB wechseln möchte, dem sei diese Anleitung von @Adama ans Herz gelegt: Paperless-ngx: Migration Postgresql zu MariaDB. Bei großen Versionsupdates der MariaDB sind hier im Forum bisher keine Probleme bekannt und das im Vergleich umständliche Prozedere unten entfällt.
Grundlagen
Bevor ich beginne, möchte ich ein paar Begriffe klären, damit es nachher nicht zu Missverständnissen kommt bzw. ihr wisst, was ihr wo mit eventuell anderen Bezeichnungen ersetzen müsst.- Verwende ich
PGDBNAME
, so ist der Name eures PostgreSQL-Containers gemeint. Verwendet ihr paperless-ngx-db, nutzt ihr also diesen Namen. - Verwende ich
PGUSER
, ist der Name gemeint, der in Eurer Installation für die Anmeldung an der PostgreSQL-Datenbank verwendet wird. Standardmäßig ist das in der yaml-Beispielsdateipaperless
Anleitung
Vor solchen Arbeiten solltet ihr sicherstellen, dass hier ein aktuelles und funktionierendes Back-up eurer Installation habt. Kein Backup → kein Mitleid- Stoppt die Container des Webservers und des Brokers (redis), um zu verhindern, dass weitere Daten in die Datenbank geschrieben werden können (der PostgreSQL-Container muss weiterlaufen, weil sonst kein „Dump“ erstellt werden kann)
- Erstellt einen so genannten „Dump“, also eine Sicherung der Datenbank mit folgendem Befehl:
docker exec PGDBNAME bash -c "psql -U PGUSER > /var/lib/postgresql/data/backup/backup.dump"
- Stoppt den PostgreSQL-Container und benennt den bisherigen Ordner (z. B.
/pgdata
) um, der Einfachheit halber etwapgdatav15
für die alte Version und erstellt /pgdata neu. Der Ordner muss (!) leer sein! - Passt in der Konfiguration (yaml) die Version von PostgreSQL an (z. B. auf
postgres:16
) (*1) - Startet zunächst nur die Datenbank neu, in dem ihr in den Ordner navigiert
cd /volume1/docker/paperless/oder/so
und dann folgenden Befehl ausführtdocker-compose up -d db
- Kopiert den Backup-Ordner mit dem Dump in
/pgdata
- Führt folgenden Befehl aus
docker exec PGDBNAME bash -c "psql -U PGUSER < /var/lib/postgresql/data/backup/backup.dump"
, danach seht ihr im Terminal, wie die Daten eingelesen werden - Wenn der Befehl ohne Fehler durchgelaufen ist, startet Webserver und Broker erneut:
docker-compose up -d
Viel Spaß und Erfolg beim ausprobieren und bitte meldet euch, wenn ihr einen Fehler findet, damit ich die Anleitung anpassen kann. Grüße und noch einen schönen Abend!
(*1) Ich hatte lange Zeit einen separaten Ordner für die Dumps, der in der Konfiguration auch entsprechend angegeben war. Leider führte das bei dem Versuch, die Datenbank wieder einzuspielen, dazu, dass der Container in einer Dauerschleife neu startet und immer wieder den Fehler aus wirft, dass das Verzeichnis leer sein muss. Deswegen empfehle ich hier, das ganze aus zu kommentieren oder zu entfernen, wenn der Ordner
pgdata/backup
extra gemountet wurde.- 1. Februar 2024: v1.0 – Erstellt.
- 2. Februar 2024: v.1.0.1 – Punkt 5 aktualisiert/erweitert, Informationen zur aktuellsten PostgreSQL-Version und Übersicht der aktuellsten Versionen ergänzt.
Zuletzt bearbeitet: