# MariaDB-Logs – So funktioniert die Logging-Funktion

MariaDB-Logs verfügen über umfassende Funktionen, die Sie bei der Überwachung und Optimierung Ihrer Datenbankinstanzen unterstützen. Wir erklären Ihnen die verschiedenen Log-Typen und wie Sie sie konfigurieren und aktivieren.

## Welche Logs gibt es in MariaDB?

[MariaDB](https://www.ionos.de/digitalguide/server/knowhow/was-ist-mariadb/) stellt **vier zentrale Log-Typen** bereit, die unterschiedliche Aspekte des Datenbankbetriebs protokollieren:

### Error Log

Das Fehlerprotokoll **dokumentiert kritische Ereignisse** wie Start- und Stoppvorgänge des Servers, Abstürze oder andere schwerwiegende Fehler. Es ist standardmäßig aktiviert und hilft bei der Diagnose von Serverproblemen.

### General Query Log

Dieses Log **erfasst jede Verbindung zum Server sowie alle ausgeführten SQL-Befehle**. Es eignet sich daher zur Fehleranalyse und zur Überwachung von Benutzeraktivitäten.

### Binary Log

Ein Binary Log **zeichnet alle Änderungen an der Datenbank auf**, einschließlich Datenmanipulationen und Strukturänderungen. Es ist essenziell für Replikationen und Point-in-Time-Wiederherstellungen.

### Slow Query Log

Dieses Log **listet SQL-Abfragen auf**, die eine bestimmte Ausführungszeit überschreiten. Es dient als wertvolle Hilfe zur Identifizierung und Optimierung von Performance-Engpässen.

## MariaDB-Logs konfigurieren und nutzen: Schritt-für-Schritt-Anleitung:

Im Folgenden zeigen wir Ihnen, wie Sie die vier wichtigsten [Logfiles](https://www.ionos.de/digitalguide/online-marketing/web-analyse/logfiles-die-protokolle-der-computerprozesse/) von MariaDB aktivieren, konfigurieren und auswerten. Dabei gehen wir auf das Fehlerprotokoll, das allgemeine Abfrageprotokoll, das Binary Log und das Slow Query Log und die MariaDB Log Location ein.

### Voraussetzungen

- Ein Server mit einer aktuellen Version von **Ubuntu** oder einer anderen Linux-Distribution
- Ein Benutzerkonto mit [sudo](https://www.ionos.de/digitalguide/server/konfiguration/linux-sudo-befehl/)-Rechten
- **Kein parallel installiertes MySQL**, da sich MySQL und MariaDB in Konfigurationsdateien und Ports überschneiden können
- Basiswissen in SQL

### Schritt 1: Fehlerprotokoll anzeigen und konfigurieren

Zunächst müssen Sie sicherstellen, dass [MariaDB installiert](https://www.ionos.de/digitalguide/hosting/hosting-technik/mysql-mariadb-installieren/) ist. Führen Sie dazu den folgenden Befehl aus:

```bash
sudo apt update
sudo apt install mariadb-server
```

Dieser Befehl aktualisiert zuerst die Paketliste Ihres Systems und installiert danach den MariaDB-Server.

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

```bash
sudo mariadb
```

Sie öffnen damit die interaktive SQL-Konsole als Admin.

Im nächsten Schritt überprüfen Sie, wohin MariaDB-Logs wie Fehlermeldungen schreibt. Das tun Sie mit dieser SQL-Anweisung:

```sql
SHOW VARIABLES LIKE '%log_error%';
```

Ist der Wert für `log_error` leer, dann werden Fehlermeldungen standardmäßig in das zentrale Systemlog (`syslog`) geschrieben.

Um dieses Protokoll einzusehen, nutzen Sie den folgenden Befehl:

```bash
journalctl -u mariadb.service
```

Damit erhalten Sie eine **chronologische Liste der Systemmeldungen**, die vom MariaDB-Dienst generiert wurden. Dies ist hilfreich, wenn Sie Startup-Fehler oder andere kritische Ereignisse untersuchen.

Wenn Sie stattdessen ein **eigenes Error Logfile** verwenden möchten, müssen Sie die Konfigurationsdatei von MariaDB bearbeiten. Öffnen Sie sie mit einem Texteditor wie nano:

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

Suchen Sie den Abschnitt `[mysqld]` und fügen Sie dort folgende Zeile hinzu oder heben Sie deren Auskommentierung auf:

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

Nun sollten Sie sicherstellen, dass das angegebene Verzeichnis existiert und die richtigen Zugriffsrechte hat. Führen Sie dazu diese Befehle aus:

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

Die Befehle erstellen das Verzeichnis 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 Konfigurationsänderungen wirksam werden:

```bash
sudo systemctl restart mariadb
```

Schließlich können Sie das Fehlerprotokoll einsehen:

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

Dort finden Sie Hinweise zu Startzeitpunkten, Warnungen oder Problemen mit Plugins.

### Schritt 2: Allgemeines Abfrageprotokoll aktivieren (General Query Log)

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

```sql
SHOW VARIABLES LIKE '%general%';
```

Dort sehen Sie, ob das General Query Log aktiv ist (`general_log = ON`) und wo es gespeichert wird (`general_log_file`).

Um diese MariaDB-Logs dauerhaft zu aktivieren, bearbeiten Sie erneut die Konfigurationsdatei:

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

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

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

Danach starten Sie den Dienst neu:

```bash
sudo systemctl restart mariadb
```

Um die protokollierten Einträge anzusehen, nutzen Sie:

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

Sie finden dort alle Abfragen und Verbindungen inklusive Zeitstempel. Das hilft, um festzustellen, wann welche Anfragen abgesetzt wurden.

### Schritt 3: Das Binary Log aktivieren

Öffnen Sie zur Konfiguration für das Binary Log die gleiche Konfigurationsdatei wie zuvor:

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

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

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

Die `server_id` ist wichtig für die Replikation (jeder Server braucht eine eindeutige ID). Mit `binlog_format = ROW` wird jede Datenänderung auf Zeilenebene in den MariaDB-Logs protokolliert.

Starten Sie den Server neu:

```bash
sudo systemctl restart mariadb
```

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

```sql
SHOW BINARY LOGS;
```

Dort erscheinen dann die aktiven Binary-Log-Dateien mit Dateinamen und Größenangabe.

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

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

Darin sehen Sie alle Änderungsbefehle chronologisch gelistet.

### Schritt 4: Langsame Abfragen protokollieren (Slow Query Log)

Bearbeiten Sie die Konfigurationsdatei:

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

Fügen Sie Folgendes ein:

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

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

Starten Sie danach den Dienst neu:

```bash
sudo systemctl restart mariadb
```

Überprüfen Sie, ob das Log aktiv ist:

```sql
SHOW VARIABLES LIKE '%slow_query_log%';
```

Führen Sie eine Testabfrage aus, die absichtlich langsam ist:

```sql
SELECT SLEEP(12);
```

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

Schließlich können Sie das Log anzeigen:

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

Sie finden dort Zeitstempel, Abfragezeit und die betroffene SQL-Anweisung.

Weitere Informationen zur [Logfile-Analyse](https://www.ionos.de/digitalguide/online-marketing/web-analyse/logfile-analyse-user-statistiken-dank-server-log/) gibt es in unserem Ratgeber.


This is a markdown version of: [https://www.ionos.de/digitalguide/hosting/hosting-technik/mariadb-logs/](https://www.ionos.de/digitalguide/hosting/hosting-technik/mariadb-logs/) for AI/LLM consumption.