MariaDB-Logs verfügen über um­fas­sen­de Funk­tio­nen, die Sie bei der Über­wa­chung und Op­ti­mie­rung Ihrer Da­ten­bank­in­stan­zen un­ter­stüt­zen. Wir erklären Ihnen die ver­schie­de­nen Log-Typen und wie Sie sie kon­fi­gu­rie­ren und ak­ti­vie­ren.

Welche Logs gibt es in MariaDB?

MariaDB stellt vier zentrale Log-Typen bereit, die un­ter­schied­li­che Aspekte des Da­ten­bank­be­triebs pro­to­kol­lie­ren:

Error Log

Das Feh­ler­pro­to­koll do­ku­men­tiert kritische Er­eig­nis­se wie Start- und Stopp­vor­gän­ge des Servers, Abstürze oder andere schwer­wie­gen­de Fehler. Es ist stan­dard­mä­ßig aktiviert und hilft bei der Diagnose von Ser­ver­pro­ble­men.

General Query Log

Dieses Log erfasst jede Ver­bin­dung zum Server sowie alle aus­ge­führ­ten SQL-Befehle. Es eignet sich daher zur Feh­ler­ana­ly­se und zur Über­wa­chung von Be­nut­zer­ak­ti­vi­tä­ten.

Binary Log

Ein Binary Log zeichnet alle Än­de­run­gen an der Datenbank auf, ein­schließ­lich Da­ten­ma­ni­pu­la­tio­nen und Struk­tur­än­de­run­gen. Es ist es­sen­zi­ell für Re­pli­ka­tio­nen und Point-in-Time-Wie­der­her­stel­lun­gen.

Slow Query Log

Dieses Log listet SQL-Abfragen auf, die eine bestimmte Aus­füh­rungs­zeit über­schrei­ten. Es dient als wertvolle Hilfe zur Iden­ti­fi­zie­rung und Op­ti­mie­rung von Per­for­mance-Engpässen.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support

MariaDB-Logs kon­fi­gu­rie­ren und nutzen: Schritt-für-Schritt-Anleitung:

Im Folgenden zeigen wir Ihnen, wie Sie die vier wich­tigs­ten Logfiles von MariaDB ak­ti­vie­ren, kon­fi­gu­rie­ren und auswerten. Dabei gehen wir auf das Feh­ler­pro­to­koll, das all­ge­mei­ne Ab­fra­ge­pro­to­koll, das Binary Log und das Slow Query Log und die MariaDB Log Location ein.

Vor­aus­set­zun­gen

  • Ein Server mit einer aktuellen Version von Ubuntu oder einer anderen Linux-Dis­tri­bu­ti­on
  • Ein Be­nut­zer­kon­to mit sudo-Rechten
  • Kein parallel in­stal­lier­tes MySQL, da sich MySQL und MariaDB in Kon­fi­gu­ra­ti­ons­da­tei­en und Ports über­schnei­den können
  • Ba­sis­wis­sen in SQL

Schritt 1: Feh­ler­pro­to­koll anzeigen und kon­fi­gu­rie­ren

Zunächst müssen Sie si­cher­stel­len, dass MariaDB in­stal­liert ist. Führen Sie dazu den folgenden Befehl aus:

sudo apt update
sudo apt install mariadb-server
bash

Dieser Befehl ak­tua­li­siert zuerst die Pa­ket­lis­te Ihres Systems und in­stal­liert danach den MariaDB-Server.

Um sich mit der MariaDB-Datenbank zu verbinden, führen Sie das folgende Kommando aus:

sudo mariadb
bash

Sie öffnen damit die in­ter­ak­ti­ve SQL-Konsole als Admin.

Im nächsten Schritt über­prü­fen Sie, wohin MariaDB-Logs wie Feh­ler­mel­dun­gen schreibt. Das tun Sie mit dieser SQL-Anweisung:

SHOW VARIABLES LIKE '%log_error%';
sql

Ist der Wert für log_error leer, dann werden Feh­ler­mel­dun­gen stan­dard­mä­ßig in das zentrale Systemlog (syslog) ge­schrie­ben.

Um dieses Protokoll ein­zu­se­hen, nutzen Sie den folgenden Befehl:

journalctl -u mariadb.service
bash

Damit erhalten Sie eine chro­no­lo­gi­sche Liste der Sys­tem­mel­dun­gen, die vom MariaDB-Dienst generiert wurden. Dies ist hilfreich, wenn Sie Startup-Fehler oder andere kritische Er­eig­nis­se un­ter­su­chen.

Wenn Sie statt­des­sen ein eigenes Error Logfile verwenden möchten, müssen Sie die Kon­fi­gu­ra­ti­ons­da­tei von MariaDB be­ar­bei­ten. Öffnen Sie sie mit einem Text­edi­tor wie nano:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bash

Suchen Sie den Abschnitt [mysqld] und fügen Sie dort folgende Zeile hinzu oder heben Sie deren Aus­kom­men­tie­rung auf:

