MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Tipps zur Überwachung des MariaDB-Clusters

In früheren Blogbeiträgen haben wir Themen zur Überwachung Ihres Galera-Clusters behandelt, unabhängig davon, ob es sich um MySQL oder MariaDB handelt. Obwohl sich die Technologieversionen nicht wesentlich unterscheiden, hat MariaDB Cluster seit Version 10.4.2 einige wesentliche Änderungen erfahren. In dieser Version unterstützt es Galera Cluster 4 und hat einige großartige neue Funktionen, die wir uns in diesem Blogbeitrag ansehen werden.

Für Anfänger, die noch nicht mit MariaDB Cluster vertraut sind,  ist ein praktisch synchroner Multi-Master-Cluster für MariaDB. Es ist nur unter Linux verfügbar und unterstützt nur die XtraDB/InnoDB-Speicher-Engines (obwohl es experimentelle Unterstützung für MyISAM gibt - siehe die Systemvariable wsrep_replicate_myisam).

Die Software ist eine gebündelte Technologie, die von MariaDB Server, MySQL-wsrep-Patch für MySQL Server und MariaDB Server, entwickelt von Codership (unterstützt Unix-ähnliche Betriebssysteme), und der Galera wsrep-Anbieterbibliothek betrieben wird.

Sie können dieses Produkt mit MySQL Group Replication oder mit dem MySQL InnoDB Cluster vergleichen, das auf Hochverfügbarkeit abzielt. (Obwohl sie sich in den Prinzipien und Ansätzen für die Bereitstellung von HA unterscheiden.) 

Da wir nun die Grundlagen behandelt haben, werden wir in diesem Blog Tipps geben, die wir für nützlich halten, wenn Sie Ihren MariaDB-Cluster überwachen.

Die Grundlagen des MariaDB-Clusters

Wenn Sie anfangen, MariaDB Cluster zu verwenden, müssen Sie zunächst herausfinden, was genau Ihr Zweck ist und warum Sie sich überhaupt für MariaDB Cluster entschieden haben. Zuerst müssen Sie verdauen, was die Funktionen und ihre Vorteile bei der Verwendung von MariaDB Cluster sind. Der Grund, diese zu identifizieren, liegt darin, dass diese im Wesentlichen überwacht und überprüft werden müssen, damit Sie die Leistung, den normalen Gesundheitszustand und den nach Ihren Plänen ausgeführten Betrieb feststellen können.

Im Wesentlichen wird es als keine Slave-Verzögerung, keine verlorenen Transaktionen, Leseskalierbarkeit und geringere Client-Latenzen identifiziert. Dann können Fragen auftauchen wie:Wie kommt es zu keinem Slave-Lag oder verlorenen Transaktionen? Wie macht es das Lesen skalierbar oder mit kleineren Latenzen auf der Client-Seite? Diese Bereiche sind einer der Schlüsselbereiche, die Sie besonders bei starker Produktionsnutzung suchen und überwachen müssen.

Obwohl der MariaDB-Cluster selbst entsprechend angepasst werden kann. Das Anwenden von Änderungen am Standardverhalten wie pc.weight oder pc.ignore_quorum oder sogar die Verwendung von Multicast mit UDP für eine große Anzahl von Knoten kann sich auf die Art und Weise auswirken, wie Sie die Beschaffenheit Ihres MariaDB-Clusters überwachen. Aber auf der anderen Seite sind die wichtigsten Statusvariablen normalerweise Ihr Silberstreif am Horizont, da Sie wissen, dass der Zustand und Fluss Ihres Clusters gut läuft oder dass seine Verschlechterung ein mögliches Problem anzeigt, das vorher zu einem katastrophalen Ausfall führt.

Überwachen Sie immer Ihre Serveraktivität (Netzwerk, Festplatte, Auslastung, Arbeitsspeicher und CPU)

