MySQL High Availability ist eine Option, die Sie wählen können, damit Ihre MySQL-Datenbank auch bei einem Ausfall oder einer Unterbrechung verfügbar bleibt. Mit dieser Funktion können Sie höhere Anforderungen in Bezug auf unterbrechungsfreien Betrieb und eine Nulltoleranz für Datenverlust festlegen. In diesem Artikel werden die Bedeutung des allgemeinen Konzepts der Hochverfügbarkeit und die Funktionsweise der MySQL-Option „High Availability“ beschrieben.
Was ist Hochverfügbarkeit?
Hochverfügbarkeit ist die Fähigkeit eines Systems oder Services, auch bei einem Fehler oder Ausfall funktionsfähig und verfügbar zu bleiben. Mit einem hochverfügbaren System wird sichergestellt, dass die betriebsnotwendigen Systeme und Anwendungen eines Unternehmens immer betriebsbereit sind. Dies ist insbesondere für Unternehmen und Organisationen in Bereichen wie dem Gesundheitswesen, dem Finanzwesen und der Luftfahrt wichtig, in denen der Ausfall eines betriebsnotwendigen Systems schwerwiegende Folgen haben könnte.
Die Hochverfügbarkeit wird in der Regel als Prozentsatz des unterbrechungsfreien Betriebs angegeben, der im Rahmen von Service Level Agreements (SLAs) definiert wird, wobei ein Wert von 100 für ein System steht, das nie ausfällt. Da dies praktisch nicht erreichbar ist, streben die meisten Unternehmen eine Verfügbarkeit von 99,999 % (fünf Neunen) an.
So erzielt MySQL Hochverfügbarkeit
Ein hochverfügbares System muss bei einem Fehler sofort wiederhergestellt werden können. Eine Hochverfügbarkeitsarchitektur besteht aus mindestens drei grundlegenden Elementen, die zusammen für Wiederherstellbarkeit und Hochverfügbarkeit sorgen.
Fehlererkennung
MySQL bietet eine Option für Hochverfügbarkeit (High Availability), mit der Anwendungen die Anforderungen an einen längeren unterbrechungsfreien Betrieb (und Nulltoleranz für Datenverlust) erfüllen können. Wenn die Option „High Availability“ aktiviert ist, erstellt das MySQL-System drei Instanzen in drei verschiedenen Fehlerdomänen oder Verfügbarkeitszonen.
Die Daten werden in den drei Instanzen mithilfe von MySQL Group Replication repliziert, und die Anwendung stellt zum Lesen und Schreiben von Daten in der Datenbank eine Verbindung mit der primären Instanz her. Bei einem Ausfall löst das System innerhalb weniger Minuten ein automatisches Failover auf eine sekundäre Instanz aus.
Failover
Der Failover-Mechanismus überträgt Services an eine replizierte Instanz. Wenn mehrere Backup-Instanzen verfügbar sind, wählt der Failover-Mechanismus die am besten geeignete zum Hochstufen auf den primären Knoten aus.
Ein Weiterleitungsmechanismus
Bei einem Failover auf eine sekundäre Instanz leitet die Funktion „High Availability“ alle Anwendungs- und Benutzerverbindungen auf den neuen primären Knoten um. Zudem leitet sie alle Abfragen vom alten primären Knoten an die neue primäre Datenbank um.
MySQL High Availability: Unterbrechungsfreier Betrieb
Als unterbrechungsfreie Betriebszeit gilt die Zeit, die ein System verfügbar ist und ordnungsgemäß funktioniert. Sie wird als Prozentsatz der Gesamtzeit angegeben, in der das System erwartungsgemäß betriebsbereit ist. Ein hoher Wert für die unterbrechungsfreie Betriebszeit bedeutet, dass das System überwiegend wie erwartet verfügbar ist und ordnungsgemäß funktioniert.
Welche Betriebszeit bei unterschiedlichen Stufen von MySQL High Availability erwartet werden kann, hängt von der jeweils implementierten Hochverfügbarkeitslösung ab.
MySQL Replication
Mit MySQL Replication können Sie mehrere Server einrichten, um Redundanz und Failover sicherzustellen, sodass im Vergleich zu einem MySQL-Server ohne Hochverfügbarkeitsfunktion ein längerer unterbrechungsfreier Betrieb möglich ist. Bei einer Master-Slave-Konfiguration wird ein Master-Server für Lese- und Schreibvorgänge und mindestens ein Slave-Server nur für Lesevorgänge verwendet. Daten vom Master-Server werden asynchron auf die Slave-Server repliziert.
Zur Implementierung der Failover-Funktion muss mindestens ein Slave-Server als Standby-Server, der bei einem Ausfall auf einen Master-Server hochgestuft werden kann, eingerichtet werden. Failover ist im Allgemeinen ein manueller Prozess, bei dem der Slave-Knoten auf den Master-Knoten hochgestuft wird, indem der Status des hochgestuften Slave-Knotens zur Unterstützung von Abfragen in Lese-Schreib-Modus geändert wird.
Da das Failover manuell durchgeführt wird, dauert es länger und ist anfällig für Fehler, die zu längeren Ausfällen führen können. Zudem verwendet MySQL Replication die asynchrone Replikation. Das bedeutet, dass bei einem Ausfall des Master-Servers auf dem Master-Server festgeschriebene Transaktionen möglicherweise noch nicht auf die Slave-Server repliziert wurden. Dann müssen bei einem kritischen Datenverlust Daten wiederhergestellt werden, wodurch sich die Ausfallzeit des Systems verlängert.
MySQL Group Replication
Mit MySQL Group Replication lassen sich längere unterbrechungsfreie Betriebszeiten als mit MySQL Replication erreichen. Mithilfe von MySQL Group Replication werden mehrere MySQL-Server in einer Gruppe eingerichtet, wobei ein Server als primärer Server und die anderen Server als sekundäre Server bestimmt werden. Jeder Server in der Gruppe verfügt über eine Kopie der Daten und sorgt mittels Replikation dafür, dass die Kopien stets synchron sind.
Wenn der primäre Server ausfällt, erkennen die sekundären Server in der Gruppe den Ausfall automatisch und starten den Failover-Prozess. Einer der sekundären Server wird automatisch zum neuen primären Server hochgestuft und beginnt mit der Bearbeitung von Client-Anforderungen. Die anderen sekundären Mitglieder in der Gruppe erhalten nun Aktualisierungen vom neuen primären Server und setzen die Bearbeitung von Client-Leseanforderungen fort.
Sobald der ausgefallene Server wieder online ist, wird er automatisch als sekundärer Server wieder in die Gruppe aufgenommen.
Da die Ausfallerkennung und das Failover bei MySQL Group Replication automatisch erfolgen, ist die Ausfallzeit minimal und die Benutzer und Anwendungen bemerken den Ausfall in der Regel nicht.
MySQL Cluster
Eine MySQL Cluster-Hochverfügbarkeitslösung bietet die höchste Stufe des unterbrechungsfreien Betriebs. Dieses hochverfügbare, verteilte Datenbanksystem bietet zusammen mit dem automatischen Failover und Lastausgleich ein hohes Maß an Verfügbarkeit, Performance und Skalierbarkeit, sodass es nahezu keine Ausfallzeiten gibt.
Bei MySQL Cluster werden zum Speichern und Verwalten von Daten drei Arten von Knoten verwendet:
- Datenknoten: Speichern Daten und verarbeiten Lese- und Schreibanforderungen.
- MySQL-Serverknoten: Erhalten Abfragen von Client-Anwendungen, verarbeiten diese auf den Datenknoten und geben das Ergebnis an die Clients zurück.
- Managementknoten: Verwalten den Betrieb des Clusters und führen bei einem Ausfall ein Failover und die Wiederherstellung durch.
Wenn mindestens ein Knoten im Cluster ausfällt, wird das Problem im Cluster automatisch erkannt und ein Failover-Prozess ausgelöst. Der gesamte Prozess erfolgt in der Regel innerhalb einer Sekunde nach einem Ausfall ohne Unterbrechung des Service für Client-Anwendungen. Der Cluster funktioniert weiter wie gewohnt und praktisch ohne Ausfallzeiten.