89 votes

Comment puis-je activer le journal de requête lent de MySQL sans redémarrer MySQL?

J'ai suivi les instructions ici: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ mais qui semble être la seule à fixer le seuil.

Ai-je besoin de faire autre chose comme définir le chemin d'accès?

Selon MySQL docs

Si aucun nom de fichier de la valeur est donnée pour --log-slow-queries, le nom par défaut est 
host_name-lent.journal. Le serveur crée le fichier dans le répertoire de données, à moins que 
un chemin d'accès absolu est donné pour spécifier un autre répertoire. 

L'exécution de

AFFICHER LES VARIABLES

ne pas indiquer tout le chemin du fichier journal et je ne vois pas de slow query log fichier sur mon serveur...

MODIFIER

On dirait que je suis en utilisant la version du serveur 5.0.77, j'ai donc besoin de le faire:

SET GLOBAL log_slow_queries = 1;

mais j'obtiens: ERREUR 1238 (HY000): la Variable 'log_slow_queries" est en lecture seule variable

Je suppose que je vais avoir besoin de redémarrer le serveur et d'avoir log_slow_queries mis dans ma config?

96voto

Ian Gregory Points 2257

Essayez SET GLOBAL slow_query_log = 'ON'; et peut-être FLUSH LOGS;

Cela suppose que vous utilisez MySQL 5.1 ou une version ultérieure. Si vous utilisez une version antérieure, vous devrez redémarrer le serveur. Ceci est documenté dans le manuel MySQL . Vous pouvez configurer le journal dans le fichier de configuration ou sur la ligne de commande.

28voto

Nitin Points 147

Pour les requêtes lentes sur la version <5.1, la configuration suivante a fonctionné pour moi:

 log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES
 

Notez également de le placer sous [mysqld] du fichier de configuration et de redémarrer mysqld .

7voto

Martin Points 3785

Manuel MySQL - Fichier journal lent

Cela signifie que vous pouvez exécuter ce qui suit pour définir le fichier de journal lent (à partir de 5.1.6):

 set global slow_query_log_file = 'path';
 

La variable slow_query_log contrôle simplement si elle est activée ou non.

6voto

Jonathan Points 868

Je pense que le problème est de s'assurer que le serveur MySQL a les droits sur le fichier et peut le modifier.

Si vous pouvez le faire accéder au fichier, vous pouvez essayer de définir:
SET GLOBAL slow_query_log = 1;

Sinon, vous pouvez toujours «recharger» le serveur après avoir modifié le fichier de configuration. Sur Linux, c'est habituellement /etc/init.d/mysql reload

6voto

mikeytown2 Points 778

Ces travaux

 SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;
 

Cassé sur ma configuration 5.1.42

 SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;
 

http://bugs.mysql.com/bug.php?id=32565

Il semble que la meilleure façon de procéder consiste à définir log_slow_time sur une valeur très élevée, ce qui permet de "désactiver" le journal de requête lent. Abaissez log_slow_time pour l'activer. Utilisez la même astuce (définie sur OFF) pour log_queries_not_using_indexes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X