Die Überwachung Ihrer Serveraktivität kann auch eine komplexe Aufgabe sein, wenn Sie einen sehr komplizierten Stack haben, der in Ihre Datenbankarchitektur eingebunden ist. Für einen MariaDB-Cluster ist es jedoch immer am besten, Ihre Knoten immer so dediziert und dennoch einfach wie möglich einzurichten. Obwohl Sie dadurch nicht daran gehindert werden, alle freien Ressourcen zu nutzen, finden Sie unten die allgemeinen Schlüsselbereiche, die Sie sich ansehen müssen.

Netzwerk

Galera Cluster 4 bietet Streaming-Replikation als eine der wichtigsten Funktionen und Änderungen gegenüber der vorherigen Version. Da die Streaming-Replikation die Nachteile der vorherigen Versionen behebt, ermöglicht sie seit Galera Cluster 4 die Verwaltung von mehr als 2 GB Write-Sets. Dies ermöglicht die Fragmentierung großer Transaktionen und es wird dringend empfohlen, dies nur auf Sitzungsebene zu aktivieren. Das bedeutet, dass die Überwachung Ihrer Netzwerkaktivität sehr wichtig und entscheidend für die normale Aktivität Ihres MariaDB-Clusters ist. Auf diese Weise können Sie anhand des Zeitraums ermitteln, welcher Knoten den meisten oder höchsten Netzwerkverkehr hatte.

Wie hilft Ihnen das also dabei, zu verbessern, wo Knoten mit dem höchsten Netzwerkverkehr identifiziert wurden? Nun, dies bietet Ihnen Raum für Verbesserungen bei Ihrer Datenbanktopologie oder der Architekturebene Ihres Datenbankclusters. Die Verwendung von Load Balancern oder einem Datenbank-Proxy ermöglicht es Ihnen, Ihren Datenbankverkehr proaktiv zu konfigurieren, insbesondere wenn Sie bestimmen, welche spezifischen Schreibvorgänge an einen bestimmten Knoten gehen sollen. Nehmen wir an, von den 3 Knoten ist einer aufgrund von Unterschieden in den Hardwarespezifikationen besser in der Lage, große und große Abfragen zu verarbeiten. Auf diese Weise können Sie Ihre Investitionen besser verwalten und Ihre Kapazitätsplanung verbessern, wenn sich die Anforderungen in einem bestimmten Zeitraum ändern.

Datenträger

Da die Netzwerkaktivität auch für Ihre Festplattenleistung wichtig ist, besonders während der Spülzeit. Es ist auch am besten zu bestimmen, wie die zugesagte Zeit und der Abruf funktionieren, wenn eine hohe Spitzenlast erreicht wird. Es gibt Zeiten, in denen Sie Ihren Datenbankhost nicht nur für eine Galera-Cluster-Aktivität auffüllen, sondern auch mit anderen Tools wie Docker, SQL-Proxys wie ProxySQL oder MaxScale kombinieren. Dies gibt Ihnen die Kontrolle über Server mit geringer Auslastung und ermöglicht es Ihnen, die verfügbaren freien Ressourcen zu nutzen, die für andere nützliche Zwecke verwendet werden können, insbesondere für Ihren Datenbankarchitektur-Stack. Sobald Sie in der Lage sind, festzustellen, welcher Knoten bei der Überwachung die niedrigste Last hat, aber immer noch in der Lage ist, seine Festplatten-E / A-Auslastung zu verwalten, können Sie den spezifischen Knoten auswählen, während Sie die Zeit beobachten, die vergeht. Auch dies gibt Ihnen ein besseres Management bei Ihrer Kapazitätsplanung.

CPU-, Speicher- und Lastaktivität

Lassen Sie mich kurz auf diese drei Bereiche eingehen, auf die Sie bei der Überwachung achten sollten. In diesem Abschnitt ist es immer am besten, wenn Sie die folgenden Bereiche gleichzeitig besser beobachten können. Es ist schneller und einfacher zu verstehen, insbesondere beim Ausschließen eines Leistungsengpasses oder beim Identifizieren von Fehlern, die entweder zum Stillstand Ihrer Knoten führen und sich auch auf die anderen Knoten und die Möglichkeit eines Ausfalls des Clusters auswirken können.

