Habemus Backup!

Wir konnten ein Backup finden und unsere Mastodon-Instanz wiederherstellen. Danke an alle, die uns unterstützt haben.

Wir sind wieder da!

First things first: Wir sind mit social.anoxinon.de wieder online und müssen keine Datenrettung der Blockdevices (NVMEs) durchführen. Wir konnten ein drittes und dediziert, für die PostgreSQL-Datenbank bestimmtes Backup finden, wie erfolgreich einspielen. Eine Datenrettung ist damit nicht mehr notwendig, und wir können unseren Spendenaufruf einstellen.

Wir haben die letzten Tage eine emotionale Achterbahn durchgemacht. Seit Donnerstag war unsere Mastodon-Instanz, das Herzstück unserer Vereinsarbeit, weg: NVMEs tot und nicht erreichbar. Unsere Backup-Struktur hat sich trotz doppelten Backups als lückenhaft erwiesen. Für uns standen plötzlich mögliche Kosten im Raum, die einen kleinen Verein leicht in die Insolvenz hätten tragen können. Gestern Nacht erlebten wir jedoch ein großes Wunder: Muto, einer unser Sysadmins, hat noch auf einen weiteren Backup-Weg hingewiesen; Der uns in der Dokumentation entgangen war.

Was war passiert?

Wir nutzten als Virtualisierungssystem Proxmox und vorrangig LXC Container. Bei der Mastodon Instanz unter https://social.anoxinon.de gab es stets das Problem hoher Last. Daher wurde vor einer ganzen Weile ein dedizierter Server bei Hetzner mit zwei NVMEs und einer großen SSD angemietet. Um möglichst gute Leistungswerte für Mastodon zu haben, wurden einige Verzeichnisse nicht wie üblich als Volume von Proxmox bereitgestellt, sondern via Bindmount reingereicht. In unserer bisherigen Backup-Struktur (BorgBackup via BorgMatic) wurden Daten ganz regulär weiter gesichert. Daher entstand der Umstand, dass das Proxmox eigene Backupverfahren die Bindmounts nicht abdeckte zwar vertretbar war, aber Langfristig noch nach einer weiteren Lösung suchte. Dies war damals eine bewusste Entscheidung für eine bessere Performance gewesen, ist uns nun aber leider auf die Füße gefallen - bis gestern Nacht jedenfalls. Trotz dieser doppelten Struktur gab es nun eine Lücke bei der PostgreSQL-Datenbank, da /var/lib/postgresql ein Bindmount eines separaten BTRFS-Subvolume war und nicht von BorgMatic gesichert wurde.

Was wir übersehen hatten und daher nicht wussten, bis uns Muto, ein Anoxinon-Mitglied und Sysadmin bei uns darauf aufmerksam gemacht hat: Es gab noch ein, auf pgBackRest basierendes und dezidiertes Backup der Datenbank, mit dem aktuellen Stand aus der letzten Woche. YoSiJo und Muto haben in einer anstrengenden Nachtschicht das Backup einspielen können, Mastodon läuft wieder. Nach dem Achterbahnkurs der letzten Tage sind wir nun wieder in ruhigeren Fahrwassern.

Lagebild

IST-Stand

Die VE social-prod der Mastodon Instanz unter https://social.anoxinon.de ist auf dem Server proxmox-02.anoxinon.de wiederhergestellt.

Dabei kamen keinen Bindmounts mehr von Proxmox zum Einsatz, sodass jetzt auch der Proxmox Backup Server ein vollständiges, wenn auch nicht atomares Backup besitzt.

proxmox-02.anoxinon.de hat nur 2 X 1TB SSD (BTRFS/RAID1) und 8 X 2TB HDD (MDADM/RAID6/BTRFS) zu Verfügung, da die Datenbank mit ihreren 256GB so schnell keinen Platz auf SSD hatte und aktuell auf HDD liegt. Dies zeigt sich derzeit in der langsamen Art der Instanz.

Zudem läuft die Instanz jetzt nicht mehr wie vor dem Ausfall über unseren haProxy bei Hetzner, sondern über den NPMPlus, der damit früher als vorgesehen für den produktiven Einsatz genutzt wird.

Das ursprüngliche System bei Hetzner liegt noch mit zwei neuen NVMEs im Rescue Modus und ist nicht wieder gangbar gemacht.

SOLL-Stand

Das Datenbank-Volume von PostgreSQL soll von HDD auf SSD wandern. Dafür werden gerade Volumes von Stage-Systemen migriert.

Zielsetzung dahinter ist es, das die Instanz nicht nur wieder erreichbar ist, sondern auch flüssig läuft.

Diesbezüglich laufen wir aber auch noch auf der PostgreSQL Version 15 und Updates der Datenbank wären hier auch ggf. Wege der Mittelfristigen Optimierungen.

Wie es mit dem Hetzner-Server weitergeht, wird sich noch zeigen müssen. Wir wollten ihn perspektivisch loswerden. Nun wurde dieser Prozess unerwartet und unfreiwillig beschleunigt. Es sieht aber aktuell danach aus, als wenn wir die notwendige Leistung für Mastodon nur durch diesen wieder generiert bekommen und daher eine Reaktivierung unabdingbar ist.

