Wie man Discourse auf S3 sichert | Discourse how to back up to S3

Discourse und S3 sind gute Freunde. Wenn Sie mit S3 vertraut sind, wird Ihnen das sehr helfen.

Viele Leute haben begrenzte virtuelle Host-Speicherplätze und begrenzte Ressourcen.

Die Verwendung von S3 für Backups kann den Speicherplatz besser nutzen.

Sie können die Konfiguration gemäß den folgenden Schritten vornehmen:

Backup-Häufigkeit festlegen

Gehen Sie zu Admin > Backup und stellen Sie backup_frequency auf 1. Dieser Parameter gibt die Häufigkeit der Backups an und ist standardmäßig auf 7 eingestellt.
1 bedeutet, dass täglich ein Backup erstellt wird.
7 bedeutet, dass alle 7 Tage ein Backup erstellt wird.

Für die allgemeine Website-Nutzung ist es am besten, täglich ein Backup zu erstellen, wenn Sie S3 für die Backup-Speicherung verwenden.

Bucket und Pfad für Backups festlegen.

Dieses Bucket kann privat und nicht öffentlich sein. Beachten Sie hier, dass, wenn Sie S3 auch für die Speicherung von Bildern und Anhängen verwenden, dieses Bucket bei der Einrichtung als “public” ausgewählt werden muss.

Zur Vereinfachung können Sie hier ein weiteres Bucket erstellen. Vermeiden Sie es, es mit dem Speicher für Anhänge und Bilder zu verwechseln.

Wir empfehlen Ihnen, hier einen zusätzlichen Verzeichnispfad festzulegen, da Discourse in diesem Ordner mehrere benötigte Ordner erstellt.

Damit Ihr Speicher klarer und eindeutiger ist.

s3_access_key_id und s3_secret_access_key festlegen

Als Nächstes müssen Sie für Ihre Backup-Daten Folgendes festlegen: s3_access_key_id und s3_secret_access_key sowie s3_region. Diese 3 Parameter sind sehr wichtig. Die Region darf nicht falsch gewählt werden. Wenn Ihr Backup nicht hochgeladen werden kann, liegt das höchstwahrscheinlich an Berechtigungsproblemen.

Die spezifische Konfigurationsmethode finden Sie unter: Setting up file and image uploads to S3 - sysadmin - Discourse Meta in diesem Artikel.

Beachten Sie, dass Sie Ihrem Key ID ausreichende Berechtigungen erteilen müssen, sonst können Sie nicht hochladen.

Backup als S3-Speicher festlegen

Legen Sie die Backup-Methode als S3-Speicher fest.

Sie müssen im Auswahlteil dieses Parameters den Speicher “Local” in “S3” ändern.

Backup testen

Wenn alles eingerichtet ist, können Sie einen Test-Backup durchführen.

Klicken Sie auf die Backup-Schaltfläche, um den Test-Backup durchzuführen. Im Backup-Menü klicken Sie einfach auf “Backup”.


Im erscheinenden Fenster werden Sie gefragt, ob Sie hochgeladene Bilder und Anhänge einschließen möchten.

Im Allgemeinen wählen Sie hier “Yes”. Anschließend wird die Benutzeroberfläche zum Protokollfenster weitergeleitet, und die Backup-Informationen werden über das Protokoll angezeigt. Sie können durch Beobachtung des Protokolls, ob “Finished” angezeigt wird, feststellen, ob das Backup abgeschlossen ist.

Noch wichtiger ist, dass Sie sich in Ihr S3-Konto einloggen und sicherstellen können, dass ein aktuelles Backup vorhanden ist.


Sie müssen auf Zeit, Größe und Dateiname achten, um dies zu bestätigen.


Durch die Einrichtung von S3-Backups können wir den Speicherplatz von Discourse erweitern und nahezu unbegrenzte Backups und unbegrenzten Speicherplatz erhalten. Für den Website-Betrieb sind automatische Backups und Uploads sehr nützliche Funktionen.

Gleichzeitig haben Sie mehrere Backup-Speicher, was Ihnen bei der Wiederherstellung der Website an verschiedenen Wiederherstellungspunkten hilft.

Da Sie die Backup-Dateien von Docker getrennt haben, ist dies für Ihre täglichen Backups sehr hilfreich. Es kann die Speichernutzung erheblich reduzieren.

Wir empfehlen außerdem, Bilder und Anhänge auf S3 zu speichern, da dies erhebliche Vorteile für die Migration und die Wiederherstellung von Backups bietet.

Weitere Informationen finden Sie im Originalartikel iSharkFly - 飞鲨.

2 „Gefällt mir“

Ich möchte fragen, ob beim Sichern, wenn Backup und Anhänge an unterschiedliche S3s angehängt sind, der Inhalt des S3 für Anhänge ebenfalls gesichert wird? Wenn die Option zum Einschließen von hochgeladenen Bildern und Anhängen nicht ausgewählt ist, können die Inhalte im S3 für Anhänge bei der Wiederherstellung des Backups im Forum noch normal angezeigt werden?

Ich habe die Sicherungsinhalte für Discourse nicht wirklich sorgfältig geprüft.

Nachdem ich unsere Sicherung angesehen hatte, wurde mir klar:
Wenn Ihre Anhänge AWS Cloud Storage verwenden, werden die auf AWS hochgeladenen Anhänge auch dann nicht in Ihre Sicherungsdatei aufgenommen, wenn Sie beim Sichern Anhänge einschließen auswählen.