Wie hilft also die CPU-, Arbeitsspeicher- und Lastaktivität bei der Überwachung Ihrem MariaDB-Cluster? Nun, wie ich oben erwähnt habe, sind dies eines der wenigen Dinge, die jedoch ein großer Faktor für die täglichen Routinekontrollen sind. Nun, dies hilft Ihnen auch zu erkennen, ob es sich um periodische oder zufällige Vorkommnisse handelt. Wenn dies regelmäßig geschieht, kann es sich um Backups handeln, die in einem Ihrer Galera-Knoten ausgeführt werden, oder es handelt sich um eine massive Abfrage, die optimiert werden muss. Beispielsweise fehlerhafte Abfragen ohne ordnungsgemäße Indizes oder unausgeglichene Nutzung des Datenabrufs, z. B. das Durchführen eines Zeichenfolgenvergleichs für eine so große Zeichenfolge. Dies kann für OLTP-Datenbanken wie MariaDB Cluster unbestreitbar unzutreffend sein, insbesondere wenn es sich wirklich um die Art und die Anforderungen Ihrer Anwendung handelt. Verwenden Sie besser andere Analysetools wie MariaDB Columnstore oder andere Analyseverarbeitungstools von Drittanbietern (Apache Spark, Kafka oder MongoDB usw.) für den Abruf großer Zeichenfolgendaten und/oder den Zeichenfolgenabgleich.

Da all diese Schlüsselbereiche überwacht werden, stellt sich die Frage, wie sie überwacht werden sollen. Es muss mindestens minütlich überwacht werden. Mit verfeinerter Überwachung, d. h. pro Sekunde kollektiver Metriken, kann dies ressourcenintensiv und sehr ressourcenintensiv sein. Obwohl eine halbe Minute Kollektivität akzeptabel ist, insbesondere wenn Ihre Daten und RPO (Recovery Point Objective) sehr niedrig sind, benötigen Sie granularere und Echtzeit-Datenmetriken. Es ist sehr wichtig, dass Sie das Gesamtbild Ihres Datenbankclusters überblicken können. Abgesehen davon ist es auch am besten und wichtig, dass Sie, wann immer Sie Metriken überwachen, das richtige Tool haben, um Ihre Aufmerksamkeit zu erregen, wenn Dinge in Gefahr sind, oder auch nur Warnungen. Die Verwendung des richtigen Tools wie ClusterControl hilft Ihnen bei der Verwaltung dieser wichtigen zu überwachenden Bereiche. Ich verwende hier eine kostenlose Version oder Community-Edition von ClusterControl und hilft mir, meine Knoten problemlos von der Installation bis zur Überwachung der Knoten mit nur wenigen Klicks zu überwachen. Sehen Sie sich zum Beispiel die Screenshots unten an:

Die Ansicht bietet einen verfeinerten und schnelleren Überblick darüber, was gerade passiert. Es kann auch ein detaillierteres Diagramm verwendet werden,

oder mit einem leistungsfähigeren und reichhaltigeren Datenmodell, das auch die Abfragesprache unterstützen kann bieten Ihnen eine Analyse der Leistung Ihres MariaDB-Clusters basierend auf historischen Daten, die seine Leistung zeitnah vergleichen. Zum Beispiel

Das bietet Ihnen nur sichtbarere Metriken. Sie sehen also, wie wichtig es wirklich ist, das richtige Tool zur Überwachung Ihres MariaDB-Clusters zu haben.

Stellen Sie die kollektive Überwachung Ihrer MariaDB-Cluster-Statistikvariablen sicher

