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

Mehrere Möglichkeiten zum Herunterfahren des Hyper-V-Dienstes unter Windows 10

Wenn Sie VMware Workstation zum Öffnen einer virt...

Was Sie über Responsive Design wissen müssen

Responsive Design bedeutet, während des Website-E...

Zusammenfassung neuer Anwendungsbeispiele für Calculated in Vue3

Die Verwendung von „Computed“ in vue3. Da vue3 mi...

Beispiel für das Hinzufügen eines Musikvideos zu einer HTML-Seite

1. Video-Tag Unterstützt die automatische Wiederg...

JavaScript zum dynamischen Laden und Löschen von Tabellen

In diesem Artikel wird der spezifische JavaScript...

JavaScript Canvas implementiert Tic-Tac-Toe-Spiel

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

Zusammenfassung der Grundsätze zum Schreiben von HTML-Seiten für E-Mails

Da HTML-E-Mail keine unabhängige HOST-Seite auf di...

Sollte ich JQuery aufgeben?

Inhaltsverzeichnis Vorwort Was soll verwendet wer...

HTML-Tabellen-Tag-Tutorial (7): Hintergrundfarbattribut BGCOLOR

Die Hintergrundfarbe der Tabelle kann über das At...

Detaillierte Erklärung zur Verwendung von Scoped Slots in Vue.js-Slots

Inhaltsverzeichnis Keine Slots Vue2.x-Steckplätze...