ClickCease Hochverfügbarkeit von MySQL verstehen | tuxcare.com

Inhaltsübersicht

Abonnieren Sie unseren beliebten Newsletter

Schließen Sie sich 4.500+ Linux- und Open-Source-Experten an!

2x im Monat. Kein Spam.

Verständnis der MySQL-Hochverfügbarkeit: Gute und schlechte Gründe, sie zu nutzen

Joao Correia

Juli 8, 2021 - Technischer Evangelist

Die Kosten für Ausfallzeiten in der Unternehmensumgebung summieren sich schnell. In einer Umfrage, gaben 40 % der Befragten an dass nur eine Stunde Ausfallzeit ihr Unternehmen mehr als 1 Mio. USD an Verlusten kostete. Die Sicherstellung der ständigen Verfügbarkeit von Datenbankdiensten ist eindeutig die Mühe wert.

Das spart Ihrem Unternehmen nicht nur viel Geld, sondern verbessert auch die Beziehungen zu Interessengruppen aller Art.

Wie kann man also eine ständige Verfügbarkeit sicherstellen? Das Konzept hinter der ständigen Verfügbarkeit wird als Hochverfügbarkeit bezeichnet. In diesem Artikel erläutern wir, was Hochverfügbarkeit ist und wie Sie sie für Ihre MySQL-Cluster erreichen können.

Wir weisen auch auf eine Schattenseite der Hochverfügbarkeit hin: Systemadministratoren verlassen sich fälschlicherweise auf die Hochverfügbarkeit, um Wartungsaufgaben durchzuführen - und erklären, warum dies die Ziele der Hochverfügbarkeit untergräbt und Ihren Unternehmensbetrieb gefährdet.

Einführung in die Hochverfügbarkeit

Lassen Sie uns zunächst über die Verfügbarkeit sprechen. Es macht wenig Sinn, einen Dienst wie eine Datenbank zu betreiben, wenn er für die Benutzer die meiste Zeit nicht verfügbar ist. Wenn wir also von Verfügbarkeit sprechen, beziehen wir uns auf den Grad der Erreichbarkeit eines Dienstes.

Bei jedem funktionierenden Dienst kann man davon ausgehen, dass er bei Bedarf verfügbar ist - aber man muss auch mit gewissen Ausfallzeiten rechnen, ein oder zwei Tage im Jahr oder vielleicht ein paar Stunden im Monat.

Ein allgemein verfügbarer Dienst mag für viele Anwendungsszenarien ausreichen, aber wenn es sich um einen kritischen Dienst handelt oder wenn eine sehr große Anzahl von Nutzern von einem Dienst abhängt, reicht die bloße "Verfügbarkeit" einfach nicht aus.

Und genau hier kommt die Hochverfügbarkeit ins Spiel. Ganz einfach ausgedrückt, gewährleistet Hochverfügbarkeit ein höheres Maß an Verfügbarkeit als normalerweise erwartet, genauer gesagt, ein vereinbartes Maß an Verfügbarkeit, auch unter Berücksichtigung von Wartung, Patching und allgemeinen Fehlern und Störungen.

Welcher Grad an Verfügbarkeit ist Hochverfügbarkeit?

Es gibt keine einheitliche Definition dafür, was unter Hochverfügbarkeit zu verstehen ist, sondern nur, dass sie über das hinausgeht, was allgemein als "verfügbar" akzeptiert wird, um eine bestimmte (höhere) Verfügbarkeitsanforderung zu erfüllen. Tatsächlich wird Ihr Unternehmen die erforderliche Verfügbarkeit wahrscheinlich auf der Grundlage der betrieblichen Erfordernisse definieren und dabei die Kosten einer hohen Verfügbarkeit gegen die mit Ausfallzeiten verbundenen Verluste abwägen.

Der Grad der Verfügbarkeit, den Sie benötigen, kann in Prozent ausgedrückt werden. Eine Verfügbarkeit von 99,99 % oder "vier Neunen" bedeutet beispielsweise eine maximale Ausfallzeit von 52,60 Minuten im Jahr, während eine Verfügbarkeit von "sechs Neunen" oder 99,9999 % die Ausfallzeit auf 31,56 Sekunden im Jahr begrenzt.

Im Grunde haben Sie die Wahl - aber auch hier gibt es einen Kompromiss. Die Aufrechterhaltung der Hochverfügbarkeit ist teuer - sie erfordert zusätzliche physische Ressourcen und Softwarelizenzen und beansprucht auch die Ressourcen Ihrer Mitarbeiter. Sie werden jedoch feststellen, dass es sich lohnt, diesen Preis zu zahlen, um die Folgekosten von Unterbrechungen oder das Risiko von Umsatzeinbußen aufgrund unzufriedener Kunden zu vermeiden.

 

Wie funktioniert die Hochverfügbarkeit in der Praxis?

