web-dev-qa-db-fra.com

Les requêtes lentes ne se connectent pas

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 enregistrer les requêtes lentes. Je me suis souvenu de redémarrer mysql après les changements de ma 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 n'ai toujours rien 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 de journal (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 semblent être en train de sauvegarder. 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 du 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!

13
TheMethod

Je pense avoir obtenu la réponse:

Vous devez placer ces options dans la section [mysqld]

[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 exécutez SELECT SLEEP(10); et voyez s'il atterrit dans /var/logs/my.slow.log

21
RolandoMySQLDBA