Von Zeit zu Zeit kann es nicht unvermeidlich sein, dass MariaDB-Cluster-Versionen neue Statistiken zur Überwachung erstellen oder die Art der Überwachung der Datenbank verbessern, indem mehr Statusvariablen bereitgestellt und Werte verfeinert werden, auf die man achten kann. Wie ich oben erwähnt habe, verwende ich ClusterControl, um meine Knoten in diesem Beispiel-Blog zu überwachen. Das bedeutet jedoch nicht, dass es das beste Tool auf dem Markt ist. Ich meine, PMM von Percona ist sehr reichhaltig, wenn es um die kollektive Überwachung jeder Statistikvariable geht. Wann immer MariaDB Cluster neuere Statistikvariablen zu bieten hat, können Sie diese nutzen und auch ändern, da PMM ein Open-Source-Tool ist. Es ist ein großer Vorteil, dass Sie auch die volle Sichtbarkeit Ihres MariaDB-Clusters haben, da jeder Aspekt zählt, besonders in einer produktionsbasierten Datenbank, die Hunderttausende von Anfragen pro Minute verarbeitet.

Aber gehen wir hier genauer auf das Problem ein. Was sind diese statistischen Variablen, die untersucht werden müssen? Es gibt viele, auf die man sich bei einem MariaDB-Cluster verlassen kann, aber wir konzentrieren uns erneut auf die Funktionen und Vorteile, von denen wir glauben, dass Sie das MariaDB-Cluster nutzen, was es zu bieten hat, dann werden wir uns darauf konzentrieren.

Galera-Cluster - Flusssteuerung

Die Flusskontrolle Ihres MariaDB-Clusters gibt Ihnen einen Überblick darüber, wie sich der Replikationszustand im gesamten Cluster verhält. Der Replikationsprozess in Galera Cluster verwendet einen Feedback-Mechanismus, was bedeutet, dass er allen Knoten innerhalb dieses Clusters signalisiert und anzeigt, ob der Knoten die Replikation entsprechend seinen Anforderungen anhalten oder fortsetzen muss. Dies verhindert auch, dass ein Knoten zu weit zurückbleibt, während die anderen die eingehenden Transaktionen anwenden. So erfüllt die Flusskontrolle ihre Funktion innerhalb von Galera. Dies muss nun gesehen und bei der Überwachung Ihres MariaDB-Clusters nicht übersehen werden. Dies, wie in einem der Vorteile bei der Verwendung von MariaDB Cluster erwähnt, ist die Vermeidung von Slave-Lags. Das ist zwar zu naiv, um die Flusskontrolle und die Slave-Verzögerung zu verstehen, aber mit Flusskontrolle wirkt sich dies auf die Leistung Ihres Galera-Clusters aus, wenn es viele Warteschlangen und Commits gibt oder das Spülen von Seiten auf die Festplatte bei solchen Festplattenproblemen sehr niedrig ist oder Es ist nur die Abfrage, die ausgeführt wird, eine fehlerhafte Abfrage ist. Wenn Sie ein Anfänger in der Funktionsweise von Galera sind, könnte es Sie interessieren, diesen externen Beitrag darüber zu lesen, was die Flusskontrolle in Galera ist.

Gesendete/Empfangene Bytes

Die gesendeten oder empfangenen Bytes korrelieren mit der Netzwerkaktivität und sind sogar einer der Schlüsselbereiche, die neben der Flusskontrolle betrachtet werden sollten. Auf diese Weise können Sie bestimmen, welcher Knoten am stärksten betroffen ist oder auf die Leistungsprobleme zurückzuführen ist, die in Ihrem Galera-Cluster leiden. Dies ist sehr wichtig, da Sie überprüfen können, ob es eine Verschlechterung der Hardware wie Ihres Netzwerkgeräts oder des zugrunde liegenden Speichergeräts gibt, für die die Synchronisierung von schmutzigen Seiten zu viel Zeit in Anspruch nehmen kann.

Cluster-Last

