Las consultas lentas no registran

13

Estoy intentando habilitar el registro lento de consultas en nuestro servidor para identificar cualquier consulta que pueda utilizar la optimización. Suena bastante simple, sin embargo, mi archivo no está siendo escrito. No recibo errores ni nada por el estilo, simplemente no parece estar registrando las consultas lentas. He recordado reiniciar mysql después de que mi configuración cambia.

Estoy usando MySQL Ver 5.1.61. Esto es lo que tengo en my.cnf:

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

el archivo /var/logs/my.slow.log tiene mysql como propietario, también en aras de la depuración que di lectura / escritura a todos en el archivo de registro.

Tengo el long_query_time establecido en 1 en lo anterior, ya que solo quiero ver si está funcionando. He intentado configurarlo más bajo (por ejemplo, 0.3) pero todavía no obtengo nada registrado. Sé que las consultas que está ejecutando mi aplicación tardan más de 1 segundo y también he ejecutado intencionalmente consultas de registro ( SELECT sleep(10);) en el terminal para probar y el registro aún está vacío.

He revisado los documentos, por lo que puedo ver, esto debería estar funcionando. ¿Alguien tiene alguna sugerencia sobre lo que estoy haciendo mal? Cualquier consejo sería apreciado, muchas gracias!

Editar: como se solicitó en los comentarios, ejecuté la consulta:

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

El resultado:

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

Obviamente, mis cambios de configuración no se tienen en cuenta, ya que creo que estos son los valores predeterminados. Estoy bastante seguro de que el archivo my.cnf que estoy alterando se está analizando como si coloco un valor no válido mysql producirá un error al reiniciar. ¿Qué podría estar pasando aquí?

Otra edición:

Después de seguir los consejos de @RolandoMySQLDBA y mover mis líneas de configuración de consulta lenta a [mysqld]mi configuración, parece que se está guardando. Ahora el resultado de la consulta anterior variable_value es:

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

Sin embargo, todavía no veo que se escriba el archivo my.slow.log. No creo que sea un problema de permisos, ya que el archivo es propiedad de mysql y he agregado todos los permisos para todos los usuarios en el archivo. ¿Alguien podría pensar en una razón por la que esto no estaría funcionando?

Editar: ¡Resuelto! La ruta al registro de consulta lenta era incorrecta, debería haber sido /var/log/my.slow.log en lugar de / var / log * s * / my.slow.log. Gracias a todos por la ayuda, ¡he aprendido mucho!

El método
fuente
1
Ejecute SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');y publique su salida.
RolandoMySQLDBA
1
Si alguien aún tiene problemas después de leer esto, verifique la variable log_output. SET GLOBAL log_output=FILEMe lo arregló.
molholm

Respuestas:

21

Creo que obtuve la respuesta:

Necesitas poner esas opciones debajo de la [mysqld]sección

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

y reiniciar mysql

ACTUALIZACIÓN 2013-03-05 16:36 EST

No sé por qué esto sigue sucediendo, pero intente esto:

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

luego corre SELECT SLEEP(10);y mira si aterriza en/var/logs/my.slow.log

RolandoMySQLDBA
fuente
¡Gracias! Lo que sugirió ayudó, parece que la configuración se está guardando correctamente, sin embargo, todavía no escribo nada. He editado mi pregunta para reflejar esto.
TheMethod
Oye, solo curiosidad, estoy ejecutando un sistema Debian en una VM. ¿Es correcto el camino en su respuesta? /var/logs/en lugar de/var/log
Silviu-Marian
Solo información. "touch & chown" son necesarios también en el entorno CentOS 6.6 mysql 5.1.73.
Fumisky Wells
Acabo de encontrar un sistema en el que intentaron ponerlos [mysqld_safe], lo que no funcionó. Ponerlos debajo [mysql]resolvió el problema.
Michael Hampton