So wiederherstellen Sie Ihre defekte (nicht webbasierte) Discourse-Installation nach einem fehlgeschlagenen Upgrade

Ich habe gerade versucht, meine Discourse-Installation über das Web-Update auf die neueste Beta-Version (2.4.0 beta 11) zu aktualisieren, und jetzt ist sie nicht mehr erreichbar (probieren Sie es selbst aus, es werden HTTP-500-Fehler zurückgegeben).

Kontext

Meine installierte Version war noch 2.4.0 beta 6, ich wollte auf 2.4.0 beta 11 upgraden.
Ich denke, ich hatte eine ziemlich standardmäßige Installation, kann mich nicht erinnern, ob ich benutzerdefinierte Plugins hatte (und kann es jetzt auch nicht nachschauen), aber höchstens 1–2. Ich habe die meisten Standard-Einstellungen von Discourse beibehalten.

Was ich getan habe

Ich habe auf den Link für das Browser-Update mit einem Klick in der Update-Benachrichtigungs-E-Mail geklickt, die mich zu /admin/upgrade gebracht hat.

Laut dem Web-Update-Assistenten musste ich zuerst ein Update des Docker-Managers durchführen, bevor ich die eigentliche Discourse-Version aktualisieren konnte, also habe ich das gewählt. Einige Vorgänge wurden ausgeführt, und nach etwa der Hälfte des Fortschritts erschien eine Meldung über dem Web-Log-Ausgabebildschirm, dass beim Upgrade etwas schiefgelaufen sei und ich die Protokolle überprüfen sollte. Ich habe durch die Logs gescrollt, aber nichts ist mir direkt aufgefallen. Leider habe ich das Protokoll nicht gespeichert und stattdessen die Seite einfach neu geladen, in der Hoffnung, dass ich das Upgrade vielleicht einfach wiederholen kann, und davon ausgehend, dass der Fehler dazu geführt hat, dass das Upgrade einfach zurückgesetzt wurde.

Interessanterweise teilte mir die Seite admin/upgrade/ dann mit, dass der docker_manager auf dem neuesten Stand sei und nicht mehr aktualisiert werden müsse, also habe ich (höchstwahrscheinlich fälschlicherweise) angenommen, dass das Upgrade tatsächlich funktioniert habe und die Fehlermeldung ein Fehler war. Ich habe auch überprüft, ob mein Forum noch läuft, und es tat es und schien keine Probleme zu haben.

Mir wurde nun die Option angeboten, die Discourse-Installation selbst zu aktualisieren (die zuvor ausgegraut war), also habe ich das getan. Wiederum wurden Vorgänge im Log ausgegeben, denen ich nicht viel Aufmerksamkeit geschenkt habe, und nachdem etwa die Hälfte der Fortschrittsleiste gefüllt war, wurde eine ähnliche Fehlermeldung über der Log-Ausgabe angezeigt, dass etwas schiefgelaufen sei.

Ich dachte mir, ich mache dasselbe wie zuvor: Seite neu laden (wieder habe ich leider das Protokoll nicht gespeichert). Und wie erwartet wurde Discourse nun als „auf dem neuesten Stand" aufgeführt.

Das ist es, was ich derzeit unter admin/upgrade/ sehe:

Aber das eigentliche Forum funktioniert nicht mehr und gibt nur noch 500-Fehler zurück.

Was noch funktioniert

  • /admin/upgrade/ funktioniert noch und zeigt an, dass Discourse auf dem neuesten Stand ist.
  • Ich kann auch auf den Reiter „Processes" klicken und eine Liste der laufenden Prozesse erhalten.

Aber selbst der Reiter „Backups" gibt bereits einen 500-Fehler zurück, genauso wie /admin. Ich habe keinen Teil des Forums gefunden, der funktioniert, außer den beiden Reitern unter /admin/upgrade/.

Wie kann ich mich erholen?

Ich habe keine gute Idee, was schiefgelaufen ist, und weiß auch nicht, wo ich anfangen soll. Ich weiß nicht einmal, wie ich ohne die Weboberfläche auf die Protokolle zugreifen kann, um herauszufinden, was der Fehler war. Die Discourse-Installation wird bei Digital Ocean gehostet, und ich kann per SSH auf die Maschine und wahrscheinlich auch auf den Container zugreifen, aber ich weiß nicht, wo ich nach den Protokollen suchen soll.

Ein Hinweis, wo ich nach den Protokollen suchen sollte, wäre sehr willkommen.

Im Moment ist meine beste Idee, zu einem Backup zurückzukehren und alles zu verlieren, was nach dem letzten Backup gepostet wurde (glücklicherweise ist nicht viel Verkehr da, sodass der Verlust eines Tages an Inhalt akzeptabel ist).

Mein aktueller Plan und was mir fehlt

Ich habe Digital Ocean so eingerichtet, dass wöchentliche Backups vom Droplet erstellt werden, und ich glaube, meine Discourse-Installation war für tägliche Backups konfiguriert. Ich habe S3 nie konfiguriert, also sollten diese noch lokal gespeichert sein. Das Digital Ocean Droplet-Backup ist jedoch 5 Tage alt, aber ich würde es lieber vermeiden, den Inhalt der letzten paar Tage zu verlieren.

Mein grober Plan besteht im Wesentlichen darin, über Backups zu einem bekannten, funktionierenden Zustand zurückzukehren, indem ich Folgendes tue:

  1. Das Discourse-Backup von heute/gestern herunterladen.
  2. Das gesamte Droplet über Digital Ocean auf das letzte Backup von vor 5 Tagen zurücksetzen, damit ich wieder eine funktionierende Discourse-Installation habe.
  3. Das heruntergeladene Backup importieren, um den Inhalt zurückzuholen (abzüglich dessen, was nach dem letzten Discourse-Backup passiert ist).

Ich kann das Rollback über DO durchführen (Schritt 2) und werde herausfinden, wie ich das vorhandene Backup importiere, wenn ich so weit bin (Schritt 3), aber ich weiß nicht, wie ich ohne die Weboberfläche und mit /admin/backups/, das HTTP-500-Fehler zurückgibt, an das Backup komme.

Wo muss ich suchen, um das Backup über SSH zu finden / was muss ich tun können, um es nach dem Rollback auf das alte Droplet-Backup über DO wiederherzustellen?

Bei der Suche in den Foren habe ich nur Themen über das Hosting von Backups auf S3 gefunden, aber nicht, wo sie sich befinden, wenn sie lokal gespeichert sind.

1 „Gefällt mir“

With help form this topic I found that backups are stored in
/var/discourse/shared/standalone/backups/default in my case.

My current assumption is that I can simply copy out one of the .tar.gz files in there, roll back the Droplet, and put the backup file back at the same place so Discourse will find it and allow me to restore to it via the web interface.

cd /var/discourse
./launcher rebuild app
7 „Gefällt mir“

Thanks a lot, that worked! Much easier than going through all the backups-restore steps! :slight_smile:

3 „Gefällt mir“

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