Nun, das ist eher die Datenbankaktivität, wie viele Änderungen oder Datenabrufe bisher seit der Betriebszeit des Servers abgefragt oder durchgeführt wurden. Es hilft Ihnen, auszuschließen, welche Art von Abfragen die Leistung Ihres Datenbank-Clusters am meisten beeinträchtigt. Dadurch können Sie insbesondere beim Lastausgleich Ihrer Datenbankanfragen Raum für Verbesserungen schaffen. Die Verwendung von ProxySQL hilft Ihnen hier mit einem verfeinerten und granularen Ansatz für das Abfragerouting. Obwohl MaxScale diese Funktion ebenfalls bietet, hat ProxySQL mehr Granularität, obwohl es auch einige Auswirkungen auf die Leistung oder die Kosten hat. Auswirkungen treten auf, wenn Sie nur einen ProxySQL als SQL-Proxy haben, um das Abfragerouting zu erarbeiten, und es kann Probleme geben, wenn hoher Datenverkehr im Gange ist. Kosten, wenn Sie weitere ProxySQL-Knoten hinzufügen, um mehr Datenverkehr auszugleichen, den ein zugrundeliegendes KeepAlived hat. Obwohl dies eine perfekte Kombination ist, kann sie zu geringen Kosten betrieben werden, bis sie benötigt wird. Wie können Sie jedoch feststellen, ob dies erforderlich ist, oder? Das ist die Frage, die hier bleibt, daher ist ein scharfes Auge für die Überwachung dieser Schlüsselbereiche sehr wichtig, nicht nur für die Beobachtbarkeit, sondern auch für die Verbesserung der Leistung Ihres Datenbank-Clusters im Laufe der Zeit.

Als solches gibt es in einem MariaDB-Cluster unzählige Variablen, auf die man achten kann. Das Wichtigste, was Sie hier berücksichtigen müssen, ist das Tool, das Sie zum Überwachen Ihres Datenbank-Clusters verwenden. Wie bereits erwähnt, verwende ich hier in diesem Blog lieber die kostenlose Versionslizenz von ClusterControl (Community Edition), da sie mir mehr Möglichkeiten und Flexibilität bietet, um in einem Galera-Cluster zu sehen. Siehe das Beispiel unten,

Ich habe die Registerkarten, die mir eine visuelle Überwachung ermöglichen, markiert oder rot eingekreist den Zustand meines MariaDB-Clusters. Nehmen wir an, wenn Ihre Anwendung gierig darauf ist, von Zeit zu Zeit die Streaming-Replikation zu verwenden, und sie eine große Anzahl von Fragmenten (große Netzwerkübertragung) für die Cluster-Interaktivität sendet, sollten Sie am besten feststellen, wie gut Ihre Knoten mit der Belastung umgehen können. Besonders während Belastungstests, bevor bestimmte Änderungen in Ihrer Anwendung durchgeführt werden, ist es immer am besten, zu versuchen und zu testen, um das Kapazitätsmanagement Ihres Anwendungsprodukts zu bestimmen und festzustellen, ob Ihre aktuellen Datenbankknoten und Ihr Design die Last Ihrer Anwendungsanforderungen bewältigen können.

Sogar auf einer Community-Edition von ClusterControl kann ich granulare und verfeinerte Ergebnisse zum Zustand meines MariaDB-Clusters sammeln. Siehe unten,

So gehen Sie an die Überwachung Ihres MariaDB-Clusters heran. Eine perfekte Visualisierung ist immer einfacher und schneller zu handhaben. Wenn die Dinge schlecht laufen, können Sie es sich nicht leisten, Ihre Produktivität zu verlieren, und auch die Ausfallzeit kann sich auf Ihr Geschäft auswirken. Obwohl Kostenlos Ihnen nicht den Luxus und Komfort bei der Verwaltung stark frequentierter Datenbanken bietet, sind Alarme, Benachrichtigungen und Datenbankverwaltung in einem Bereich ein Kinderspiel Add-Ons, die ClusterControl leisten kann.

Fazit

MariaDB-Cluster ist nicht so einfach zu überwachen wie die traditionellen asynchronen MySQL/MariaDB-Master-Slave-Setups. Es funktioniert anders und Sie müssen über die richtigen Tools verfügen, um festzustellen, was vor sich geht und was in Ihren Datenbankcluster gelangt. Bereiten Sie Ihre Kapazitätsplanung immer im Voraus vor, bevor Sie Ihren MariaDB-Cluster ohne vorherige Überwachung ausführen. Es ist immer am besten, wenn Ihre Datenbanklast und -aktivität vor einem katastrophalen Ereignis bekannt ist.