Die Anhänge darin werden auf Ihrem lokalen Computer gespeichert, aber nicht auf AWS.

Dies lässt sich auch an der Größe unserer Website-Sicherung erkennen. Wenn Anhänge enthalten wären, könnte die Sicherung nicht nur über 80 MB groß sein.

Dies zeigt, dass die Sicherung nur die Datenbank und lokale Anhänge enthält.
Wenn Sie diese heruntergeladene Datei öffnen, sehen Sie nur 2 Ordner. Einer ist dump, dies ist die PGSQL-Datenbank-Dump-Datei.

Der andere ist der Upload-Ordner. Dieser Ordner enthält nur die von Ihnen lokal hochgeladenen Anhänge, nicht die auf AWS gespeicherten. Für uns ist dieser Ordner sehr klein und enthält nur wenige Dateien.
Dies liegt daran, dass wir alle Anhänge kurz nach dem Start der Community auf AWS hochgeladen haben.

Das obige Bild zeigt den Inhalt der PGSQL-Dump-Datei. Sie können die PGSQL-Version des aktuell laufenden Discourse-Datenbankcontainers aus der Dump-Datei ablesen.
Wenn Sie die Datenbank lokal ansehen möchten, können Sie diese Dump-Datei direkt in Ihren lokalen Container importieren.

AWS-Wiederherstellungsprobleme

Wenn Sie AWS-Anhänge verwenden, aber kein AWS CDN, dann sind die Inhalte im Haupttext absolute Pfadadressen auf Ihrem AWS.
In den MD-Dateien der Themen wird dies wie folgt dargestellt:

Nachdem der Inhalt veröffentlicht wurde, ersetzt Discourse den tatsächlichen HTML-Code durch Ihre CDN-Absolute-Adresse.

Daher, basierend auf der obigen Antwort, wenn Sie beim Sichern keine Anhänge sichern, sind die Anhangsinhalte bei der Wiederherstellung nicht betroffen.

Ausnahmen

Tatsächlich sind die Anhänge auch betroffen, hauptsächlich aufgrund des Domänenwechsels.
Da wir zuvor einen Domänenwechsel hatten, waren die Anhangsinhalte vorhanden, aber der Haupttext konnte nicht verknüpft werden, selbst mit einer Rekonstruktion des HTMLs.
Zu diesem Zeitpunkt ist es etwas mühsam und erfordert möglicherweise eine direkte Änderung in der Datenbank.
Solange Sie die Domäne nicht willkürlich ändern, ist dies normalerweise kein Problem.

Für eine detailliertere Diskussion besuchen Sie bitte: Discourse 备份和恢复中有关附件的问题 - Discourse - iSharkFly

Ich möchte auch eine andere Frage stellen. Ich benutze nicht Amazon Cloud S3, sondern Cloudflare R2 und habe erfolgreich ein Backup in R2 erstellt. Ich kann die Dateien in Cloudflare sehen, aber die Backups werden nicht im Discourse-Backend angezeigt. Wo könnte das Problem liegen?


Sichern Sie erneut manuell und überprüfen Sie die Sicherungsprotokolle.

Dies liegt höchstwahrscheinlich daran, dass Discourse einen Fehler bei der API zur Überprüfung des Status nach der Speicherung von Sicherungen in R2 hat.

Überprüfen Sie, ob der Inhalt des Protokolls vollständig ist.

Dies ist der gerade erstellte Screenshot, der anscheinend alles normal anzeigt. Außerdem habe ich in R2 die API mit den höchsten Berechtigungen erstellt.

Ich habe meinen Backup-Prozess ausgeführt, und es scheint, dass unsere Protokolle identisch sind.

[2024-07-26 11:56:00] pg_dump: SEQUENCE SET category_custom_fields_id_seq wird ausgeführt
[2024-07-26 11:56:00] Backup wird abgeschlossen...
[2024-07-26 11:56:00] Archiv wird erstellt: isharkfly-2024-07-26-115540-v20240723030506.tar.gz
[2024-07-26 11:56:00] Sicherstellen, dass das Archiv noch nicht existiert...
[2024-07-26 11:56:00] Leeres Archiv wird erstellt...
[2024-07-26 11:56:00] Daten-Dump wird archiviert...
[2024-07-26 11:56:00] Uploads werden archiviert...
[2024-07-26 11:56:00] Überspringt auf S3 gespeicherte Uploads.
[2024-07-26 11:56:00] Entfernt temporäres Verzeichnis '/var/www/discourse/tmp/backups/default/2024-07-26-115540'...
[2024-07-26 11:56:00] Archiv wird komprimiert, das kann eine Weile dauern...
[2024-07-26 11:56:05] Archiv wird hochgeladen...
[2024-07-26 11:56:09] Ausführen des after_create_hook für das Backup...
[2024-07-26 11:56:09] Alte Backups werden gelöscht...
[2024-07-26 11:56:10] Aufräumen...
[2024-07-26 11:56:10] Entfernt '.tar'-Reste...
[2024-07-26 11:56:10] Markiert Backup als abgeschlossen...
[2024-07-26 11:56:10] Festplattenspeicher wird aktualisiert...
[2024-07-26 11:56:10] Benachrichtigt 'honeymoose' über das Ende des Backups...
[2024-07-26 11:56:18] Fertig!

Als nächstes prüfen wir, ob es sich um ein Problem mit den Einträgen in der Datenbank-Backup-Tabelle handelt.

Verwendest du auch R2? Kann es erfolgreich angezeigt werden?

Ich benutze AWS.

Das sollte einfach zu konfigurieren sein.