postgresql - Probleme nach Update

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.266
Punkte für Reaktionen
72
Punkte
68
Hallo!

ich habe heute ein Update meines postgresql containers erhalten.
Seitdem startet dieser nicht mehr, mit der Info:

  • database files are incompatible with server
  • The data directory was initialized by PostgreSQL version 15, which is not compatible with this version 16.0 (Debian 16.0-1.pgdg120+1).
Ich verstehe es so, das es im "data direcoty" eine Version 15 gibt, seit dem Update (v16) diese nicht mehr kompatibel sind.
Kann ich das gerade biegen?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Brauchst du denn Version 16? Wieso versendest du nicht einfach 15 weiter.
 

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.266
Punkte für Reaktionen
72
Punkte
68
brauchen icht zwingend. aber da watchtower automatisch aktualisert und ich eigentlich immer ein Freund von Updates bin, würde ich die V16 schon gerne laufen lassen
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Gerade bei Datenbanken sollte man aber eher vorsichtig sein, weil dann läuft nichts. Ich weiß nicht ob es hilft, aber probier doch mal pg_upgrade aus. Vielleicht hilft das ja
 

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.266
Punkte für Reaktionen
72
Punkte
68
da ich mich jetzt nicht wirklich gut damit auskenne:
pg_upgrade?

im postgres container?
 

Ghost108

Benutzer
Mitglied seit
27. Jun 2015
Beiträge
1.266
Punkte für Reaktionen
72
Punkte
68
das müsste ich doch machen, nachdem ich postgres auf v16 aktualisiert habe?
wenn ja, wie soll das funktionieren, wenn danach der container nicht mehr starten, auf Grund der Meldung im Post 1?
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Dann geh doch erst auf 15 und probier den Befehl aus. Und wenn das klappt musst du nur noch die 16er verwenden
 

DrDeath

Benutzer
Mitglied seit
31. Aug 2018
Beiträge
203
Punkte für Reaktionen
90
Punkte
34
Wenn dein Postgresql 15 wieder läuft, mach ein Datenbank Backup (falls nicht schon vorher täglich gemacht)

Beispiel (Benutzer, Pfade müssen natürlich angepasst werden, ist ein Beispiel von meinem Raspberry)
Code:
sudo docker exec -t postgres pg_dumpall -c -U postgres | gzip > /home/pi/docker/postgresql/backups/dump_$(date +%Y-%m-%d_%H_%M_%S).gz

Danach kannst du auf postgres 16 aktualisieren.

Restore erfolgt in ein neues Data Verzeichnis. ( auch hier gilt: Benutzer, Datenbank, Pfade bitte deiner Umgebung anpassen)
Code:
sudo docker stop postgres
cd /home/pi/docker/postgresql/
mv data/ data.old/
mkdir data
sudo docker start postgres
gunzip < /home/pi/docker/postgresql/backups/dump_2023-09-15_18_15_20.gz | sudo docker exec -i postgres psql -U postgres
 
Zuletzt bearbeitet:

Hinti

Benutzer
Mitglied seit
15. Mai 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
1
Ich hatte leider heute die gleiche Herausforderung

Ich bin zurück auf Version 15.X das heisst, alles vom 16 gelöscht im Docker, danach auch das Verzeichnis auf dem NAS \docker\postgre gelöscht.

Dank HyperBackup konnte ich meine NAS \docker\postgre wiederherstellen. Danach Postgres 15.X Container neu konfiguriert und gestartet funktioniert wieder alles.
 

ebusynsyn

Benutzer
Sehr erfahren
Mitglied seit
01. Jun 2015
Beiträge
470
Punkte für Reaktionen
275
Punkte
119
@Hinti

Ich stehe vor der gleichen Herausforderung, jedoch mit beschränktem Fachwissen und erlaube mir Dich zu bitten, etwas mehr ins Detail zu gehen.

Grundsätzlich verstehe ich Dein Vorgehen, jedoch:
- was heisst genau "...alles vom 16 gelöscht im Docker"
- wie genau bist Du vorgegangen bei "...danach Postgres15.X container neu konfiguriert..."

Mit HyperBackup kann ich auch alles wieder rekonstruieren. Heisst, alles was 15.X betrifft, vom Stand von gestern könnte ich zurückspielen.

Alternativ wäre, die komplette Installation und 16.1 neu aufzusetzen, und die Dokumente bzw. deren Ordner in die neuen Verzeichnisse kopieren, was aber - glaube ich - nicht so ganz funktioniert.
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.218
Punkte für Reaktionen
1.038
Punkte
224
Es müsste eigentlich reichen, in der compose wieder Version 15 anzugeben und dann die Container wieder neu zu starten.

Das Problem gab es mit Paperless-ngx und Postgres schon bei den Updates von 14 auf 15; lustigerweise war das von 12 über 13 auf 14 bei mir kein Problem.

Wenn ich die Tage die Zeit finde, führe ich das Update bei mir durch und werde eine Schritt für Schritt Anleitung dazu erstellen und im Sammelthread einstellen.
 
Zuletzt bearbeitet:

ebusynsyn

Benutzer
Sehr erfahren
Mitglied seit
01. Jun 2015
Beiträge
470
Punkte für Reaktionen
275
Punkte
119
@Hinti @Monacum

Es läuft wieder und ich bin heute mal ganz Stolz auf mich... ja ich weiss, immer den Ball schön flach halten :)

