2010-03-08 21 views
81

He seguido las instrucciones aquí: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ pero parece que solo establece el umbral.¿Cómo puedo habilitar el registro lento de consultas de MySQL sin reiniciar MySQL?

¿Debo hacer algo más como configurar el archivo de ruta?

De acuerdo con documentos de MySQL

 
If no file_name value is given for --log-slow-queries, the default name is 
host_name-slow.log. The server creates the file in the data directory unless 
an absolute path name is given to specify a different directory. 

Correr

SHOW VARIABLES

no indica ninguna ruta de archivo de registro y no veo ningún archivo de registro de consultas lentas en mi servidor ...

EDIT

Parece que soy utilizando la versión 5.0.77 del servidor, por lo que tenía que hacer:

SET GLOBAL log_slow_queries = 1;

pero me sale: ERROR 1238 (HY000): '' log_slow_queries variable es una variable de sólo lectura

supongo que voy a ¿Necesito reiniciar el servidor y tener log_slow_queries establecido en mi configuración?

+4

¿Por qué no prueba que en una caja de desarrollo? – Martin

Respuesta

5

Creo que el problema es asegurarse de que el servidor MySQL tenga los derechos sobre el archivo y pueda editarlo.

Si usted puede conseguir que se tiene acceso al archivo, entonces puede intentar ajuste:
SET GLOBAL slow_query_log = 1;

Si no, siempre se puede 'recarga' el servidor después de cambiar el archivo de configuración. En Linux por lo general su /etc/init.d/mysql reload

+0

Aparece: ERROR 1193 (HY000): variable de sistema desconocida 'slow_query_log' – mmattax

+0

¿Qué versión de MySQL está ejecutando? –

86

Trate SET GLOBAL slow_query_log = 'ON'; y quizás FLUSH LOGS;

Esto supone que está utilizando MySQL 5.1 o posterior. Si está utilizando una versión anterior, deberá reiniciar el servidor. Esto está documentado en el MySQL Manual. Puede configurar el registro en el archivo de configuración o en la línea de comando.

+7

FLUSH SLOW LOGS está disponible en 5.5. –

+1

funcionó perfectamente para mí versión 5.5.40-MariaDB – wired00

7

MySQL Manual - slow-query-log-file

Este afirma que puede ejecutar el siguiente para establecer el archivo de log-lento (5.1.6 en adelante):

set global slow_query_log_file = 'path'; 

El slow_query_log variables simplemente controla si se habilita o no.

6

Estos trabajos

SET GLOBAL LOG_SLOW_TIME = 1; 
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON; 

roto en mi configuración 5.1.42

SET GLOBAL LOG_SLOW_QUERIES = ON; 
SET GLOBAL SLOW_QUERY_LOG = ON; 
set @@global.log_slow_queries=1; 

http://bugs.mysql.com/bug.php?id=32565

Parece que la mejor manera de hacer esto se establece log_slow_time muy alta por lo que "apagar" el registro lento de consultas. Baje log_slow_time para habilitarlo. Use el mismo truco (configurado en OFF) para log_queries_not_using_indexes.

25

Para consultas lentas en la versión 5.1 <, la siguiente configuración trabajó para mí:

log_slow_queries=/var/log/mysql/slow-query.log 
long_query_time=20 
log_queries_not_using_indexes=YES 

También tenga en cuenta a colocarlo bajo [mysqld] parte del archivo de configuración y reinicie mysqld.

+2

Es log_slow_queries en lugar de consultas de registro lento – naomi

+5

Además, debe crear el archivo de registro manualmente antes: 'sudo mkdir/var/log/mysql' ' sudo touch/var/log/mysql/slow-query.log' 'sudo chown -R _mysql/var/log/mysql /' – Charles

+0

'log_slow_queries' ha quedado obsoleto en MySQL 5.1.29 por' slow-query-log'. El [Manual de referencia de MySQL 5.1] (http://dev.mysql.com/doc/refman/5.1/en/server-options.html#option_mysqld_log-slow-queries) tiene más detalles. – Xeoncross

15

Buscar log habilitado o no?

SHOW VARIABLES LIKE '%log%'; 

Establecer los registros: -

SET GLOBAL general_log = 'ON'; 

SET GLOBAL slow_query_log = 'ON'; 
1

Esto debería funcionar en mysql> 5,5

VER variables como '% largo%';

SET GLOBAL long_query_time = 1;

1

Si desea habilitar los registros de errores generales y registro de errores de consultas lentas

Para iniciar el registro en la tabla en lugar de archivo

mysql> set log_output mundial = “mesa”; Para habilitar el registro de consulta general y lento

mysql> set global general_log = 1; mysql> set global slow_query_log = 1; Nombre de la tabla en la que el registro se realiza de forma predeterminada

mysql> select * from mysql.slow_log; mysql> seleccionar * de mysql.general_log; Para más información, visita este enlace

http://easysolutionweb.com/technology/mysql-server-logs/

Cuestiones relacionadas