Beschreiben Sie kurz die Replikation der MySQL-Überwachungsgruppe

Beschreiben Sie kurz die Replikation der MySQL-Überwachungsgruppe

Originaltext: https://dev.mysql.com/doc/refman/8.0/en/group-replication-monitoring.html
Übersetzer: kun
Ich übersetze derzeit die offizielle MySQL 8.0-Dokumentation und dieser Artikel ist Abschnitt 18.3 „Überwachung der Gruppenreplikation“.

1. Überwachung der Gruppenreplikation

Vorausgesetzt, MySQL wurde mit aktiviertem Leistungsschema kompiliert, verwenden Sie die Leistungsschematabellen, um die Gruppenreplikation zu überwachen. Die Gruppenreplikation fügt die folgenden Tabellen hinzu:

  • performance_schema.replication_group_member_stats
  • performance_schema.replication_group_members

In den folgenden vorhandenen Replikationstabellen des Performance-Schemas werden auch Informationen zur Gruppenreplikation angezeigt:

  • performance_schema.replication_connection_status zeigt Informationen zur Gruppenreplikation an, z. B. Transaktionen, die von der Gruppe empfangen und in die Applier-Warteschlange (Relay-Protokoll) eingereiht wurden.
  • performance_schema.replication_applier_status zeigt den Status von Kanälen und Threads im Zusammenhang mit der Gruppenreplikation an. Wenn viele verschiedene Worker-Threads Transaktionen ausführen, kann diese Tabelle auch verwendet werden, um zu überwachen, was jeder Worker-Thread tut.

Die vom Plugin „Group Replication“ erstellten Replikationskanäle haben die Namen:

  • group_replication_recovery : Dieser Kanal wird für Replikationsänderungen im Zusammenhang mit der verteilten Wiederherstellungsphase verwendet.
  • group_replication_applier – Dieser Kanal wird für eingehende Änderungen aus der Gruppe verwendet. Und der Kanal, auf den Transaktionen direkt aus der Gruppe angewendet werden.

In den folgenden Abschnitten werden die in jeder Tabelle verfügbaren Informationen beschrieben.

2. Status der Gruppenmitgliedsinstanz

Serverinstanzen in einer Gruppe können sich in verschiedenen Zuständen befinden. Wenn die Server normal kommunizieren, melden alle Server den gleichen Status. Wenn jedoch eine Netzwerkpartitionierung vorliegt oder ein Gruppenmitglied die Gruppe verlässt, können je nach abgefragtem Server unterschiedliche Informationen gemeldet werden. Beachten Sie, dass wenn ein Gruppenmitglied die Gruppe verlassen hat, diese offensichtlich nicht die neuesten Informationen über den Status anderer Server melden kann. Wenn bei einer Netzwerkpartition die Verbindung zu mehr Servern getrennt wird, als die Schlichtungszahl vorsieht, ist eine Zusammenarbeit der Server untereinander nicht mehr möglich. Daher können sie den Status der verschiedenen Servermitglieder nicht kennen. Sie melden daher, dass einige Server nicht erreichbar sind, anstatt deren Status zu erraten.

Serverstatus

Feld beschreiben Gruppensynchronisierung
ONLINE Das Mitglied kann als Gruppenmitglied mit allen Funktionen agieren, was bedeutet, dass Clients eine Verbindung herstellen und mit der Ausführung von Transaktionen beginnen können. Ja
WIEDERHERSTELLUNG Das Mitglied wird ein gültiges Mitglied der Gruppe und befindet sich im Wiederherstellungsprozess. Dabei empfängt es Statusinformationen vom Datenquellenknoten (Datenquellenknoten). NEIN
OFFLINE Das Plugin ist geladen, aber das Mitglied gehört keiner Gruppe an. NEIN
FEHLER Der Status des lokalen Mitglieds. Der Server wechselt in diesen Zustand, wenn während der Wiederherstellungsphase oder beim Anwenden von Änderungen ein Fehler auftritt. NEIN
UNERREICHBAR Wenn der lokale Fehlerdetektor den Verdacht hat, dass ein bestimmter Server nicht erreichbar ist, weil er abgestürzt ist oder die Verbindung versehentlich getrennt wurde, wird der Serverstatus als „UNERREICHBAR“ angezeigt. NEIN

Wichtig
Sobald die Instanz in den Zustand „FEHLER“ wechselt, wird die Option „super_read_only“ auf „EIN“ gesetzt. Um den ERROR-Zustand zu verlassen, müssen Sie die Instanz manuell super_read_only=OFF konfigurieren.

Es ist wichtig zu beachten, dass es sich bei der Gruppenreplikation nicht um eine synchrone Replikation handelt, sie ist jedoch letztendlich synchron. Genauer gesagt werden die Transaktionen allen Gruppenmitgliedern in der gleichen Reihenfolge zugestellt, ihre Ausführung erfolgt jedoch asynchron. Dies bedeutet, dass jedes Mitglied nach der Annahme einer Transaktion die Transaktion in seinem eigenen Tempo durchführt.