Alles weitere wird sich daher noch zeigen müssen.

Learnings

Schrödingers Backup vermeiden

Ein Backup ist nur dann ein echtes Backup, wenn man es auch erfolgreich wieder einspielen kann. Da bringen auch Doppelt- und Dreifachstrukturen nichts.

Und irgendwie war eben das an sich ja nicht unser Problem, denn …

  • sowohl das Restore der VE über denn im Einsatz befindlichen Proxmox Backup Server (PBS), verlief wie erwünscht.
  • das darauf aufsetztende weitere Restore-Arbeiten des Borg basierten Backup verlief wie erwünscht;
  • bis auf eben jenen einen Punkt, der fehlenden Datenbank.

Am Ende hatten wir zwar nicht 2+ Backups, trotz PBS, BORG und pgBackRest, das im Einsatz war; Wir hatten stattdessen ein deutlich zu verschachteltes und unübersichtliches Backup.

Genau dieser Punkt ist uns zum Verhängnis geworden. Wir geloben an dieser Stelle Besserung und werden in Zukunft schauen das wir folgende Punkte hier angehen:

  • Backup Konzept vereinheitlichen und weniger komplex gestalten.
  • Dokumentation verbessern, da hier schlicht ein wichtiger Punkt in dieser übersehen werden konnte.
    • Must have: Section für Backup-Konzept (Gegeben)
    • Must have: Section für Restore von …
      • Datenbank (Teilweise)
      • Content und Applications Daten (Teilweise)
      • Der gesamten VM/VE (Fehlend)
    • Must have: Referenzierende Angaben in allen, relevanten bereichen:
    • Testen der Backup Restore nach festem Intervall.

(Menschliche) Dokumentation ist alles

Wir hatten als Verein pgBackRest eingerichtet, jedoch ist dieses Wissen über die Zeit verloren gegangen. Zwar war auch eine Dokumentation vorhanden, jedoch hatten wir in den letzten Tagen durch Stress und Panik einen Scheuklappenblick entwickelt, sodass wir uns nur auf PBS + BorgBackup fokussiert hatten. Erst der Hinweis von Muto hat uns aus dem Blick rausgezogen. Aus diesem Grund empfehlen wir wärmstens:

  1. Die eigene Dokumentation oder das eigene Wiki immer aktuell zu halten und Zwischenbezüge herzustellen.
  2. Dokumentation auf besondere Fälle wie eben diesen Auszurichten. Sprich nicht pgBackRest nur als Unterpunkt von PostgreSQL zu haben, sondern auch als ein Unterpunkt von Backup und Restore/Recovery/Wiederherstellung zu handhaben.
  3. Menschliche Wissenshorte nicht zu verlieren.

Open Source heißt Solidarität

In aller Ehrlichkeit: Die Nachricht vom Crash war ein Schock. Für uns war zuerst nicht klar, ob wir die Kosten einer Datenrettung hätten bewältigen können. Um so mehr erleichtert waren wir, als wir das Verhalten aus der Open Source Community gesehen haben: Interessierte Fragen über die Fehlerquelle, Diskussionen zur Lösungssuche und Spendenbereitschaft. Anstatt Spott und “Kein Backup, keine Gnade” habt ihr uns mit eurer Unterstützung den Rücken gestärkt und uns ermutigt, weiterzumachen. Vielen, vielen Dank an alle dafür.

Spenden

Wir danken an dieser Stelle allen, die uns sofort und ohne Diskussion mit Spenden unterstützt haben. Insgesamt sind innerhalb von vier Tagen über 2000 EUR zusammengekommen. Wow!

Ein besonders großer Dank geht an dieser Stelle an GNU/Linux.ch, die uns sofort und aus eigener Initiative mit 500 € unterstützt haben. GNU/Linux.ch ist ein Community-Magazin über alles zu freier Software und freien Gesellschaft, und betreibt seinen Mastodon-Accout über unsere Instanz.

Auch ohne Datenrettung fallen bei uns Kosten für die erste Analyse an, für die wir die eingegangen Spenden sehr gerne verwenden werden. Den Überschuss wollen wir für unsere laufeden IT-Betriebskosten verwenden – also in genau die Infrastruktur, die diesen Ausfall in Zukunft besser abfedern soll, und in Projekte wie die Mastodon-Instanz, XMPP, Bizzfed und unsere Stage-Umgebung

Um unseren Dank auszudrücken, möchten wir unseren Spender*innen etwas zukommen lassen:

  • Bei einer erfolgten Spende von 20 EUR erhaltet ihr ein freundliches Danke-Schreiben mit einem Anoxinon-Sticker.
  • Bei 50 EUR gibt es noch einen limitierten Holo-Sticker dazu.
  • Für Spenden von 100 EUR und mehr erhaltet ihr eine kostenfreie Mitgliedschaft bei Anoxinon für 1 Jahr (gilt nicht für bestehende Mitglieder!).

Nach wie vor gilt auch: Wenn ihr eure Spende steuerlich absetzen wollt, stellen wir gerne eine Bescheinigung aus. Die Voraussetzung ist eine nicht-anonyme Spende. Meldet euch dafür und für das entsprechende Goodie einfach bei buchhaltung@anoxinon.de.

So oder so: Danke für eure Solidarität.