Avez-vous déjà pensé à réorganiser les journaux de votre serveur MySQL ?

Pour ce qui l’ignorez, MySQL server possède plusieurs  types de journaux et dans cet article nous allons aborder les suivants:

  • le journal général;
  • le journal des erreurs;
  • le journal des requêtes lentes;

Le journal général

Il permet d’enregistrer les connexions, déconnexions, les requêtes, etc donc toute l’activité du serveur.

L’activation de ce journal peut engendrer une charge de travail supplémentaire pour votre serveur, notamment au niveau des I/O.

Ce fichier qui peut grossir rapidement, c’est pour cela qu’il est conseillé de l’activer lorsque l’on désire identifier un problème venant d’une application. Il peut être aussi utiliser lors de la phase d’optimisation d’une application.

Il est possible de l’activer et de le désactiver à chaud.

Par exemple pour l’activer et le désactiver:

SET GLOBAL general_log = 'ON';

SET GLOBAL general_log = 'OFF';

Le chemin de son fichier journal est indiqué par la variable general_log_file. Ce fichier est généralement appelé mysqld.log.

Sur Debian Squeeze avec MySQL 5.1 il est stocké par défaut dans le répertoire /var/run/mysqld .

Il est possible de le modifier par l’intermédiaire de la commande suivante:

SET GLOBAL general_log_file = '/var/log/mysqld.log';

Ces actions peuvent aussi être réalisé dans le fichier my.cnf:

[mysqld]
log=/var/log/mysql/mysqld.log

 

Le journal d’erreur

Le journal des erreurs permet d’identifier et de résoudre les problèmes liés au serveur MySQL. Les erreurs présentes dans ce journal  peuvent être les suivantes:

  • erreurs liées à la réplication;
  • paramètre incorrect dans le fichier de configuration;
  • redémarrage non prévu de MySQL;
  • diverses erreurs;

Il faudra entrer la ligne suivante dans la section [mysqld] du fichier my.cnf pour activer ce journal:

log_error = /var/log/mysql/mysql.error

En règle général, ce fichier journal se nome mysql.error mais vous pouvez le changer.

Journal des requêtes lentes

Ce journal permet de « loger » toutes les requêtes dont la durée d’exécution est supérieure au paramètre long_query_time.

Une requête dont la durée d’exécution est trop longue peut être la conséquence d’un mauvais réglage du serveur, schéma, etc

Grâce au journal des requêtes lentes vous pourrez identifier ces éléments.

Pour activer le journal des requêtes lentes, il faut ajouter les lignes suivantes dans la section [mysqld] du fichier my.cnf:

long_query_time=1O
log-slow-queries=/var/log/mysql/log-slow-queries.log

La valeur de long_query_time est de 10 secondes par défaut mais vous pouvez la modifier avec une précision de l’ordre de la microseconde.

A partir de MySQL 5.1 ce journal peut-être activé à chaud, c’est donc idéal pour un serveur de production.

Pour activer à chaud ce journal il faut entrer la requête suivante:

SET GLOBAL log_slow_queries = 'ON';

En règle général le fichier journal des requêtes lentes est nommé « log-slow-queries.log », mais vous pouvez choisir une autre règle de nommage.

Dans un autre article nous aborderons la lecture de certains de ces journaux.