3. Tabelle „replication_group_members“

Die Tabelle performance_schema.replication_group_members wird verwendet, um den Status der verschiedenen Serverinstanzen zu überwachen, die Mitglieder einer Gruppe sind. Die Tabelle „replication_group_members“ wird immer dann aktualisiert, wenn sich die Ansicht ändert, beispielsweise wenn sich die Konfiguration der Gruppe dynamisch ändert. Auf dieser Grundlage tauschen Servermitglieder einige ihrer Metadaten aus, um synchron zu bleiben und weiterhin zusammenzuarbeiten. Informationen werden zwischen den Mitgliedern der Gruppenreplikation ausgetauscht, sodass Informationen zu allen Gruppenmitgliedern von jedem Mitglied abgefragt werden können. Mithilfe dieser Tabelle können Sie sich einen umfassenden Überblick über den Status der Replikationsgruppe verschaffen. Dies können Sie beispielsweise durch Folgendes tun:

Wählen Sie * aus Performance_Schema.Replication_Group_MEMMBERS; ------+--------------------------+----------+--------------+----------+-------------------------------- _Replication_Applier | |

Anhand dieses Ergebnisses können wir erkennen, dass die Gruppe aus drei Mitgliedern besteht, sowie aus dem Host und der Portnummer jedes Mitglieds, die der Client zur Verbindung mit dem Mitglied verwendet, und der server_uuid des Mitglieds. Die Spalte MEMBER_STATE zeigt einen der Instanzzustände der Gruppenmitglieder. In diesem Fall zeigt sie, dass alle drei Mitglieder der Gruppe ONLINE sind, und die Spalte MEMBER_ROLE zeigt, dass es zwei Slaves und einen Master gibt. Daher muss die Gruppe im Single-Primary-Modus ausgeführt werden. Die Spalte MEMBER_VERSION kann nützlich sein, wenn Sie eine Gruppe aktualisieren und die Mitglieder der Gruppe unterschiedliche MySQL-Versionen ausführen.

4. Replikationsgruppenmitgliedsstatistiken

Jedes Mitglied der Replikationsgruppe validiert und wendet von der Gruppe bestätigte Transaktionen an. Statistiken zur Validierung und Anwendung sind sehr nützlich, um zu verstehen, wie die Anwendungswarteschlange wächst, wie viele Konflikte ausgelöst werden, wie viele Transaktionen überprüft werden, welche Transaktionen von allen Mitgliedern festgeschrieben wurden usw.

Die Tabelle performance_schema.replication_group_member_stats bietet Informationen auf Gruppenebene im Zusammenhang mit dem Authentifizierungsprozess sowie Statistiken zu den von jedem Mitglied der Replikationsgruppe empfangenen und initiierten Transaktionen. Informationen werden zwischen Gruppenmitgliedsinstanzen ausgetauscht, sodass Informationen zu allen Gruppenmitgliedern von jedem Mitglied abgefragt werden können. Beachten Sie, dass die Aktualisierung der Statistiken zu Remote-Mitgliedern durch den in der Option group_replication_flow_control_period angegebenen Nachrichtenzeitraum gesteuert wird. Diese können sich daher geringfügig von den lokal erfassten Statistiken des abfragenden Mitglieds unterscheiden.

Tabelle replication_group_member_stats

Feld beschreiben
KANALNAME Der Name des Gruppenreplikationskanals.
VIEW_ID Die aktuelle Ansichtskennung für diese Gruppe.
Mitglieds-ID Dieser Wert ist die UUID des Servermitglieds, mit dem wir aktuell verbunden sind. Jedes Mitglied der Gruppe hat einen anderen Wert. Da es für jedes Mitglied einzigartig ist, wird es auch zu einem Schlüsselwort.
Anzahl_Transaktionen_in_Warteschlange Die Anzahl der Transaktionen in der Warteschlange, die auf die Überprüfung zur Konflikterkennung warten. Nach erfolgreicher Konfliktprüfung werden sie zur Anwendung in die Warteschlange gestellt.
Anzahl_überprüfter_Transaktionen Gibt die Anzahl der Transaktionen an, die auf Konflikte überprüft wurden.
Anzahl_erkannter_Konflikte Stellt die Anzahl der Transaktionen dar, die die Konflikterkennungsprüfung nicht bestanden haben.
Anzahl_Transaktionen_Zeilen_validierung Gibt die aktuelle Größe der Konflikterkennungsdatenbank an (die Datenbank, anhand der jede Transaktion validiert wird).
Festgeschriebene Transaktionen aller Mitglieder Zeigt eine Transaktion an, die für alle Mitglieder der aktuellen Ansicht erfolgreich festgeschrieben wurde. Dieser Wert wird in regelmäßigen Abständen aktualisiert.
Letzte konfliktfreie Transaktion Zeigt die letzte Transaktionskennung an, bei der überprüft wurde, dass sie konfliktfrei ist.
Anzahl der Remote-Transaktionen in der Anwendungswarteschlange Die Anzahl der von diesem Mitglied von der Replikationsgruppe empfangenen Transaktionen, die auf ihre Anwendung warten.
Anzahl_Transaktionen_remote_applied Die Anzahl der von diesem Mitglied von der Replikationsgruppe empfangenen und angewendeten Transaktionen.
Anzahl_Transaktionen_lokal_vorgeschlagen Die Anzahl der von diesem Mitglied initiierten und zur Koordinierung an die Replikationsgruppe gesendeten Transaktionen.
Count_transactions_local_rollback Die Anzahl der von diesem Mitglied initiierten Transaktionen, die nach dem Senden an die Replikationsgruppe zurückgesetzt wurden.

