Les requêtes lentes ne se connectent pas

13

J'essaie d'activer la journalisation lente des requêtes sur notre serveur afin d'identifier toutes les requêtes qui pourraient utiliser l'optimisation. Cela semble assez simple, mais mon fichier n'est pas en cours d'écriture. Je ne reçois aucune erreur ou quelque chose du genre, il ne semble tout simplement pas consigner les requêtes lentes. Je me suis souvenu de redémarrer mysql après mes changements de configuration.

J'utilise MySQL Ver 5.1.61. Voici ce que j'ai dans my.cnf:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

le fichier /var/logs/my.slow.log a mysql en tant que propriétaire, également dans l'intérêt du débogage que j'ai donné à tous en lecture / écriture sur le fichier journal.

J'ai le long_query_time mis à 1 dans ce qui précède car je veux juste voir si cela fonctionne. J'ai essayé de le régler plus bas (par exemple 0,3) mais je ne reçois toujours rien de enregistré. Je sais que les requêtes que mon application exécute prennent plus d'une seconde et j'ai également exécuté intentionnellement des requêtes log ( SELECT sleep(10);) dans le terminal pour les tests et le journal est toujours vide.

J'ai regardé à travers les documents, d'après ce que je peux voir, cela devrait fonctionner. Quelqu'un a-t-il des suggestions sur ce que je fais mal? Tout conseil serait apprécié, merci beaucoup!

Edit: Comme demandé dans les commentaires, j'ai exécuté la requête:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`

Le résultat:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF

Évidemment, mes modifications de configuration ne sont pas prises en compte car je pense que ce sont des valeurs par défaut. Je suis tout à fait certain que le fichier my.cnf que je modifie est analysé comme si je mettais une valeur invalide mysql affichera une erreur au redémarrage. Que pourrait-il se passer ici?

Un autre montage:

Après avoir suivi les conseils de @RolandoMySQLDBA et déplacé mes lignes de configuration de requête lente sous [mysqld]mes paramètres, cela semble être en train de sauver. Maintenant, le résultat de la requête variable_value ci-dessus est:

1.0000000
/var/logs/my.slow.log
ON

Cependant, je ne vois toujours pas le fichier my.slow.log en cours d'écriture. Je ne pense pas que ce soit un problème d'autorisations car le fichier appartient à mysql et j'ai ajouté toutes les autorisations pour tous les utilisateurs sur le fichier. Quelqu'un pourrait-il penser à une raison pour laquelle cela ne fonctionnerait pas?

Edit: Résolu! Le chemin d'accès au journal des requêtes lentes était incorrect, il aurait dû être /var/log/my.slow.log au lieu de / var / log * s * / my.slow.log. Merci à tous pour l'aide, j'ai appris allot!

La méthode
la source
1
Veuillez exécuter SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');et publier sa sortie.
RolandoMySQLDBA
1
Si quelqu'un a toujours des problèmes après avoir lu ceci, vérifiez la variable log_output. SET GLOBAL log_output=FILEréparé pour moi.
molholm

Réponses:

21

Je pense avoir obtenu la réponse:

Vous devez mettre ces options sous la [mysqld]section

[mysqld]
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1

et redémarrez mysql

MISE À JOUR 2013-03-05 16:36 EST

Je ne sais pas pourquoi cela se produit toujours, mais essayez ceci:

service mysql stop
rm -f /var/logs/my.slow.log
touch /var/logs/my.slow.log
chown mysql:mysql /var/logs/my.slow.log
service mysql start

puis courez SELECT SLEEP(10);et voyez si elle atterrit/var/logs/my.slow.log

RolandoMySQLDBA
la source
Merci! Ce que vous avez suggéré a aidé, il semble que les paramètres soient enregistrés correctement, mais je ne reçois toujours pas de choses écrites. J'ai modifié ma question pour refléter cela.
TheMethod
Hé, juste curieux, j'utilise un système Debian sous une VM. Le chemin est-il correct dans votre réponse? /var/logs/au lieu de/var/log
Silviu-Marian
Pour information. "touch & chown" sont également nécessaires dans l'environnement CentOS 6.6 mysql 5.1.73.
Fumisky Wells
Je viens de tomber sur un système où ils ont essayé de les intégrer [mysqld_safe], ce qui n'a pas fonctionné. Les mettre sous a [mysql]résolu le problème.
Michael Hampton,