Ich möchte eine gute Backup-Strategie sicherstellen, wenn meine Website live geht. Dies sind die folgenden Schritte, die ich unternommen habe. Was fehlt mir?
Datenbank-Backups
Discourse erstellt ein tägliches Datenbank-Backup.
Ein zusätzliches Cron-Datenbank-Backup wird täglich durchgeführt. (+12 Stunden vom UI-basierten Backup)
Backups werden in einem S3-Bucket (anderes Rechenzentrum) gespeichert.
Kern-Dateien
Die folgenden werden zweimal täglich in einem S3-Bucket (anderes Rechenzentrum) gesichert.
discourse/containers/app.yml
discourse/shared/standalone/uploads/
discourse/shared/standalone/backups/
discourse/shared/standalone/ssl/
discourse/shared/standalone/letsencrypt/
Datei-Backups erfolgen zweimal täglich, 30 Minuten nach den Datenbank-Backups.
S3: Uploads
Tägliches Backup von Uploads wird in einem S3-Bucket in einem anderen Rechenzentrum gespeichert.
Server-Backups
Wöchentliche Backups des gesamten Servers - 4 wöchentliche Backups werden aufbewahrt.
Jährlich wird ein wöchentliches Backup als Master-Backup an einem entfernten Ort gespeichert.
Dies sollte alle notwendigen Daten und Einstellungen bereitstellen, um einen Server vor Ort oder auf einem neuen Server wiederherzustellen.
Das ist der vorgeschlagene Weg. Wenn Sie Ihre Datenbank einmal täglich sichern, riskieren Sie maximal 24 Stunden dessen, was auch immer in diesem Forum passiert ist.
Mir wurde mindestens zweimal gesagt, dass es kein Problem sei, aber niemand hat jemals erklärt, warum nicht. Also sichere ich meine Datenbank alle 6 Stunden – mein Forum ist nicht so beschäftigt, also kann ich dieses Risiko eingehen. Zum Vergleich – mein E-Commerce sichert alle 4 Minuten.
Wie haben Sie Ihre Datenbank eingerichtet, um häufiger Backups zu erstellen? Ich würde zweimal täglich bevorzugen, aber die UI-Funktionalität erlaubt nur täglich.
Sie können einen Cronjob (auf Ihrem Server, nicht im Container) ausführen lassen
docker exec app bash -c "discourse backup"
Wenn die Daten wirklich kritisch sind, können Sie einen PostgreSQL-Replikationsserver einrichten und jeden Commit auf einem zweiten Server durchführen lassen.
Das ist Discoures eigener CLI-Befehl zum Sichern, und mir wurde gesagt, dass docker exec app ihn außerhalb des Containers ausführt (app steht natürlich für den Namen des Containers).
Und weil ich S3 konfiguriert habe, das in denselben Bucket springt, wo auch die „normalen“ Backups liegen.
Es gibt ein kleines Problem… bald gibt es eine Zillion Backups. Ich weiß nicht, ob ich anders vorgehen sollte, einen SQL-Dump erstellen, ihn mit aws-cli verschieben und dann alles löschen, was älter als ein bestimmter Zeitraum ist. Oder dasselbe auf dem VPS tun.
Aber das ist der einfachste Weg, einen SQL-Dump zu erhalten.
Ich gehe davon aus, dass dies die interne Diskussions-Backup-Routine aktiviert, sodass alle Benachrichtigungen bestehen bleiben.
Deaktivieren Sie die Backup-Planung in der Benutzeroberfläche und verwalten Sie alles über Cron? Oder führen Sie eine in der Benutzeroberfläche durch und die zusätzlichen über Cron?
Vielen Dank an @Jagster und @pfaffman für die Hilfe bei der Einrichtung einer zusätzlichen Datenbank über Cron. Das reduziert den Datenverlust meines Systems im schlimmsten Fall auf 12 Stunden.