2010-03-08 7 views
81

J'ai suivi les instructions ici: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ mais cela semble seulement définir le seuil.Comment puis-je activer le journal des requêtes lentes de MySQL sans redémarrer MySQL?

Ai-je besoin de faire autre chose comme définir le chemin du fichier?

Selon docs MySQL

 
If no file_name value is given for --log-slow-queries, the default name is 
host_name-slow.log. The server creates the file in the data directory unless 
an absolute path name is given to specify a different directory. 

Courir

SHOW VARIABLES

n'indique pas le chemin du fichier journal et je ne vois pas de fichier journal de requêtes lentes sur mon serveur ...

EDIT

On dirait que je suis en utilisant la version du serveur 5.0.77, donc je devais faire:

SET GLOBAL log_slow_queries = 1;

mais je reçois: erreur 1238 (HY000): Variable 'log_slow_queries' est une variable à lecture seule

Je suppose que je vais besoin de redémarrer le serveur et avoir log_slow_queries dans ma configuration?

+4

Pourquoi ne pas tester que sur une boîte de développement? – Martin

Répondre

5

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 l'obtenir d'avoir accès au fichier, vous pouvez essayer de configurer:
SET GLOBAL slow_query_log = 1;

Sinon, vous pouvez toujours «reload le serveur après avoir modifié le fichier de configuration. Sur linux son habitude /etc/init.d/mysql reload

+0

Je reçois: ERREUR 1193 (HY000): Variable système 'slow_query_log' inconnue – mmattax

+0

Quelle version de MySQL utilisez-vous? –

86

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

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

+7

FLUSH SLOW LOGS est disponible en 5.5! –

+1

a fonctionné parfaitement pour moi version 5.5.40-MariaDB – wired00

7

MySQL Manual - slow-query-log-file

Ce prétend que vous pouvez exécuter ce qui suit pour définir le fichier journal lent (5.1.6 et suivantes):

set global slow_query_log_file = 'path'; 

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

6

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

On dirait que la meilleure façon de le faire est réglé log_slow_time très élevé ainsi "éteindre" le journal de requête lente. Abaissez log_slow_time pour l'activer. Utilisez la même astuce (désactivée) pour log_queries_not_using_indexes.

25

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 

A noter également la placer sous [mysqld] partie du fichier de configuration et redémarrez mysqld.

+2

C'est log_slow_queries plutôt que log-lent-requêtes – naomi

+5

Plus vous devez créer le fichier journal manuellement avant: 'sudo mkdir/var/log/mysql' ' sudo touch/var/log/mysql/slow-query.log' 'sudo chown -R _mysql/var/log/mysql /' – Charles

+0

'log_slow_queries' était obsolète dans MySQL 5.1.29 par' slow-query-log'. [MySQL 5.1 Reference Manual] (http://dev.mysql.com/doc/refman/5.1/fr/server-options.html#option_mysqld_log-slow-queries) contient plus de détails. – Xeoncross

15

Rechercher le journal activé ou non?

SHOW VARIABLES LIKE '%log%'; 

Définissez les journaux: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 
1

Cela devrait fonctionner sur mysql> 5,5

SHOW VARIABLES LIKE '% à long%';

SET GLOBAL long_query_time = 1;

1

Si vous souhaitez activer les journaux d'erreur généraux et erreur requête lente journal

Pour démarrer l'enregistrement dans le tableau au lieu de fichier

mysql> set log_output global = « TABLE »; Pour activer le journal de requête général et lent

mysql> set global general_log = 1; mysql> set global slow_query_log = 1; Nom de la table dans laquelle la journalisation est effectuée par défaut

mysql> select * from mysql.slow_log; mysql> sélectionnez * depuis mysql.general_log; Pour plus de détails, visitez ce lien

http://easysolutionweb.com/technology/mysql-server-logs/