Der Tip von @Monacum hat mich auf den richtigen Weg gebracht. Nämlich wie folgt danach zu suchen, wie ich die Postgres-Version im Portainer-Stack festlegen kann.

Geholfen hat mir dann diese Seite:
https://www.baeldung.com/ops/postgresql-docker-setup
Im Abschnitt 3 auf dieser Seite - mittlerer Bereich - habe ich gesehen, dass hinter 'postgres' einfach mit einem Doppelpunkt getrennt eine Versionsnummer steht.

Danach habe ich auf der Homepage von Postgres geschaut, welches ist die letzte 15er Version und habe im PortainerStack eine kleine Korrektur vorgenommen.

Im Portier den Paperless-Stack, Abschnitt 'db' editiert und zwar wie folgt
vorher:
db:
image: postgres
restart: always
volumes:
- /volume1/docker/paperdb:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

nachher:
db:
image: postgres:15.4
restart: always
volumes:
- /volume1/docker/paperdb:/var/lib/postgresql/data
environment:
POSTGRES_DB: paperless
POSTGRES_USER: paperless
POSTGRES_PASSWORD: paperless

Danach habe ich den Stack 'updated' und alles neu 'gezogen' oder wie das heisst. Dann ein paar Minuten gewartet und Paperless aufgerufen. Alles ist wieder so wie vorher.

Noch eine Frage: bleibt diese Version jetzt auf alle Ewigkeit so bestehen und kann ich watchtower wieder starten. Die automatisch Update-Funktion für Paperless_ngx war schon sehr angenehm.
 

alexhell

Benutzer
Sehr erfahren
Mitglied seit
13. Mai 2021
Beiträge
2.831
Punkte für Reaktionen
854
Punkte
154
Ja kannst du ruhig starten. Wenn du 15.4 angegeben hast, dann würde er nur updaten wenn es Version 15.4.x gäbe. Er würde aber nicht auf 15.5 oder gar 16 gehen..
 
  • Like
Reaktionen: Hinti und ebusynsyn

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.218
Punkte für Reaktionen
1.038
Punkte
224
Genau, und Redis und Paperless-ngx sind davon logischerweise unabhängig, wenn deren Tag weiter auf latest steht, bekommst du über Watchtower da auch weiter die Updates.
 

Tom_64

Benutzer
Mitglied seit
17. Jun 2023
Beiträge
8
Punkte für Reaktionen
0
Punkte
1
@ebusynsyn

Danke für den klasse Typ, ich war schon der Verzweiflung nah, hatte das Problem mit paperless und vaultwaren
Dank deines Tipps läuft alles wieder wie bisher
 

Monacum

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
03. Jan 2022
Beiträge
2.218
Punkte für Reaktionen
1.038
Punkte
224
Wie gesagt, bei den Datenbanken bietet es sich unter Umständen an (der Erfahrung nach bei PostgreSQL ja, bei MariaDB nein), die Datenbankversion festzuschreiben, um genau das zu verhindern.
 

ebusynsyn

Benutzer
Sehr erfahren
Mitglied seit
01. Jun 2015
Beiträge
470
Punkte für Reaktionen
275
Punkte
119
@Tom_64 @Monacum

Danke für die Blumen 🌻 wobei ich nicht unterschlagen will, dass @Monacum die Weichen gestellt und mich in die richtige Richtung geleitet hat. Dass man den Weg durch das Gebüsch dann noch selber finden muss ist so quasi das "Learning by doing".

Am Ende ist das Halbwissen - in meinem Fall - wieder um eine Episode reicher und kann dann vielleicht mal wieder angewendet werden. Niedergeschrieben ist die Episode auf jeden Fall und kann bei Bedarf dann wieder abgerufen werden.

Und genau wegen solcher für uns Laien oftmals unüberwindbaren Hindernisse, die dann mit guten Hilfestellungen der Profis überwindet werden können, halte ich dieses Forum für das Beste weit und breit.
 

update-freak

Benutzer
Mitglied seit
19. Feb 2018
Beiträge
404
Punkte für Reaktionen
36
Punkte
28
stand gestern vor der gleichen Herausforderung wegen dem postgres update.
Bei mir betraf es:
  • paperless ngx
  • planka
  • podfetch
  • tandoor
-> bei tandoor hab ichs irgendwie nicht hinbekommen, der Rest ging nach erneutem Aufsetzen wieder
 

NAS-Newbee

Benutzer
Mitglied seit
09. Aug 2013
Beiträge
75
Punkte für Reaktionen
18
Punkte
8
Hab dasselbe Problem gehabt. Dank der Anleitung von @ebusynsyn und @Monacum schnell gelöst. Darüber bin ich echt froh, dass PaperlessNGX erstmal wieder läuft. Bei Mattermost bin ich genauso vorgegangen, leider ohne Erfolg (warum auch immer), aber das ist nicht ganz so dringend im Moment.

Was mich jetzt aber viel mehr beschäftigt ist die Frage, wie man damit in Zukunft umgeht. Ich habe Watchtower ja installiert, damit die Docker-Container laufend aktualisiert werden. Nún habe ich die DB bei PaperlessNGX auf die Version 15.4.x begrenzt. Was aber, wenn Paperless irgendwann die Version 16 benötigt? Dann müsste ich wieder manuell eingreifen, richtig?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat