Detaillierte Erläuterung zur Verwendung von grep zum Abrufen von MySQL-Fehlerprotokollinformationen

Detaillierte Erläuterung zur Verwendung von grep zum Abrufen von MySQL-Fehlerprotokollinformationen

Um die Wartung von MySQL zu erleichtern, wurde ein Skript geschrieben, das eine Schnittstelle zum Sammeln von Fehlerinformationen bereitstellt. Diese Fehlermeldungen stammen aus dem MySQL-Fehlerprotokoll und der Pfad des Fehlerprotokolls kann durch grep mysql abgerufen werden.

Hier ist der gesamte relevante Code:

#!/usr/bin/env python2.7
#-*- Kodierung: utf-8 -*-
 
"""
Dieses Modul wird verwendet, um abnormale oder fehlerhafte Informationen aus dem täglichen MySQL-Protokoll zu extrahieren. Autor: xiaomo
E-Mail: [email protected]
"""
 
Betriebssystem importieren
System importieren
Importzeichenfolge
von Datum/Uhrzeit-Import *
 
# Der Standardzeichendecoder ist utf-8
neu laden(sys)
sys.setdefaultencoding('utf-8') 
 
COMMON_FLAGS = ["Fehler", "Ausnahme", "Fehler", "Absturz", "Reparatur"]
 
def _contain_flag(aktueller_str):
  für Flag in COMMON_FLAGS:
    wenn Flag in String.lower(cur_str):
      returniere True
  returniere False
 
"""
Holen Sie sich den error_log-Dateipfad der aktuellen MySQL-Instanz"""
def _get_mysql_error_log_path():
  log_path = ''
  grep_infos = os.popen('ps aux | grep mysql | grep "log-error"').lesen()
  wenn Länge(grep_infos) > 1:
    grep_infos = grep_infos.split("log-error=")
  wenn Länge(grep_infos) > 1:
    grep_infos = grep_infos[1].split(' ')
  wenn Länge(grep_infos) > 1:
    log_pfad = grep_infos[0]
  log_path zurückgeben
 
"""
Lesen Sie die Zeile mit den Ausnahme- oder Fehlerinformationen im MySQL-Fehlerprotokoll"""
def _get_error_info(Fehlerprotokoll, Anfangsdatum):
  Fehlerinfos = []
  f = öffnen(Fehlerprotokoll, 'r')
  Zeilen = f.readlines()
  für Zeile in Zeilen:
    Datenarray = Zeile.geteilt(' ')
    wenn len(data_array) > 0 und len(data_array[0]) == 10:
      dt_strs = Datenarray[0].split('-')
      aktuelles_Datum = Datum(int(dt_strs[0]), int(dt_strs[1]), int(dt_strs[2]))
      wenn cur_date >= begin_date und _contain_flag(Zeile):
        error_infos.append(Zeile)
  f.schließen()
  Fehlerinformationen zurückgeben
 
"""
MySQL-Fehlerprotokollinformationen zusammenstellen und zurückgeben"""
def get_mysql_errors(begin_date=date.today()-timedelta(1)):
  versuchen:
    err_log_path = _get_mysql_error_log_path()
    wenn Länge(err_log_path) > 1:
      returniere _get_error_info(err_log_path, begin_date)
  außer Ausnahme,e:
    drucken "[get_mysql_errors]%s"%e  
  zurückkehren []

Interessierte Freunde können es zum Lernen zu Rate ziehen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • Analyse der problematischen „Aborted“-Warnung in MySQL anhand von Fallstudien
  • So verkleinern Sie die Protokolldatei in MYSQL SERVER
  • Zusammenfassung einiger gängiger Protokolle in MySQL
  • Detaillierte Erklärung von MySQL-Transaktionen und MySQL-Protokollen
  • 3 häufige Fehler beim Lesen von MySQL Binlog-Protokollen
  • So aktivieren Sie die Protokollfunktion für langsame Abfragen in MySQL
  • So zeigen Sie das MySQL-Binlog (Binärprotokoll) an
  • Tutorial zur grundlegenden Verwendung des MySQL Slow Query Log
  • Analyse des MySQL-Warnprotokolls zu abgebrochenen Verbindungen

<<:  Implementierung von Redis mit einem Master, zwei Slaves und drei Sentinels basierend auf Docker

>>:  Vue-Anfängerhandbuch: Erstellen des ersten Vue-cli-Scaffolding-Programms

Artikel empfehlen

Implementierungsbeispiel zum Schließen der Browserabmeldung in Vue

Inhaltsverzeichnis 1. beforeunload-Ereignis 2. Er...

So verwenden Sie die Markdown-Editor-Komponente in Vue3

Inhaltsverzeichnis Installieren Komponenten impor...

Führen Sie die Schritte zur Installation der Boost-Bibliothek unter Linux aus

Vorwort Die Boost-Bibliothek ist eine portable, m...

Implementierung des Imports und Exports von Vue-Element-Admin-Projekten

vue-element-admin importiert Komponentenkapselung...

So führen Sie Linux-Shell-Befehle in Docker aus

Um einen Shell-Befehl in Docker auszuführen, müss...

MySQL 5.7.20 Win64 Installations- und Konfigurationsmethode

mysql-5.7.20-winx64.zipInstallationspaket ohne In...

So führen Sie py-Dateien direkt unter Linux aus

1. Erstellen Sie zuerst die Datei (wechseln Sie p...

Detaillierter Prozess der FastAPI-Bereitstellung auf Docker

Docker-Lernen https://www.cnblogs.com/poloyy/p/15...

Detaillierte Erklärung zur Verwendung von CSS3 RGB und RGBA (transparente Farbe)

Ich glaube, jeder Mensch ist sehr sensibel für Fa...

Manuelle Implementierung der Instanceof-Methode in JavaScript

1. Verwendung von instanceof Mit instanceof wird ...

Vue implementiert rekursiv benutzerdefinierte Baumkomponenten

In diesem Artikel wird der spezifische Code der r...