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

So erstellen Sie eine TAR-Datei von WSL über Docker

Ich habe kürzlich mit der Remote-Entwicklungsfunk...

Detaillierte Erklärung der schmerzlosen Token-Aktualisierungsmethode von Uniapp

Wenn das Front-End die Schnittstelle anfordert, w...

Warum der Befehl „explain“ MySQL-Daten ändern kann

Wenn Sie jemand fragen würde, ob die Ausführung v...

So installieren Sie Nginx in CentOS7

Installieren Sie die erforderliche Umgebung 1. gc...

Detaillierte Erläuterung der grundlegenden Datentypen in mysql8.0.19

MySQL-Basisdatentypen Übersicht über gängige MySQ...

js zur Realisierung eines Web-Musikplayers

Dieser Artikel enthält einfachen HTML- und Musikp...

Die Auswirkungen des Limits auf die Abfrageleistung in MySQL

I. Einleitung Lassen Sie mich zunächst die MySQL-...

So ändern Sie die inländische Quelle von Ubuntu 20.04 apt

UPD 2020.2.26 Derzeit ist Ubuntu 20.04 LTS noch n...

Implementierung einer geplanten Sicherung in Mysql5.7

1. Suchen Sie mysqldump.exe im MySQL-Installation...

Das WeChat-Applet realisiert einen mehrzeiligen Text-Scroll-Effekt

In diesem Artikelbeispiel wird der spezifische Co...