Estou tentando ativar o log lento de consultas em nosso servidor para identificar quaisquer consultas que possam usar otimização. Parece bastante simples, mas meu arquivo não está sendo gravado. Não recebo erros ou algo parecido, simplesmente não parece estar registrando as consultas lentas. Lembrei-me de reiniciar o mysql após minhas alterações de configuração.
Estou usando o MySQL Ver 5.1.61. Aqui está o que eu tenho em my.cnf:
slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
o arquivo /var/logs/my.slow.log tem o mysql como proprietário, também no interesse da depuração, dei leitura/gravação para todos no arquivo de log.
Eu tenho o long_query_time definido como 1 acima, pois só quero ver se está funcionando. Eu tentei defini-lo mais baixo (por exemplo, 0,3), mas ainda não estou obtendo nada registrado. Sei que as consultas que meu aplicativo está executando demoram mais de 1 segundo e também executei consultas de log intencionalmente ( SELECT sleep(10);
) no terminal para teste e o log ainda está vazio.
Eu examinei os documentos, pelo que posso ver, isso deve estar funcionando. Alguém tem alguma sugestão sobre o que estou fazendo de errado? Qualquer conselho seria apreciado, muito obrigado!
Editar: conforme solicitado nos comentários, executei a consulta:
`SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
O resultado:
10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Obviamente, minhas alterações de configuração não estão sendo levadas em consideração, pois acredito que sejam padrões. Estou certo de que o arquivo my.cnf que estou alterando está sendo analisado, pois se eu colocar um valor inválido, o mysql apresentará um erro ao reiniciar. O que poderia estar acontecendo aqui?
Outra edição:
Depois de seguir o conselho de @RolandoMySQLDBA e mover minhas linhas de configuração de consulta lenta para [mysqld]
minhas configurações, parece estar salvando. Agora, o resultado da consulta variable_value acima é:
1.0000000
/var/logs/my.slow.log
ON
No entanto, ainda não estou vendo o arquivo my.slow.log sendo gravado. Não acho que seja um problema de permissão, pois o arquivo pertence ao mysql e adicionei todas as permissões para todos os usuários no arquivo. Alguém poderia pensar em uma razão pela qual isso não estaria funcionando?
Editado: Resolvido! O caminho para o log de consulta lenta estava incorreto, deveria ser /var/log/my.slow.log em vez de /var/log* s */my.slow.log . Obrigado a todos pela ajuda, aprendi muito!
Acho que consegui a resposta:
Você precisa colocar essas opções na
[mysqld]
seçãoe reinicie o mysql
ATUALIZAÇÃO 2013-03-05 16:36 EST
Não sei por que isso ainda está acontecendo, mas tente isso:
então corra
SELECT SLEEP(10);
e veja se ele cai em/var/logs/my.slow.log