log_error = /var/log/mariadb/error.log
txt

Nun sollten Sie si­cher­stel­len, dass das an­ge­ge­be­ne Ver­zeich­nis existiert und die richtigen Zu­griffs­rech­te hat. Führen Sie dazu diese Befehle aus:

sudo mkdir /var/log/mariadb
sudo chown mysql:mysql /var/log/mariadb
bash

Die Befehle erstellen das Ver­zeich­nis und setzen es auf den Benutzer und die Gruppe mysql, damit die MariaDB-Logging-Funktion dort schreiben darf.

Starten Sie danach den MariaDB-Dienst neu, damit die Kon­fi­gu­ra­ti­ons­än­de­run­gen wirksam werden:

sudo systemctl restart mariadb
bash

Schließ­lich können Sie das Feh­ler­pro­to­koll einsehen:

sudo cat /var/log/mariadb/error.log
bash

Dort finden Sie Hinweise zu Start­zeit­punk­ten, Warnungen oder Problemen mit Plugins.

Schritt 2: All­ge­mei­nes Ab­fra­ge­pro­to­koll ak­ti­vie­ren (General Query Log)

Um den aktuellen Status zu über­prü­fen, rufen Sie die SQL-Konsole auf und geben Sie folgenden Befehl ein:

SHOW VARIABLES LIKE '%general%';
sql

Dort sehen Sie, ob das General Query Log aktiv ist (general_log = ON) und wo es ge­spei­chert wird (general_log_file).

Um diese MariaDB-Logs dauerhaft zu ak­ti­vie­ren, be­ar­bei­ten Sie erneut die Kon­fi­gu­ra­ti­ons­da­tei:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bash

Fügen Sie folgende Zeilen in den Abschnitt [mysqld] ein:

general_log = 1
general_log_file = /var/log/mariadb/general-query.log
ini

Danach starten Sie den Dienst neu:

sudo systemctl restart mariadb
bash

Um die pro­to­kol­lier­ten Einträge anzusehen, nutzen Sie:

sudo cat /var/log/mariadb/general-query.log
bash

Sie finden dort alle Abfragen und Ver­bin­dun­gen inklusive Zeit­stem­pel. Das hilft, um fest­zu­stel­len, wann welche Anfragen abgesetzt wurden.

Schritt 3: Das Binary Log ak­ti­vie­ren

Öffnen Sie zur Kon­fi­gu­ra­ti­on für das Binary Log die gleiche Kon­fi­gu­ra­ti­ons­da­tei wie zuvor:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bash

Fügen Sie folgende Parameter im Abschnitt [mysqld] hinzu:

log_bin = /var/log/mariadb/binary.log
server_id = 1
binlog_format = ROW
txt

Die server_id ist wichtig für die Re­pli­ka­ti­on (jeder Server braucht eine ein­deu­ti­ge ID). Mit binlog_format = ROW wird jede Da­ten­än­de­rung auf Zei­len­ebe­ne in den MariaDB-Logs pro­to­kol­liert.

Starten Sie den Server neu:

sudo systemctl restart mariadb
bash

Um zu prüfen, ob das Binärlog aktiv ist, geben Sie in der SQL-Konsole ein:

SHOW BINARY LOGS;
sql

Dort er­schei­nen dann die aktiven Binary-Log-Dateien mit Da­tei­na­men und Grö­ßen­an­ga­be.

Zum Auslesen des Inhalts einer Datei setzen Sie folgendes Kommando ein:

sudo mysqlbinlog /var/log/mariadb/binary.000001
bash

Darin sehen Sie alle Än­de­rungs­be­feh­le chro­no­lo­gisch gelistet.

Schritt 4: Langsame Abfragen pro­to­kol­lie­ren (Slow Query Log)

Be­ar­bei­ten Sie die Kon­fi­gu­ra­ti­ons­da­tei:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
bash

Fügen Sie Folgendes ein:

slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow-query.log
long_query_time = 10
txt

Dabei bedeutet long_query_time = 10, dass alle Abfragen, die länger als zehn Sekunden dauern, geloggt werden.

Starten Sie danach den Dienst neu:

sudo systemctl restart mariadb
bash

Über­prü­fen Sie, ob das Log aktiv ist:

SHOW VARIABLES LIKE '%slow_query_log%';
sql

Führen Sie eine Test­ab­fra­ge aus, die ab­sicht­lich langsam ist:

SELECT SLEEP(12);
sql

Diese Anweisung zwingt den Server, zwölf Sekunden zu warten. Damit sollte sie im Slow Query Log er­schei­nen.

Schließ­lich können Sie das Log anzeigen:

sudo cat /var/log/mariadb/slow-query.log
bash

Sie finden dort Zeit­stem­pel, Ab­fra­ge­zeit und die be­trof­fe­ne SQL-Anweisung.

Weitere In­for­ma­tio­nen zur Logfile-Analyse gibt es in unserem Ratgeber.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher
Zum Hauptmenü