Die genaue Art Ihrer Hochverfügbarkeitsinfrastruktur hängt von Ihrer Arbeitslast ab. Im Großen und Ganzen könnte man jedoch sagen, dass Hochverfügbarkeit erreicht wird, wenn Fehlertoleranz besteht, so dass selbst bei einem Ausfall eines Dienstes oder Geräts die Arbeitslast nicht unterbrochen wird. In der Regel bedeutet dies, dass es keinen einzigen Ausfallpunkt gibt - alle Dienste und Geräte sind sowohl auf Netzwerk- als auch auf Anwendungsebene vollständig redundant.

Je nach Dienst kann dies typischerweise eine Reihe von Knoten umfassen - Ihr MySQL-Cluster wird beispielsweise mehrere Knoten enthalten, auf denen die Daten gespeichert werden. Mehrere Knoten werden dann mit einem Lastausgleichswerkzeug kombiniert, so dass bei einem Ausfall eines Knotens die Anfragen einfach an einen anderen Knoten weitergeleitet werden. Die Benutzer können weiterhin auf einen verfügbaren Dienst zugreifen, auch wenn die Leistung leicht beeinträchtigt ist.

Konfigurieren der Hochverfügbarkeit in MySQL

Ihr Weg zu einer hochverfügbaren MySQL-Datenbank hängt natürlich von Ihrer Implementierung von MySQL ab. Im Großen und Ganzen müssen Sie eine Art MySQL-Cluster mit mehreren Knoten erstellen - mit anderen Worten, Ihre Daten müssen sich auf mehreren MySQL-Servern befinden.

Als Nächstes benötigen Sie einen Dienst, der Daten über diese Knoten hinweg replizieren kann, um sicherzustellen, dass jeder Knoten eine exakte Kopie der in Ihrer Datenbank enthaltenen Daten enthält. Und schließlich benötigen Sie einen Load Balancer, der sicherstellt, dass alle Datenbankanfragen gleichmäßig an die Datenbankknoten weitergeleitet werden - was eine ausgeglichene Last gewährleistet -, aber auch sicherstellt, dass Anfragen erfüllt werden, selbst wenn ein Knoten offline ist.

MySQL bietet zum Beispiel ein kommerzielles Produkt an, das auf hohe Verfügbarkeit ausgerichtet ist - den MySQL InnoDB Cluster. Er basiert auf der MySQL-Gruppenreplikation, einer beliebten Methode zur Gewährleistung der Hochverfügbarkeit in einer MySQL-Datenbankumgebung.

Eine weitere Alternative ist Galera, das seit vielen Jahren MySQL-Hochverfügbarkeit anbietet. Wenn Sie den MariaDB-Fork von MySQL verwenden, können Sie z.B, Ihre MariaDB-Umgebung für Hochverfügbarkeit konfigurieren konfigurieren, indem Sie mehrere Knoten mit Galera Cluster betreiben und sich dabei auf HAProxy für den Lastausgleich verlassen. Alternativ könnten Sie sich auch MariaDBs eigenes Produkt MaxScale.

 

GUTE GRÜNDE, SICH AUF HOHE VERFÜGBARKEIT ZU VERLASSEN...

In Unternehmen werden zunehmend Hochverfügbarkeitsprinzipien eingesetzt, weil sie auf lange Sicht die besten Ergebnisse liefern. Hier sind nur einige der vielen guten Gründe, warum Sie die Einrichtung von Hochverfügbarkeit in Ihrem Betrieb in Betracht ziehen sollten:

  • Kritische Anwendungen. Manche Anwendungen können sich einfach keine Ausfallzeiten leisten, denken Sie an militärische Anwendungen oder Energienetze. Hochverfügbarkeit ist in diesen Fällen ein Muss, und Sie haben kaum eine andere Wahl, als ein extrem hohes Verfügbarkeitsniveau zu gewährleisten - obwohl Sie immer noch eine Risikobewertung vornehmen und genau entscheiden können, wie viel Verfügbarkeitsgarantie Sie benötigen.
  • Mitnahmeeffekte. Wenn ein System das Herzstück einer Arbeitslast ist, kann selbst eine kurze Ausfallzeit zu weitreichenderen Problemen führen, da verbundene und synchronisierte Systeme kaskadenartig ausfallen. Die Investition in Hochverfügbarkeit in einigen wenigen Kernbereichen - z. B. einer Datenbank - kann sich durchaus lohnen, wenn man bedenkt, dass die Kosten für weitaus größere Folgeprobleme, die nur schwer zu beheben sind, in Kauf genommen werden.
  • Einnahmeverluste. Eine hohe Verfügbarkeit, selbst wenn sie nur eine bescheidene Anzahl von Neunen beträgt, kann vor Umsatzeinbußen schützen. Für einen großen Online-Händler können schon wenige Stunden Umsatzverlust in Verbindung mit dem damit verbundenen Imageschaden erhebliche Auswirkungen auf das Endergebnis haben.
  • Kundenerwartungen und SLAs. Möglicherweise ist Ihr Betrieb an Service-Level-Vereinbarungen gebunden, die Ihren Kunden eine bestimmte Betriebszeit garantieren. Wenn das der Fall ist, müssen Sie sicherstellen, dass die Dienste, die die Arbeitslasten Ihrer Kunden unterstützen, die erforderliche Betriebszeit haben - und das erreichen Sie durch hohe Verfügbarkeit. Wenn Sie dies nicht tun, kann dies zur Kündigung der Verträge oder zu Vertragsstrafen führen.

