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!
fuente
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.SET GLOBAL log_output=FILE
Me lo arregló.Respuestas:
Creo que obtuve la respuesta:
Necesitas poner esas opciones debajo de la
[mysqld]
seccióny reiniciar mysql
ACTUALIZACIÓN 2013-03-05 16:36 EST
No sé por qué esto sigue sucediendo, pero intente esto:
luego corre
SELECT SLEEP(10);
y mira si aterriza en/var/logs/my.slow.log
fuente
/var/logs/
en lugar de/var/log
[mysqld_safe]
, lo que no funcionó. Ponerlos debajo[mysql]
resolvió el problema.