Enregistrer toutes les requêtes SQL

Bonjour,

MySQL

Si pour une raison ou une autre vous avez besoin d’enregistrer les requêtes SQL qui transitent, pendant un temps assez court, sur le serveur MySQL sans avoir la main sur ces mêmes requêtes ( pour les afficher dans un fichier de log par exemple),voici une méthode simple et rapide qui permet d’enregistrer toutes les requêtes dans une tables.

Pour enregistrer les logs dans un fichier
testé sur mariadb 5.5

Dans le fichier my.cnf, rajouté les paramètres suivant dans la section [mysql]:

general-log
general-log-file=queries.log
log-output=file

Redémarrer MySQL. Toutes les requêtes seront enregistrées par défaut dans :

/var/lib/mysql/queries.log

Pour enregistrer les logs dans une table
testé sur mysql 5.5

Mettre la variable log_output à ‘TABLE’ :

mysql> SET GLOBAL log_output = 'TABLE';

Les deux autres valeur possibles sont FILE et NONE. Il est possible d’enregistrer à la fois dans la table et dans un fichier. Les requêtes seront enregistrées dans la table ‘general_log’ de la base de données mysql. Dans le cas de FILE il faut paramétrer également la variable general_log_file. (par défaut positionnée sur  host_name.log).

Ce paramètre, une fois changé, n’active pas les logs, il faut le faire à l’aide d’une autre variable :

 mysql> SET GLOBAL general_log = 'ON';

Il est maintenant possible de récupérer les requêtes dans la table mysql.general_log .

Concernant l’enregistrement des requêtes SQL, il y a une option qu’il est fortement conseillé d’utilisé, si ce n’est pas déjà le cas, et qui permet d’enregistrer toutes les requêtes « lentes » ( slow query ) grâce à l’option log slow query (ici) .

Note : Attention de ne pas oublier de désactiver cette fonction ou même de ne pas l’activer sur un serveur de base de données hébergeant une application web envoyant énormément de requêtes.

En espérant vous avoir aidé 🙂

PS: Si le contenu de cet article vous semble erroné ou pas assez précis, merci de me le signaler dans les commentaires et ou par mail à contact@etiennegautier.net

Tags: ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.