Upgrade fehlgeschlagen: PostgreSQL Version 13 ... nicht kompatibel mit ... Version 10.12

Ich habe ein kleines Forum, themooster.net, das auf Discourse basiert und das ich seit einigen Monaten nicht aktualisiert habe.

Ich habe in der „Admin“-Empfehlung auf „Update“ geklickt, um es zu aktualisieren, und es wurde mir mitgeteilt, dass ich das Upgrade stattdessen über die Shell-Eingabeaufforderung durchführen muss. Dabei wurden mir drei Befehle angezeigt:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Ich habe diese drei Befehle ausgeführt. Das „rebuild app“ schlug zunächst fehl, da auf meiner kleinen Linode-Box nicht genügend freier Speicherplatz (5 GB) vorhanden war. Ich habe daher zusätzlichen Speicherplatz hinzugefügt, und das „rebuild app“ schien anschließend erfolgreich abzulaufen.

Aber die Seite ist nicht wieder hochgefahren.

Ich habe mich umgesehen, einen Neustart durchgeführt, aber sie kam immer noch nicht hoch. Danach habe ich mich etwas genauer umgeschaut.

Es scheint, dass der Frontend-Webserver Nginx ordnungsgemäß startet, aber wenn ich über das Web wie ein normaler Benutzer auf mein Forum zugreifen möchte, erhalte ich vom Nginx-Frontend einen „502 Bad Gateway“-Fehler.

Die Datei „/var/discourse/shared/standalone/log/var-log/postgres/current“ ist mit Fehlern gefüllt, wie zum Beispiel:

2021-04-17 13:54:37.785 UTC [7095] FATAL: database files are incompatible with server
2021-04-17 13:54:37.785 UTC [7095] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 10.12 (Debian 10.12-2.pgdg100+1).

Ich habe gute Backups des Forums in folgendem Verzeichnis:
/var/discourse/shared/standalone/backups/default

Was sollte ich nun tun?

Siehe PostgreSQL 13-Update

Ich schaue mir jetzt deinen PostgreSQL 13-Link an – danke.

Gibt es eine Möglichkeit, wie ich diese Komplikation hätte erkennen können, ohne Vollzeit-Administrator zu sein und ständig die Aktivitäten der Schlüsseltechnologien (PostgreSQL, Ruby, Linux, …) hinter Discourse zu verfolgen?

Falls ja, könnte den drei Anweisungszeilen (cd /var/discourse; …) eine vierte Zeile hinzugefügt werden: „Warnung: Prüfe zuerst hier auf weitere Informationen, die möglicherweise zutreffen.“?

Falls nein, sollte Discourse offener damit umgehen, dass es nicht gut für den gelegentlichen Gebrauch geeignet ist.

Ich werde versuchen, die von Ihnen freundlicherweise verlinkte Seite zum PostgreSQL 13-Update noch ein paar Mal zu lesen.

Bei den ersten paar Durchgängen bin ich jedoch mehr oder weniger völlig verloren. Ich habe keine Ahnung, welche Abschnitte dieser Seite auf meine Situation zutreffen könnten (falls überhaupt).

Beispielsweise konzentriert sich die PostgreSQL 13-Update-Seite (was verständlich ist) auf das Upgrade von PostgreSQL 12 auf 13. Meine Fehlermeldung:

Das Datenverzeichnis wurde von PostgreSQL-Version 13 initialisiert, die mit dieser Version 10.12 (Debian 10.12-2.pgdg100+1) nicht kompatibel ist.

spricht von Version 10.12 … ist das PostgreSQL 10 oder PostgreSQL 12? (Normalerweise würde ich „10.12

Aha - meine Datei:

/var/discourse/shared/standalone/postgres_data_old/PG_VERSION

hat den Wert “10”.

Der obige Link zu PostgreSQL 13 ist also, soweit er für ein Upgrade von 12 auf 13 gilt, meines Wissens nach nicht unbedingt relevant (und mein Wissen ist in dieser Hinsicht sehr begrenzt).

Ich habe ein wirklich schlechtes Gefühl dabei … als würde man versuchen, lebende Munition in einer dunklen Höhle zu reparieren, ohne Anleitung, ungeschult und nicht einmal sicher zu sein, mit welcher Art von Munition man es zu tun hat.

Dieser Kommentar, auf den ich zufällig gestoßen bin, hat mich zum Nachdenken gebracht:

https://meta.discourse.org/t/how-do-i-manually-update-discourse-and-docker-image-to-latest/23325/238?u=thepythoniccow

“Du solltest erneut neu bauen. Meine Vermutung ist, dass du eine Nachricht über das PostgreSQL-Upgrade ignoriert hast.”

Das hat mich dazu gebracht, es erneut mit dem Befehl cd /var/discourse; git pull; ./launcher rebuild app zu versuchen … anscheinend kann dieser “Rebuild” mehrmals ausgeführt werden.

Dieses Mal habe ich die Ausgabe festgehalten. Ich GARANTIERE jedoch, dass ich die meisten Nachrichten in der Ausgabe ignoriert habe. Allein der Befehl ./launcher rebuild app erzeugt 2020 Zeilen Ausgabe. Es würde mich einen Monat sonntags kosten, herauszufinden, welche Programme laufen und was ihre Ausgaben bedeuten. Es gibt keine praktische Möglichkeit, für mich zu wissen, ob ich etwas Kritisches in dieser Ausgabe ignoriere.

Dennoch …

Es hat funktioniert!!

Meine Website ist wieder online und läuft mit der aktuellen Softwareversion.

Die Lektion des Tages: Wenn der Befehl ./launcher rebuild app keine funktionierende Website liefert, versuche es erneut.

2 „Gefällt mir“

Ah. Entschuldigung, dass ich nicht daran gedacht habe, dir zu sagen, was ich dem Typen erzählt habe!

:tada: Super! So froh, dass du es geschafft hast!

Ja. Das könnte das Einzige sein, was du noch wissen musst. :slight_smile:

Freut mich, dass du wieder online bist!

3 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.