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 source
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.SET GLOBAL log_output=FILE
réparé pour moi.Réponses:
Je pense avoir obtenu la réponse:
Vous devez mettre ces options sous la
[mysqld]
sectionet redémarrez mysql
MISE À JOUR 2013-03-05 16:36 EST
Je ne sais pas pourquoi cela se produit toujours, mais essayez ceci:
puis courez
SELECT SLEEP(10);
et voyez si elle atterrit/var/logs/my.slow.log
la source
/var/logs/
au lieu de/var/log
[mysqld_safe]
, ce qui n'a pas fonctionné. Les mettre sous a[mysql]
résolu le problème.