In einer MySQL-Quellreplik-Hochverfügbarkeitskonfiguration (HA) ist es wichtig, den Zustand der Quell- und Replikatserver kontinuierlich zu überwachen, damit Sie potenzielle Probleme erkennen und Korrekturmaßnahmen ergreifen können . In diesem Blogbeitrag erläutern wir einige grundlegende Zustandsprüfungen, die Sie an Ihren MySQL-Quell- und Replikatknoten durchführen können, um sicherzustellen, dass Ihr Setup fehlerfrei ist. Das Überwachungsprogramm oder -skript muss das Hochverfügbarkeits-Framework benachrichtigen, falls eine der Zustandsprüfungen fehlschlägt, damit das Hochverfügbarkeits-Framework Korrekturmaßnahmen ergreifen kann, um die Dienstverfügbarkeit sicherzustellen.
Zustandsprüfungen des MySQL-Quellservers
Wir empfehlen, dass Ihr MySQL-Quellüberwachungsprogramm oder Ihre Skripte in regelmäßigen Abständen ausgeführt werden. Angenommen, das Überwachungsskript läuft auf demselben Server wie Ihr MySQL-Server, können Sie Folgendes überprüfen:
-
Stellen Sie sicher, dass der MySQL-Dienst ausgeführt wird
Dies kann mit einem einfachen Befehl wie:
erfolgen> pgrep mysqld
ODER
>service mysqld status
-
Stellen Sie sicher, dass Sie sich mit MySQL verbinden und eine einfache Abfrage durchführen können
Wir empfahlen ein kurzes Zeitlimit für diese Befehle, damit Sie schnell erkennen können, ob MySQL nicht reagiert. Dies kann durch einen Aufruf wie:
erreicht werden/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e 'select * from mysql.test’
Überprüfen Sie unbedingt den Exit-Wert des obigen Befehls:
Ausgangswert=0 ⇒ Erfolg
Ausgangswert=1 ⇒ Fehler
Exit-value=124 ⇒ Timeout
Wenn beim Befehl eine Zeitüberschreitung auftritt, bedeutet dies, dass der MySQL-Dienst nicht ausreichend reagiert. Wir empfehlen Ihnen, es nach einiger Zeit erneut zu versuchen, um falsch negative Ergebnisse zu vermeiden. Wenn der Exit-Code auf einen Fehler hinweist, teilt uns der Rückgabecode von MySQL die Fehlerursache mit. Ein Beispiel für einen Fehler ist der Fehler „Zu viele Verbindungen“ von MySQL, der auftritt, wenn die Anzahl der Verbindungen zum Server Ihren Konfigurationswert „max_connections“ überschreitet.
-
Stellen Sie sicher, dass die MySQL-Quelle im Lese-/Schreibmodus ausgeführt wird
Sie können den folgenden Befehl verwenden, um sicherzustellen, dass die MySQL-Quelle im Lese-/Schreibmodus ausgeführt wird:
/usr/bin/timeout 5 mysql -u testuser -ptestpswd -e "SELECT @@global.read_only"
Es wird erwartet, dass die Quelle immer im Lese-/Schreibmodus ausgeführt wird, und daher sollte der Wert von read_only „OFF“ sein.
Es ist auch möglich, diesen Schritt mit Schritt 2 zu verbinden, und anstatt die Testabfrage „select * from mysql.test“ durchzuführen, können wir einfach die Abfrage durchführen, um read_only zu erhalten Wert.
MySQL Replica Server Health Checks
Sie können die Überwachung für Ihre MySQL-Replikate im Vergleich zur Quelle mit geringerer Häufigkeit ausführen, da sie keine Datenschreibvorgänge verarbeiten. Die ersten drei Schritte für Ihre Replikat-Zustandsprüfung können mit denen der Quelle identisch sein, außer dass wir sicherstellen müssen, dass das Replikat im schreibgeschützten Modus ausgeführt wird – der Wert der Variable read_only sollte in Schritt 3 "ON" sein .
Außerdem können wir weitere Überprüfungen des Replikats durchführen, um sicherzustellen, dass sein Replikationsstatus fehlerfrei ist, wie zum Beispiel:
Das Replikat ist so konfiguriert, dass es von der richtigen Quelle repliziert wird.
Die Verbindung des Replikats zur Quelle ist fehlerfrei.
Das Replikat kann die empfangenen Quellereignisse anwenden.
Es ist möglich, alle oben genannten Punkte mit dem Befehl „Replikatstatus anzeigen“ zu überprüfen. Zum Beispiel:
mysql> show replica status \G; *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 172.31.17.43 Source_User: repl_user Source_Port: 3306 Connect_Retry: 10 Source_Log_File: mysql-bin.000001 Read_Source_Log_Pos: 7510 Relay_Log_File: relay-log.000006 Relay_Log_Pos: 414 Relay_Source_Log_File: mysql-bin.000001 Replica_IO_Running: Yes Replica_SQL_Running: Yes ******************Truncated*********************************
Der Wert Source_Host gibt an, dass der Quellserver für die Replikation konfiguriert ist.
Für den Replica_IO_Running-Wert gibt „Yes“ an, dass das Replikat mit der Quelle verbunden ist und den Replikationsdatenstrom empfängt.
Für den Wert „Replica_SQL_Running“ gibt „Yes“ an, dass der Applikator des Replikats ausgeführt wird und alle von der Quelle empfangenen Ereignisse anwenden kann.
In diesem Blogbeitrag haben wir einige einfache Überprüfungen besprochen, mit denen Sie erkennen können, ob es grundlegende Probleme in Ihren MySQL-Quell- und -Replikatservern gibt. Im Allgemeinen ist der Fehlererkennungsmechanismus in einem Hochverfügbarkeits-Setup ein komplexes Thema und erfordert ein robustes Hochverfügbarkeits-Framework, durch das die Zustandsprüfungsüberwachung implementiert werden sollte. Weitere Informationen zu den Details unseres Hochverfügbarkeits-Frameworks finden Sie in unserem Blogbeitrag MySQL High Availability Framework Explained – Part I:Introduction.