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

Einführung in das Layout des HTML-Seitenquellcodes_Powernode Java Academy

Einführung in das Layout des HTML-Seitenquellcode...

So konvertieren Sie eine Zeichenfolge in JavaScript in eine Zahl

Inhaltsverzeichnis 1.parseInt(Zeichenfolge, Basis...

Gemeinsame Nutzung verschiedener Methoden zum Deaktivieren des Seitencaches

Heute bin ich beim Entwickeln auf eine Methode ge...

So beheben Sie den PyCurl-Fehler unter Linux

Lösung für „Curl-config konnte nicht ausgeführt w...

Grafisches Tutorial zur Installation und Konfiguration von Win32 MySQL 5.7.27

Das Installationstutorial für MySQL 5.7.27 wird w...

So verwenden Sie den regulären Matching-Selektor für CSS-Attributwerte (Tipps)

Es gibt drei Typen von regulären Matching-Selekto...

js, um einen einfachen Bild-Drag-Effekt zu erzielen

In diesem Artikel wird der spezifische Code von j...

Warum kann mein Tomcat nicht starten?

Inhaltsverzeichnis Phänomen: Portnutzung: Rechtsc...

Vue3.0 verwendet das Plug-In vue-grid-layout, um Drag-Layout zu implementieren

Inhaltsverzeichnis 1. Plugins 2. Zwischenspiel 3....

Natives, benutzerdefiniertes Rechtsklickmenü von js

In diesem Artikelbeispiel wird der spezifische Co...

jQuery implementiert Formularvalidierungsfunktion

Beispiel für die Validierung eines jQuery-Formula...

Tutorial zur Installation von Nginx in einer Linux-Umgebung

Inhaltsverzeichnis 1. Installieren Sie die erford...