Wie überwacht man MySQL-Datenbanken?
Betriebstransparenz ist ein Muss in jeder Produktionsumgebung. Es ist entscheidend, Probleme so schnell wie möglich zu erkennen, da Sie sonst in ernsthafte Probleme geraten können, da ein unentdecktes Problem zu ernsthaften Dienstunterbrechungen oder Ausfallzeiten führen kann. MySQL Enterprise Monitor ist eines der ältesten Überwachungsprodukte für MySQL auf dem Markt und ist als Teil eines kommerziellen Unternehmensabonnementvertrags von Oracle erhältlich. In diesem Blogbeitrag werfen wir einen Blick auf MySQL Enterprise Monitor und die Art von Einblicken, die er bietet in MySQL.
Installation
Zunächst einmal ist MySQL Enterprise Monitor Teil der MySQL Enterprise Edition, einem kommerziellen Angebot von Oracle. Es ist in mehreren Paketversionen für verschiedene Betriebssysteme erhältlich. Die Installation unter Windows 10 (dem System, auf dem wir getestet haben) ist ziemlich einfach. MySQL Enterprise Monitor ist konfiguriert und einige gebündelte Dienste werden installiert (MySQL, Tomcat). Das Tool kann über den Browser aufgerufen werden.
Anfangskonfiguration
Zuerst müssen Sie Hosts hinzufügen, die Sie überwachen möchten.
Sie können entweder einzelne Hosts oder einen Stapel davon hinzufügen. Das Dialogfenster sieht genauso aus, außer dass Sie beim Massen-Hinzufügen eine durch Kommas getrennte Liste von Servern übergeben können.
Wir gehen nicht ins Detail, aber kurz gesagt, Sie müssen festlegen, von welchem Host aus die MySQL-Instanzen überwacht werden sollen – typischerweise ist es der Host, auf dem Sie MySQL Enterprise Monitor installiert haben. Sie können auch Agenten auf Ihren MySQL-Instanzen einrichten, in diesem Fall können sie auch Daten für den Host sammeln, nicht nur MySQL-Metriken. Dann müssen Sie definieren, wie Sie die überwachte Instanz erreichen (IP-Adresse/Hostname, Benutzer und Passwort). MySQL Enterprise Monitor erstellt dann zusätzliche Benutzer für Aufgaben wie die Überwachung, für die keine Superuser-Berechtigungen erforderlich sind. Wenn Sie möchten, können Sie auch die SSL-Kommunikation konfigurieren, wenn dies die MySQL-Instanz verwendet, Sie können auch einige Zeitüberschreitungen definieren und ob eine Replikationstopologie automatisch erkannt werden soll oder nicht.
Es ist auch wichtig zu beachten, dass MySQL Enterprise Monitor stark auf Leistungsschemas angewiesen ist – stellen Sie sicher, dass Ihre Datenbanken PS aktiviert haben, sonst werden Sie nicht von einem wesentlichen Teil der Funktionen von MySQL Enterprise Monitor profitieren.
Überwachung
Sobald die überwachten MySQL-Instanzen konfiguriert sind, können Sie beginnen, sich die gesammelten Daten anzusehen. Der Abschnitt Übersicht gibt Ihnen eine kurze Zusammenfassung einiger der wichtigsten Metriken in MySQL. Die Daten werden aggregiert, was es einfacher macht, unerwartete Muster zu finden und dann weiter nachzuforschen, was passiert ist.
Die Registerkarte „Ereignisse“ gibt einen Überblick über verschiedene Probleme oder Ereignisse, die von MySQL Enterprise Monitor und seinen Advisors gemeldet werden. Sie können auf jede der Veranstaltungen klicken und lesen, worum es geht, sowie empfohlene Schritte:
In diesem speziellen Fall scheinen einige Abfragen vollständige Tabellenscans durchzuführen, und es wird empfohlen, dies weiter zu untersuchen, um solche Abfragen zu lokalisieren und zu sehen, ob sie optimiert werden können.
Ein weiteres Beispiel, hier sehen wir, dass der Tabellencache nicht optimal konfiguriert ist. Sie können die Erklärung des Problems, Ratschläge und empfohlene Maßnahmen basierend auf dieser Warnung sehen.
Metriken
Auf dieser Registerkarte sehen wir Daten für mehrere MySQL-Metriken, die hilfreich sind, um den Zustand des Systems zu verstehen.
Zeitreihendiagramme
Die Screenshots oben sind nur ein Beispiel, es gibt viele weitere Diagramme, die Sie sich ansehen können.
Es ist möglich, Filter anzuwenden:Sie können festlegen, welche Diagramme Sie sehen möchten, Sie können auch festlegen, welcher Zeitbereich angezeigt werden soll. Darüber hinaus können Sie einfach einen Teil des Diagramms markieren und entweder hineinzoomen oder den Query Analyzer mit Daten aus diesem bestimmten Zeitpunkt öffnen:
Wir werden diese Funktionalität später durchgehen, aber kurz gesagt, sie ermöglicht es Ihnen, Abfragen zu analysieren, wie sich ihre Leistung im Laufe der Zeit geändert hat, und einige Beispielabfragen.
Tabellenstatistik
Diese Registerkarte gibt uns Einblick in die Tabellenstatistiken:wie der Datenverkehr aussah (Zeilen abgerufen, eingefügt, aktualisiert, gelöscht) und wie die Latenz für alle Zeilenoperationen aussah.
Benutzerstatistik
Auf dieser Registerkarte präsentiert MySQL Enterprise Monitor Daten über Benutzer – ausgeführte Anweisungen, Latenz, Tabellenscans, I/O-Latenz, Verbindungen, Speicherauslastung. Diese Daten sollten einen recht guten Einblick geben, welcher Benutzer für die Belastung der Datenbank verantwortlich ist. Dies kann besonders in Umgebungen mit mehreren Benutzern sehr nützlich sein, in denen es keine einzige Hauptverkehrsquelle gibt.
Datenbankdatei-I/O
Datenbankdatei-I/O erklärt, wie die I/O-Last auf die Dateien in der Datenbank verteilt wird. Gesamtzahl der E/A-Vorgänge, Latenz, wie viele Lese- und Schreibvorgänge für eine bestimmte Datei durchgeführt wurden.
Speichernutzung
Speichernutzung zeigt Speicherstrukturen in MySQL, die dabei helfen, sich ein besseres Bild der Speichernutzung in der Datenbank zu machen. Diese Daten können bei Speicherproblemen nützlich sein – es ist einfach zu verfolgen, wo das Wachstum am größten ist, und bei Bedarf relevante Einstellungen zu reduzieren. Es kann auch erheblich bei der Diagnose potenzieller Speicherlecks helfen.
InnoDB-Pufferpool
Diese Registerkarte im MySQL Enterprise Monitor gibt dem Benutzer Einblick in die Struktur der Pufferpoolnutzung. Welche Tabellen werden zwischengespeichert, wie viele schmutzige Seiten müssen geleert werden?
Abfragen
Für jeden MySQL-Benutzer ist es äußerst wichtig, die Last zu verstehen, die Abfragen verursachen. Welche Abfragen sind am problematischsten? Wie verhalten sie sich zeitlich? Leistung kann auf verschiedene Arten gemessen werden, aber es ist durchaus üblich, dass die vorhersehbare, stabile Leistung wichtiger ist als die Spitzenleistung. Solange die Antwortzeit akzeptabel ist, werden den Benutzern die vorhersehbaren Ergebnisse besser gefallen als eine etwas schnellere Antwort (geringe Latenz), die den Server manchmal erheblich verlangsamen kann. Aus diesem Grund ist es sehr wertvoll zu sehen, wie sich eine Abfrage im Laufe der Zeit verhält, und diejenigen zu lokalisieren, deren Verhalten nicht konsistent ist.
Solche Daten liefert MySQL Enterprise Monitor auf jeden Fall. In der Liste der Abfragen können Sie leicht erkennen, wie sich die Latenz im Laufe der Zeit verändert hat. Flache Linie ist gut, Spikes - nicht so sehr. Dies bedeutet, dass eine solche Anfrage möglicherweise weiter untersucht werden muss. Wenn Sie darauf klicken, gibt Ihnen MySQL Enterprise Monitor weitere Informationen darüber.
Wie Sie sehen können, gibt es einige statistische Daten über den jeweiligen Abfragetyp, Sie können auch sehen, wie sich die Latenzzeit im Laufe der Zeit verändert hat. Unten sehen Sie einige Beispielanweisungen in der Zeit und können ihre Ausführungszeit vergleichen.
Wenn Sie auf eine davon klicken, sehen Sie eine vollständige Abfrage, die in diesem Moment ausgeführt wurde. Dies kann bei Abfragen nützlich sein, bei denen die Leistung abhängig davon, welche Argumente im WHERE-Fall verwendet wurden, unterschiedlich ist (z. B. WHERE some_column ='some value' und Werte in dieser Spalte sind nicht gleichmäßig über die Zeilen verteilt).
Replikation
In einer MySQL-Replikationsumgebung müssen Sie lernen, mit Verzögerungen umzugehen. Wichtig ist, den Überblick zu behalten – wie stark hinken Sklaven? Wie oft kommt es vor? Mit diesen Informationen ist es möglich, das Problem zu lokalisieren und besser zu verstehen, welche Abfragen es verursachen. Dann können Sie versuchen, einige Verbesserungen zu implementieren, wie zum Beispiel Multithread-Replikation, und nachverfolgen, ob die Änderungen die Replikationsleistung verbessert und die Verzögerung auf ein akzeptables Niveau reduziert haben.
Wie unterscheidet sich MySQL Enterprise Monitor von ClusterControl
Wie bereits erwähnt, ist MySQL Enterprise Monitor Teil der kostenpflichtigen MySQL Enterprise Edition. Für alle Benutzer der MySQL Community, MariaDB oder Percona Server ist die MySQL Enterprise Edition nicht verfügbar. ClusterControl bietet Zugang zur Überwachung von MySQL in seiner kostenlosen Community-Version. In Bezug auf die Server- und Abfrageüberwachung gibt es viele Ähnlichkeiten.
ClusterControl gibt Ihnen Zugriff auf MySQL-Metriken, die in der Prometheus-Zeitreihendatenbank gesammelt und gespeichert werden. Sie können zahlreiche Metriken leicht verfolgen, die in ClusterControl zur Verfügung gestellt werden.
ClusterControl wird auch mit einer Liste von Beratern geliefert, die verwendet werden können, um den Zustand und die Leistung der Datenbank zu verfolgen. Mit dem Developer Studio können Sie auch ganz einfach neue Berater erstellen:
Wenn Sie an der Abfrageleistung interessiert sind, stellt ClusterControl einen Abfragemonitor für Sie bereit - ausgeführte Abfragen werden gesammelt und ihre Leistung verglichen, sodass der Benutzer leicht feststellen kann, welche Abfragen die meiste CPU der Datenbank verbrauchen.
Sie können statistische Daten zu den Abfragen sehen - Ausführungen, gesendete und untersuchte Zeilen, Ausführungszeit. Sie können auch den Erklärungsplan für einen bestimmten Abfragetyp überprüfen.
Überwachung der polyglotten Persistenz
Ein großer Unterschied ist die Möglichkeit, alle Hauptvarianten des MySQL-Ökosystems (Oracle MySQL, MariaDB und Percona Server), verschiedene Clustering-Technologien (NDB-Cluster, Gruppenreplikation, asynchrone Replikation und Galera-Cluster), Load Balancer/Proxies (HAProxy, Keepalived, Maxscale, ProxySQL) sowie andere Open-Source-Datenbanken (PostgreSQL und MongoDB).
Automatisierung und Verwaltung
ClusterControl bietet auch Funktionen zum Bereitstellen einzelner Instanzen oder Cluster vor Ort oder in der Cloud (AWS, GCE und Azure) sowie Funktionen wie Backup-Management, automatisches Failover und Wiederherstellung/Reparatur, fortlaufende Upgrades, Cluster-Management für die Replikation oder Cluster-Setups , Skalierung usw.
Das ist alles für heute Leute. Wenn Sie mit MySQL Enterprise Monitor gearbeitet haben und etwas hinzufügen möchten, tun Sie dies bitte im Kommentarbereich.