# Logs MariaDB : comment fonctionne la fonction de logging ?

Les logs MariaDB disposent de fonctionnalités complètes qui vous aident à surveiller et optimiser vos instances de base de données. Nous vous expliquons les différents types de logs et comment les configurer et les activer.

## Quels sont les logs disponibles dans MariaDB ?

[MariaDB](https://www.ionos.fr/digitalguide/serveur/know-how/mariadb-cest-quoi/) propose **quatre types de logs principaux** qui enregistrent différents aspects du fonctionnement de la base de données :

### Log d’erreur

Le log d’erreur **documente les événements critiques** tels que les opérations de démarrage et d’arrêt du serveur, les plantages ou d’autres erreurs graves. Il est activé par défaut et aide à diagnostiquer les problèmes du serveur.

### Log de requêtes générales

Ce log **enregistre chaque connexion au serveur ainsi que toutes les commandes SQL exécutées**. Il est donc adapté à l’analyse des erreurs et à la surveillance des activités des utilisateurs.

### Log binaire

Un log binaire **enregistre toutes les modifications de la base de données**, y compris les manipulations de données et les changements de structure. Il est essentiel pour les rélications et les restaurations à un point précis dans le temps.

### Log de requêtes lentes

Ce log **énumère les requêtes SQL** dont le temps d’exécution dépasse une certaine durée. Il constitue une aide précieuse pour identifier et optimiser les goulets d’étranglement de performance.

## Configurer et utiliser les logs MariaDB : guide étape par étape

Dans ce qui suit, nous vous montrons comment activer, configurer et analyser les quatre principaux [fichiers de log](https://www.ionos.fr/digitalguide/web-marketing/analyse-web/les-fichiers-log-lenregistrement-des-processus-informatiques/) (aussi appelés *log files*) de MariaDB. Nous aborderons le log d’erreurs, le log de requêtes générales, le log binaire, le log de requêtes lentes et l’emplacement (*location*) du log MariaDB.

### Prérequis

- Un serveur avec une version récente d’**Ubuntu** ou d’une autre distribution Linux
- Un compte utilisateur avec des droits [sudo](https://www.ionos.fr/digitalguide/serveur/configuration/commande-linux-sudo/)
- **Ne pas avoir MySQL installé en parallèle**, car MySQL et MariaDB peuvent se chevaucher dans les fichiers de configuration et les ports
- Connaissances de base en SQL

### Étape 1 : afficher et configurer le journal des erreurs

Tout d’abord, vous devez vous assurer que [MariaDB est installé](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/install-mysql-mariadb-installer-la-base-de-donnees-relationnelle/). Pour cela, exécutez la commande suivante :

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

Cette commande met d’abord à jour la liste des paquets de votre système puis installe le serveur MariaDB.

Pour vous connecter à la base de données MariaDB, exécutez la commande suivante :

```bash
sudo mariadb
```

Vous accédez ainsi à la console SQL interactive en tant qu’administrateur.

À l’étape suivante, vérifiez où MariaDB écrit les logs tels que les messages d’erreur. Vous pouvez le faire avec cette instruction SQL :

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

Si la valeur de `log_error` est vide, les messages d’erreur sont par défaut écrits dans le journal système central (`syslog`).

Pour consulter ce journal, utilisez la commande suivante :

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

Cela vous donne une **liste chronologique des messages système** générés par le service MariaDB. Ceci est utile lorsque vous examinez des erreurs de démarrage ou d’autres événements critiques.

Si vous souhaitez utiliser à la place un **fichier de log d’erreurs propre**, vous devez modifier le fichier de configuration de MariaDB. Ouvrez-le avec un éditeur de texte comme nano :

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

Recherchez la section `[mysqld]` et ajoutez-y la ligne suivante ou désactivez son commentaire :

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

Vérifiez que le répertoire existe et dispose des bons droits d’accès. Pour ce faire, exécutez ces commandes :

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

Les commandes créent le répertoire et le définissent pour l’utilisateur et le groupe `mysql`, afin que la fonction de logging de MariaDB puisse y écrire.

Redémarrez ensuite le service MariaDB pour que les modifications de configuration prennent effet :

```bash
sudo systemctl restart mariadb
```

Enfin, vous pouvez consulter le fichier de journal des erreurs :

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

Vous y trouverez des informations sur les temps de démarrage, les avertissements ou les problèmes avec les plugins.

### Étape 2 : activer le journal général des requêtes (General Query Log)

Pour vérifier le statut actuel, ouvrez la console SQL et saisissez la commande suivante :

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

Là, vous verrez si le journal général des requêtes est actif (`general_log = ON`) et où il est stocké (`general_log_file`).

Pour activer ces logs MariaDB de manière permanente, modifiez à nouveau le fichier de configuration :

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

Ajoutez les lignes suivantes dans la section `[mysqld]` :

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

Ensuite, redémarrez le service :

```bash
sudo systemctl restart mariadb
```

Pour voir les entrées enregistrées, utilisez :

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

Vous y trouverez toutes les requêtes et connexions, y compris les horodatages. Cela aide à déterminer quand chaque demande a été émise.

### Étape 3 : activer le journal binaire

Pour configurer le journal binaire, ouvrez le même fichier de configuration qu’auparavant :

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

Ajoutez les paramètres suivants dans la section `[mysqld]` :

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

Le `server_id` est important pour la réplication (chaque serveur doit avoir un ID unique). Avec `binlog_format = ROW`, chaque modification de données au niveau des lignes est enregistrée dans les **logs MariaDB**.

Redémarrez le serveur :

```bash
sudo systemctl restart mariadb
```

Pour vérifier si le journal binaire est actif, saisissez dans la console SQL :

```sql
SHOW BINARY LOGS;
```

Les logs binaires actifs apparaissent alors avec leur nom et leur taille.

Pour lire le contenu d’un fichier, utilisez la commande suivante :

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

Vous y verrez toutes les commandes de modification listées chronologiquement.

### Étape 4 : consigner les requêtes lentes (Slow Query Log)

Modifiez le fichier de configuration :

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

Insérez ce qui suit :

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

Cela signifie que `long_query_time = 10` enregistre toutes les requêtes dont le temps d’exécution dépasse dix secondes.

Redémarrez ensuite le service :

```bash
sudo systemctl restart mariadb
```

Vérifiez si le log est actif :

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

Effectuez une requête de test délibérément lente :

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

Cette instruction force le serveur à attendre douze secondes. Elle devrait donc apparaître dans le Slow Query Log.

Enfin, vous pouvez afficher le log :

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

Vous y trouverez des horodatages, le temps de requête et l’instruction SQL concernée.

Pour plus d’informations sur l’[analyse des fichiers journaux](https://www.ionos.fr/digitalguide/web-marketing/analyse-web/analyse-des-fichiers-log-et-statistiques-utilisateurs/), veuillez consulter notre guide.


This is a markdown version of: [https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/logs-mariadb/](https://www.ionos.fr/digitalguide/hebergement/aspects-techniques/logs-mariadb/) for AI/LLM consumption.