Comment activer la journalisation des requêtes MySQL/MariaDB
Ce guide court et facile à suivre explique comment activer la journalisation des requêtes MySQL/MariaDB et enregistrer les requêtes dans un fichier.
Lorsqu'ils utilisent une base de données, les développeurs souhaitent souvent savoir ce qui se passe en coulisses, que ce soit pour le dépannage, l'optimisation des performances ou par pure curiosité.
Les journaux de requêtes générales restent l'une des sources d'informations d'audit et de diagnostic les plus populaires dans les bases de données MySQL/MariaDB. Une fois la journalisation activée, le serveur de base de données écrira des informations dans le fichier journal lorsque les clients se connectent ou se déconnectent, et il enregistrera chaque instruction SQL.
Cependant, gardez à l'esprit que l'activation du journal général des requêtes affecte les performances de MySQL/MariaDB. Cela réduira le débit d'environ 13 % et augmentera le temps de réponse du serveur MySQL/MariaDB d'environ 17 %.
Alors sans plus tarder, commençons car le processus est assez simple.
Activer la journalisation générale des requêtes MySQL/MariaDB
Dans MySQL/MariaDB, le journal général des requêtes est désactivé par défaut.
1. Entrez dans l'outil de ligne de commande du serveur MySQL/MariaDB en tant que root :
mysql -u root -p
2. Définissez le chemin du fichier journal général sur /var/logs/mysql/general-query.log
en exécutant la requête ci-dessous.
SET GLOBAL general_log_file='/var/log/mysql/general-query.log';
Le journal des requêtes générales est écrit dans le même répertoire de données qui contient les sous-répertoires de la base de données (généralement /var/lib/mysql
), et le nom du fichier journal est par défaut le nom d'hôte. Cependant, comme vous pouvez le constater, cela peut être modifié.
3. Activez le journal général du serveur :
SET GLOBAL general_log = 1;
Vérifions à nouveau l'état du journal des requêtes générales MySQL/MariaDB :
SHOW VARIABLES LIKE "general_log%";
C'est ça. Vous pouvez faire quelque chose de similaire à sudo tail -f
sur le fichier general-query.log
à partir de la ligne de commande et garder un œil sur les choses.
Connexe : Les commandes Head et Tail sous Linux expliquées avec des exemples
Une fois votre inspection effectuée, vous pouvez désactiver la journalisation des requêtes MySQL/MariaDB comme suit :
SET GLOBAL general_log = 0;
Il n’est certainement pas souhaitable d’avoir activé la journalisation sur un serveur de production. Alors soyez prudent avec cela ; le fichier journal peut devenir rapidement volumineux.
Supposons que vous ne souhaitiez pas exécuter de requêtes directement. Dans ce cas, vous pouvez toujours activer la journalisation des requêtes MySQL/MariaDB en modifiant directement le fichier de configuration MySQL/MariaDB, mais gardez à l'esprit que cette approche nécessite un redémarrage du serveur de base de données.
Conclusion
Lorsque vous soupçonnez une erreur chez un client et que vous souhaitez savoir exactement ce que le client a envoyé à la base de données, le journal général des requêtes MySQL/MariaDB peut être utile.
Ainsi, si vous rencontrez un problème de base de données, une façon de le résoudre consiste à activer la journalisation des requêtes et à observer ce qui se passe.
Vous pouvez en savoir plus sur l'activation du journal général des requêtes MySQL/MariaDB ici et ici.