Von Matthias Jung auf Donnerstag, 29. Oktober 2020
Kategorie: Data Management

MariaDB SQL Error Log Plugin: „Der größte Fehler ist, wenn man sich keines Fehlers bewusst ist.“ (Peter Tremayne)

Das MariaDB SQL Error Log Plugin kann ein gutes Werkzeug sein, um fehlerhafte Statements von Anwendern zu identifizieren. Häufig kommt es z.B. nach dem Update oder Patchen von Applikationen vor, dass sich Fehler (z.B: syntaktisch inkorrekte SQL-Statements) eingeschlichen haben. Genau an dieser Stelle lohnt es sich, dieses Plugin einmal genauer anzuschauen. 

Der Weise lernt aus den Fehlern anderer… (Konfuzius)

Die Aufgabe des SQL Error Log Plugins ist es nicht, Fehler der Datenbank (z.B. Speicherplatzprobleme) zu protokollieren. Für diese Aufgabe ist das Error-Log zuständig.

Die Aufgabe liegt darin, die Fehler der anderen (der Datenbank-User) zu protokollieren. Um mit der Aufzeichnung zu beginnen, muss das Plugin installiert und aktiviert werden:

Fehler bekennen, hilft Fehler erkennen. (Manfred Heinrich)

Ab diesem Moment werden sämtliche an Anwender (User/Clients) verschickte Fehlercodes in ein separates Logfile (sql_error_log_filename) geschrieben.

Um ein paar Fehler zu „produzieren", legen wir eine Datenbank „prod" an und arbeiten ein wenig mit dieser:

All die oben entstandenen Fehler wurden über das Plugin geloggt. Zusätzlich zum Fehlercode und dem fehlerhaften Statement werden die Uhrzeit und der User (inkl. des Hosts) protokolliert.

Ordnung ist Unordnung höherer Ordnung (Kersten Kämpfer)

Wie bei jedem anderen Logfile sollte ein House-Keeping implementiert werden. Standardmäßig können die Dateien eine Größe von ca. 1 MB (sql_error_log_size_limit) erreichen. Beim Überschreiten dieses Schwellwertes werden sie rotiert. Im Normalfall (default) werden die letzten neun Logdateien archiviert (sql_error_log_rotations).

Bei Bedarf kann eine Rotation vorher erzwungen werden. Dazu wird die etwas irreführende Variable „sql_error_log_rotate" verwendet. Anders als der Name suggeriert, definiert diese nicht, ob Logdateien rotiert werden sollen, sondern durch die Zuweisung des Wertes „TRUE" wird der Vorgang vorzeitig erzwungen.

Über den Parameter „sql_error_log_rate" wird die Anzahl der protokollierten Fehler reduziert. Ein Wert von 100 bedeutet, dass nur jeder 100ste Fehler gespeichert wird. Ein Wert von 0 schaltet das Plugin inaktiv.

Fazit: Lernen, lernen und nochmals lernen... (Wladimir Iljitsch Lenin)

Das SQL Error Log ist eine nützliche Funktion, die dazu beitragen kann, Applikationsprobleme (schneller) zu erkennen. Diese Informationen sollten interessierten Entwicklern und Applikationsverantwortlichen zur Verfügung gestellt werden. Zusätzlich lohnt es, sich Gedanken darüber zu machen, wie eine Überwachung des Logfiles in das Monitoringkonzept integriert werden kann. So kann z.B. das Wachstum des Logs (in Bytes oder Zeilen) in Relation zur Zeit eine Auskunft darüber geben, ob es z.B. nach dem Patchen (oder anderen Aktivitäten auf Seiten der Applikation) zu mehr Fehlern auf der Datenbank kommt. Dies kommt sicher einem stabilen Betrieb der gesamten Anwendung zu Gute.

Kommentare hinterlassen