Diese Felder sind wichtig, um die Leistung der Mitglieder einer Gruppe zu überwachen. Angenommen, bei einem der Mitglieder einer Gruppe kommt es zu Verzögerungen, und es kann keine Synchronisierung mit dem Rest der Gruppe durchführen. In diesem Fall sehen Sie möglicherweise eine große Anzahl von Transaktionen in der Warteschlange. Auf Grundlage dieser Informationen können Sie entscheiden, Mitglieder aus der Gruppe zu entfernen oder die Transaktionsverarbeitung für andere Mitglieder der Gruppe zu verzögern und so die Anzahl der in die Warteschlange gestellten Transaktionen zu verringern. Diese Informationen können Ihnen auch bei der Entscheidung helfen, wie Sie die Flusssteuerung des Group Replication-Plugins optimieren.

Oben finden Sie eine kurze Beschreibung der Details der MySQL-Überwachungsgruppenreplikation. Weitere Informationen zur MySQL-Überwachungsgruppenreplikation finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des MySQL-Überwachungstools mysql-monitor
  • Detaillierte Erläuterung der Überwachung von Spaltenüberläufen ohne Primärschlüssel in MySQL-Tabellen
  • Verwenden Sie Grafana+Prometheus, um die Leistung des MySQL-Dienstes zu überwachen
  • Detailliertes Tutorial zur Überwachung von Nginx/Tomcat/MySQL mit Zabbix
  • Kenntnisse zur Überwachung der MySQL-Indexnutzung (es lohnt sich, sie zu erwerben!)
  • Detaillierte Erklärung zur Überwachung von MySQL-Anweisungen
  • Detaillierte Erklärung, wie Zabbix den Master-Slave-Status von MySQL überwacht
  • Probleme und Lösungen bei der Nutzung der MySQL-Datenbanküberwachungssoftware Lepus
  • Detaillierte Erläuterung der Leistungsüberwachung des MySQL-Servers mit Prometheus und Grafana
  • Einführung in die Verwendung des MySQL-Echtzeitüberwachungstools orztop
  • Zusammenfassung des eigentlichen Simulationsüberwachungs-MySQL-Dienst-Shell-Skripts
  • Grundlegendes Tutorial zur Installation und Konfiguration von Zabbix zur Überwachung von MySQL

<<:  JQuery implementiert das Ausblenden und Anzeigen von Animationseffekten

>>:  Docker löst das Problem, dass das Terminal kein Chinesisch eingeben kann

Artikel empfehlen

Die CSS-Priorität der Webseite wird für Sie ausführlich erklärt

Bevor wir über die CSS-Priorität sprechen, müssen...

JavaScript, um einen ausgefallenen Karusselleffekt zu erzielen

In diesem Artikel werden zwei Methoden zur Implem...

js implementiert das klassische Minesweeper-Spiel

In diesem Artikelbeispiel wird der spezifische Co...

Implementierung des WeChat-Applet-Nachrichten-Pushs in Nodejs

Auswählen oder Erstellen einer Abonnementnachrich...

Workerman schreibt den Beispielcode des MySQL-Verbindungspools

Zunächst müssen Sie verstehen, warum Sie Verbindu...

Beispielcode zur Implementierung des Bildschubladeneffekts mit CSS3

Wie üblich posten wir zuerst den Bildeffekt: Das ...

Die benutzerdefinierte Vue-Komponente implementiert eine bidirektionale Bindung

Szenario: Die von uns häufig verwendeten Interakt...

Beispielcode für die benutzerdefinierte Scroll-Ansicht des WeChat-Applets

Miniprogramm Benutzerdefinierte Scroll-View-Bildl...

Funktionsweise von SQL-SELECT-Datenbankabfragen

Obwohl wir keine professionellen DBAs sind, könne...

So verwenden Sie die Vue-Cache-Funktion

Inhaltsverzeichnis Cache-Funktion in vue2 Transfo...

Schritte zur Erstellung einer React Fiber-Struktur

Inhaltsverzeichnis React-Fasererstellung 1. Bevor...

Schritte zur Überprüfung der MySQL InnoDB-Row_ID-Grenzwertüberschreitung

Hintergrund Ich habe mit meinen Klassenkameraden ...

So installieren und implementieren Sie Zabbix 5.0 für Nginx

Inhaltsverzeichnis Experimentelle Umgebung Instal...