Fehlerlog anzeigen

Zeigen Sie performance_schema.error_log an, das Fehler, Warnungen und Statusaktualisierungen aus dem Zustandsmonitor, der Speicher-Engine InnoDB, der sekundären RAPID-Engine, dem Replikationskanal und MySQL Server enthält.

Befehlszeilenclient verwenden

Mit einem Befehlszeilenclient wie MySQL-Client oder MySQL Shell können Sie performance_schema.error_log anzeigen.

Diese Aufgabe erfordert Folgendes:
  • Ein ausgeführtes DB-System.
  • Ein DB-System, das über MySQL Shell, MySQL-Client oder einen anderen Befehlszeilenclient Ihrer Wahl verbunden ist.
Führen Sie die folgenden Schritte aus, um performance_schema.error_log über MySQL Shell oder MySQL-Client anzuzeigen:
Hinweis

performance_schema.error_log ist nur im SQL-Ausführungsmodus verfügbar.
  1. Führen Sie den folgenden Befehl aus:
    SELECT * FROM performance_schema.error_log;
  2. (Optional) Um die Logs so zu filtern, dass nur Fehler angezeigt werden, führen Sie den folgenden Befehl aus:
    SELECT * FROM performance_schema.error_log WHERE PRIO='error'; 
  3. (Optional) Um die Logs so zu filtern, dass nur Fehler aus dem Subsystem HEALTH angezeigt werden, führen Sie den folgenden Befehl aus:
    SELECT * FROM performance_schema.error_log WHERE SUBSYSTEM IN
        ('HEALTH');

    Sie können unter folgenden Subsystemen auswählen:

    • HEALTH
    • InnoDB
    • RAPID
    • Repl
    • Server
  4. (Optional) Um das Subsystem HEALTH über ein zweistündiges Zeitintervall zu filtern, führen Sie den folgenden Befehl aus:
    SELECT * FROM performance_schema.error_log WHERE SUBSYSTEM = 'HEALTH' AND 
    LOGGED > DATE_SUB(NOW(),INTERVAL 2 HOUR);
  5. (Optional) Um die Häufigkeit eines bestimmten Fehlers an einem Tag abzurufen, führen Sie den folgenden Befehl aus:
    SELECT HOUR(LOGGED), COUNT(*) FROM error_log WHERE ERROR_CODE = 'MY-010914' AND 
    LOGGED > DATE_SUB(NOW(),INTERVAL 1 DAY) GROUP BY HOUR(LOGGED);
  6. (Optional) Um die Häufigkeit eines bestimmten Fehlers in einer Woche abzurufen, führen Sie den folgenden Befehl aus:
    SELECT DAY(LOGGED), COUNT(*) FROM error_log WHERE ERROR_CODE = 'MY-010914' AND 
    LOGGED > DATE_SUB(NOW(),INTERVAL 1 WEEK) GROUP BY DAY(LOGGED);
Ohne die Verwendung von Filtern erhalten Sie eine ähnliche Antwort wie im folgenden Beispiel. Dabei werden die Uhrzeit des Ereignisses, die Thread-ID, die Priorität, der Fehlercode (falls vorhanden), das Subsystem und ein Text mit einer Beschreibung des Ereignisses angezeigt:
*************************** 1. row ***************************
    LOGGED: 2021-05-10 17:09:31.132868
 THREAD_ID: 0
      PRIO: Note
ERROR_CODE: MY-010096
 SUBSYSTEM: Server
      DATA: Ignoring --secure-file-priv value as server is running with --initialize(-insecure).
*************************** 2. row ***************************
    LOGGED: 2021-05-10 17:09:31.137469
 THREAD_ID: 0
      PRIO: Note
ERROR_CODE: MY-010949
 SUBSYSTEM: Server
      DATA: Basedir set to /usr/.
*************************** 3. row ***************************
    LOGGED: 2021-05-10 17:09:31.141389
 THREAD_ID: 0
      PRIO: System
ERROR_CODE: MY-013169
 SUBSYSTEM: Server
      DATA: /usr/sbin/mysqld (mysqld 8.0.24-u1-cloud) initializing of server in progress as process 12383
*************************** 4. row ***************************
    LOGGED: 2021-05-10 17:09:31.192341
 THREAD_ID: 0
      PRIO: Note
ERROR_CODE: MY-010458
 SUBSYSTEM: Server
      DATA: --initialize specified on an existing data directory.
*************************** 5. row ***************************
..............................
..............................