Wie es dem ein oder anderen von euch bestimmt aufgefallen ist, stand RWTHmoodle in der zweiten Juniwoche 2021 für insgesamt zwei Tage den Lehrenden und Studierenden der RWTH Aachen nicht zur Verfügung. Wie wir bereits während der Störung auf unseren Kanälen berichtet haben, war ein schwerwiegender Datenbankfehler die Ursache für die Störung. Wie es zu diesem Fehler kam, möchten wir an dieser Stelle kurz erläutern.
Was ist passiert?
Am Morgen des ersten Tages (14.06.2021) der Störung fand eine größere Änderung der Daten auf dem Datenbankcluster von RWTHmoodle statt. In der Regel ein normaler Vorgang. In dem Fall wurde dieser jedoch aufgrund seiner Größe vom System abgelehnt. Auch dabei handelt es sich um einen normalen Vorgang, der vor allem die Sicherheit und Integrität der Datenbanken gewährleisten soll. Die Ablehnung der Änderungen führte dennoch zu weitreichenden Einschränkungen im Betrieb des Datenbankclusters. Von fünf Knoten, die in der Regel zur Verfügung stehen, fielen zwei aus. Dies führte letztendlich dazu, dass der Cluster für ca. 30 Minuten nur mit drei operiert hat. Alle Versuche der Kolleginnen und Kollegen aus der Fachabteilung, welche zu dem Zeitpunkt bereits mit Hochdruck an der Lösung des Problems gearbeitet haben, die beiden ausgeschiedenen Knoten wieder in den Cluster zu integrieren, waren bis dahin erfolglos.
Letztendlich wurde sich an den technischen Support des Herstellers gewandt und ein Prio-1-Ticket eröffnet, um keine weitere Zeit zu verlieren. In der Zwischenzeit wurde der Zugriff auf RWTHmoodle für die Nutzenden gesperrt, um somit einen Datenverlust zu vermeiden.
Erste Analysen des Herstellersupports deuteten auf bekannte Bugs in der aktuellen MySQL Version, welche auf dem Cluster eingesetzt wird, hin. Da aber die möglichen Lösungsansätze der Mitarbeitenden des Herstellers nicht zum Erfolg geführt haben, wurde im Laufe des zweiten Tages der Störung (15.06.2021) entschieden den gesamten Datenbankcluster zu stoppen, ihn komplett zu löschen und neu aufzusetzen. Dies konnte im Laufe des Tages erfolgreich durchgeführt werden, sodass der Cluster und RWTHmoodle am Morgen des dritten Tages (16.06.2021) wieder komplett funktionsfähig und nutzbar zur Verfügung standen. An dieser Stelle ist besonders zu erwähnen, dass ein Datenverlust vermieden werden konnte und das eingespielte Backup den Stand vom Abend des ersten Tages hatte.
Erkenntnisse und Maßnahmen
Aus den ersten Erkenntnissen, die während der Störung zusammen mit dem Hersteller gewonnen wurden, resultierten Anpassungen im Betriebsmodus des Datenbankclusters, um das Auftreten der besagten Bugs in Zukunft verhindern zu können. Die Bugs selbst sollen durch den Hersteller in einer der zukünftigen MySQL Versionen behoben werden. Selbstverständlich werden diese anschließend durch unsere Fachabteilung zunächst getestet und eine Rückkehr zum bisherigen Betriebsmodus geprüft werden.
Darüber hinaus werden derzeit verschiedene Konzepte evaluiert, um bei zukünftigen Störungen oder auftretenden Bugs einen Workaround zu haben, der längere Ausfallzeiten verhindert.
Da Störungen jedoch nie ausgeschlossen werden können, bitten wir, euch in dringenden Fällen an das IT-ServiceDesk zu wenden.
Verantwortlich für die Inhalte dieses Beitrags ist Anastasios Krikas.
Ich finde es gut, dass hier der Versuch unternommen wird, Informationen zum Ausfall von Moodle zu liefern. Das ist schonmal ein Fortschritt seitens des ITCs.
Leider kommt dieser Bericht, aber nicht am Niveau einen Post-Mortem oder erklärt überhaupt die Frage #woranhatetjelegen (wie dieser Artikel auf Twitter beworben wurde).
Was war dieser „schwerwiegender Datenbankfehler“ oder was waren die ursächlichen „größere Änderung der Daten“ (INSERTs, UPDATEs, Migrationen, …), welche Versionen wurden eingesetzt?
„The cost of failure is education.“ – Devin Carraway
Da ja nicht nur das ITC Moodle mit MySQL einsetzt, könnten die auftretenden Probleme ja auch bei anderen auftreten.
Beispielsweise bei Betreibern von Moodle Instanzen infra.run (für das Land Berlin) oder Belwue finden sich detalierte Fehlerberichte.
Mit einen detaillierten Fehlerbericht könnte das ITC ja ganz im Sinne des Opensorce Gedankens der genutzten Software Moodle anderen Betreibern aus der eigenen Erfahrungen heraus Anhaltspunkte zu möglichen Problemquellen etc. liefern.
Hallo Paul,
vielen Dank für dein konstruktives Feedback zu unserem Nachbericht.
Wir geben dieses gerne an die zuständigen Personen weiter.
Wir haben uns explizit für eine solche Beschreibung entschieden, um möglichst vielen Leser*innen verständlich darzustellen was passiert ist.
Gerne liefern wir an dieser Stelle noch eine detailliertere Beschreibung:
Wir verwenden den InnoDB Cluster zur Ausfallsicherheit und Lastverteilung.
Der Bug hängt mit dem Consistency Level zusammen. Das Consistency Level beschreibt, wie sichergestellt wird, dass Daten zwischen den Knoten konsistent bleiben.
Wir hatten ein Level eingestellt, der höchste Konsistenz bietet.
Im Zuge der Störung haben wir nach Erkenntnissen und Empfehlung des Supports des Herstellers das Level geändert, welches nicht vom Bug betroffen ist.
Somit konnten wir im Anschluss den Betrieb von RWTHmoodle und des Datenbankclusters aufnehmen.
Welche „größere Änderung der Daten“ das war, konnten wir leider nicht herausfinden. Wie im Blogbeitrag beschrieben ist das auch ein normales Verhalten.
Wir befinden uns momentan noch im Austausch mit dem Hersteller, um eine tiefergehende Analyse durchzuführen.
Grundsätzlich sind wir mit der Moodle-Community in regelmäßigem Austausch und dort wird sich auch über solche Probleme ausgetauscht.
Dafür nutzen wir etablierte Kanäle (z.B. das HU-Forum und Community-Treffen).
Wir hoffen, dass dir unsere Antwort weiterhilft.
Viele Grüße,
das IT Center Blog Team