Das sind nur einige der triftigen Gründe für Hochverfügbarkeit - und in der heutigen technologieorientierten Welt gibt es viele Arbeitslasten, die ohne eine Hochverfügbarkeitsplattform einfach nicht funktionieren können.

 

... und der falsche Grund, auf hohe Verfügbarkeit zu setzen 

Die zunehmende Verbreitung von Hochverfügbarkeit hat leider auch zu deren Missbrauch geführt. Da Hochverfügbarkeit die Systeme so unglaublich robust macht, können Technikteams versucht sein, bei der Durchführung von Systemadministrationsaufgaben wie dem Patchen Abkürzungen zu nehmen, weil das Team davon ausgeht, dass die Hochverfügbarkeitsinfrastruktur einfach die Last des Abschaltens eines Rechners tragen wird.

In der Praxis kann es schnell komplizierter werden. Nehmen Sie zum Beispiel einen MySQL-Cluster. Ja, wenn Sie einen Rechner neu starten, um ihn zu patchen, läuft Ihr MySQL-Cluster dank der hohen Verfügbarkeit weiter. Denken Sie jedoch daran, dass ein Ausfall eines Knotens zum Patchen und ein anschließender Neustart zu einem Rückstau von Daten führt, die neu eingespielt werden müssen. Es kann sehr lange dauern, bis dieser Prozess abgeschlossen ist.

Natürlich muss jeder Datenbankhost die gleichen Daten sehen. Die Gefahr besteht bei der Neusynchronisierung: Wenn ein anderer Knoten ausfällt, während Sie bereits einen Knoten entfernt haben, um ihn zu flicken, kann es zu einem Verlust des gültigen Quorums kommen. Mit anderen Worten: Die Anzahl der Server, die die "Wahrheit" über die Daten besitzen, fällt unter ein akzeptables Niveau. Die Wiederherstellung aus einem solchen Zustand kann schwierig und komplex sein und sogar zu Datenverlusten führen.

 

Verlassen Sie sich bei der Wartung nicht auf hohe Verfügbarkeit

Hochverfügbarkeit ist dazu da, Ihre Systeme am Laufen zu halten, auch wenn etwas ausfällt. Dieser inhärente Schutz vor Ausfällen ist kein Freifahrtschein dafür, sich auf die Robustheit der Hochverfügbarkeit zu verlassen, um die Systemwartung in unverantwortlicher Weise durchzuführen, in der Hoffnung, dass es niemand merkt.

Stattdessen sollten sich die technischen Teams auf andere Lösungen verlassen - zum Beispiel eine vollständige Redundanz für ein System einrichten, das gepatcht wird, anstatt einfach zu hoffen, dass die Hochverfügbarkeitsinfrastruktur den Druck auffängt. Oder, wo möglich stattdessen auf Live-Patching zurückgreifen und damit die Notwendigkeit zu beseitigen, einen Dienst neu zu starten, um einen Patch zu installieren.

Dennoch zeigt die Abhängigkeit von Hochverfügbarkeit für Wartungsaufgaben besorgniserregende Anzeichen, sich durchzusetzen. Wenn man sich ein wenig umschaut, findet man sogar offizielle Herstelleranleitungen, in denen die Benutzer angewiesen werden, sich bei der Ausführung von Patching-Aufgaben auf die Hochverfügbarkeit zu verlassen und einfach zu hoffen, dass bei anderen Knoten keine weiteren Probleme auftreten, während ein Knoten für das Patching offline genommen wird.

 

VERPACKEN

Hochverfügbarkeit ist für viele Anwendungen von entscheidender Bedeutung - und für viele andere von großem Nutzen. Richtig konfiguriert, kann eine MySQL-Datenbank praktisch perfekte Verfügbarkeit bieten, aber das bedeutet nicht, dass Technik-Teams Verfügbarkeit als selbstverständlich ansehen können.

Eine Hochverfügbarkeitsarchitektur zu missbrauchen, um Wartungskürzungen vorzunehmen, ist einfach keine Option - die Risiken sind größer, als es auf den ersten Blick scheinen mag.

Stattdessen sollten Sysadmins auf bewährte Alternativen zurückgreifen - einschließlich Redundanz und Live-Patching - um Wartungsarbeiten durchzuführen, ohne die Fähigkeiten von Hochverfügbarkeitslösungen zu untergraben.

Möchten Sie das Patchen von Sicherheitslücken ohne Kernel-Neustart, Systemausfallzeiten oder geplante Wartungsfenster automatisieren?

Erfahren Sie mehr über Live-Patching mit TuxCare

Werden Sie ein TuxCare-Gastautor

Los geht's

E-Mail

Beitreten

4,500

Linux & Open Source
Fachleute!

Abonnieren Sie
unseren Newsletter