Backups und Replikation sind zwei verschiedene Dinge.
Backups liefern einen Schnappschuss der Daten zu einem bestimmten Zeitpunkt. Sie bieten einen Wiederherstellungspunkt.
Replikation verteilt jede Aktion auf ein anderes System, sodass Sie sie an mehr als einem Ort haben. Löschungen werden ebenfalls repliziert.
Wenn Sie wirklich ausfallsicher sein wollen, brauchen Sie beides. (Und mehr…)
Replikation löst also nur das Problem, aktuelle Daten an mehreren Orten zu haben. Backups bieten die Methode, ein System auf einen bestimmten Zeitpunkt wiederherzustellen.
Discourse verwendet 2 Mechanismen zur Speicherung:
- PostgreSQL-Datenbank für alles außer angehängten Dateien
- Angehängte Dateien werden auf dem lokalen System oder in S3 gespeichert
Um die in der PostgreSQL-Datenbank gespeicherten Daten zu sichern und/oder zu replizieren, können Sie die PostgreSQL-Dokumentation konsultieren, wie dies zu tun ist. Bezüglich Backups und Replikation.
Angehängte Dateien sind etwas kniffliger. Wenn Sie sie in S3 speichern, können Sie S3-Backups verwenden. Für lokal gespeicherte Dateien können Sie eine Vielzahl von lokalen Systemoptionen verwenden.
Das Erstellen vollständiger Backups ist je nach Datenmenge eine große Aufgabe. Daher kann dies nicht ohne Weiteres häufiger durchgeführt werden. Das Standard-Backup-Verfahren von Discourse besteht darin, vollständige Backups zu erstellen. Wenn Sie das Risiko eines Datenverlusts wirklich reduzieren möchten, müssen Sie sich andere Optionen ansehen.
Eine Option könnte von Ihrem Hosting-Dienst bereitgestellt werden: Volume-Snapshots. Dies bietet eine Möglichkeit, eine „sofortige“ Kopie der in einem Volume gespeicherten Daten zu erstellen. Dies ermöglicht es Ihnen, das Volume auf diesen Zeitpunkt wiederherzustellen. Volume-Snapshots sind möglicherweise auch im Betriebssystem verfügbar, abhängig von dem verwendeten Dateisystem. (btrfs unterstützt dies zum Beispiel.)
Darüber hinaus geht die PostgreSQL-Dokumentation auch auf die Erstellung kontinuierlicherer Backups der Datenbank ein, was eine ausgezeichnete Point-in-Time-Wiederherstellung der Datenbank ermöglicht. (Vergessen Sie nicht, die Backups extern zu sichern.) Dies ist viel schneller als vollständige Backups.
Für granularere Sicherungen von Anhängen können Sie verschiedene Backup-Tools verwenden, die die Verwaltung von Voll-/Differenzial-Backups ermöglichen. Zum Beispiel duplicity. Oder Sie könnten rsync (ohne Löschen) verwenden. Zwischen den Snapshots könnten Sie immer noch Dateien verlieren. Die Verwendung von S3 ohne Löschen wäre sicherer, da sich die Dateien bereits auf einem anderen System befinden.
Zusammenfassend lässt sich sagen, dass der Standard-Backup-Mechanismus von Discourse nicht gut für einen häufigeren Sicherungsplan geeignet ist. Wenn Sie mehr Backups wünschen, verwenden Sie eine Kombination aus den Standard-PostgreSQL-Backup-/Replikationsfunktionen, S3, Volume-Snapshots usw.
Auf meiner Seite verwende ich das Backup-System von Discourse nicht für regelmäßige Backups. Ich habe immer noch tägliche Backups, aber ich verwende eine Kombination aus pg_dumps und duplicity-Konfigurationen (koordiniert über backupninja).