queries logs log enable cnf all active mysql logging

logs - ¿Cómo habilitar MySQL Query Log?



mysql logs (13)

Echa un vistazo en esta respuesta a otra pregunta relacionada. Muestra cómo habilitar, deshabilitar y ver los registros en servidores en vivo sin reiniciar.

Registrar todas las consultas en mysql

Aquí hay un resumen:

Si no desea o no puede reiniciar el servidor MySQL, puede proceder así en su servidor en ejecución:

  • Crea tus tablas de registro (ver respuesta )

  • Habilitar el registro de consultas en la base de datos (tenga en cuenta que la cadena ''tabla'' debe colocarse literalmente y no sustituirse por ningún nombre de tabla. Gracias Nicholas Pickering )

SET global general_log = 1; SET global log_output = ''table'';

  • Ver el registro

select * from mysql.general_log;

  • Deshabilitar el registro de consultas en la base de datos

SET global general_log = 0;

¿Cómo habilito la función MySQL que registra cada instrucción de consulta SQL recibida de los clientes y la hora en que se envió la instrucción de consulta? ¿Puedo hacer eso en phpmyadmin o NaviCat? ¿Cómo analizo el log?


En Windows simplemente puede ir a

C:/wamp/bin/mysql/mysql5.1.53/my.ini

Insertar esta línea en my.ini

general_log_file = c:/wamp/logs/mysql_query_log.log

El archivo my.ini finalmente se ve así

... ... ... socket = /tmp/mysql.sock skip-locking key_buffer = 16M max_allowed_packet = 1M table_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M basedir=c:/wamp/bin/mysql/mysql5.1.53 log = c:/wamp/logs/mysql_query_log.log #dump query logs in this file log-error=c:/wamp/logs/mysql.log datadir=c:/wamp/bin/mysql/mysql5.1.53/data ... ... ... ...


En phpMyAdmin 4.0, vaya a Estado> Monitor. Allí puede habilitar el registro de consultas lentas y el registro general, ver un monitor en vivo, seleccionar una parte del gráfico, ver las consultas relacionadas y analizarlas.


Esto ya estaba en un comentario, pero merece su propia respuesta: sin editar los archivos de configuración: en mysql, como root, haga

SET global general_log_file=''/tmp/mysql.log''; SET global log_output = ''file''; SET global general_log = on;

No te olvides de apagarlo después.


Hay un error en la versión de MySQL 5.6. Incluso mysqld se muestra como:

Default options are read from the following files in the given order: C:/Windows/my.ini C:/Windows/my.cnf C:/my.ini C:/my.cnf c:/Program Files (x86)/MySQL/MySQL Server 5.6/my.ini c:/Program Files (x86)/MySQL/MySQL Server 5.6/my.cnf

Los ajustes reales se están leyendo en el siguiente orden:

Default options are read from the following files in the given order: C:/ProgramData/MySQL/MySQL Server 5.6/my.ini C:/Windows/my.ini C:/Windows/my.cnf C:/my.ini C:/my.cnf c:/Program Files (x86)/MySQL/MySQL Server 5.6/my.ini c:/Program Files (x86)/MySQL/MySQL Server 5.6/my.cnf

Compruebe el archivo: "C: / ProgramData / MySQL / MySQL Server 5.6 / my.ini"

Espero que ayude a alguien.


No es exactamente una respuesta a la pregunta porque la pregunta ya tiene grandes respuestas. Esta es una información lateral. Habilitar general_log realmente hace mella en el rendimiento de MySQL. Dejé general_log =1 accidentalmente en un servidor de producción y pasé horas descubriendo por qué el rendimiento no era comparable a una configuración similar en otros servidores. Luego encontré esto que explica el impacto de habilitar el registro general. http://www.fromdual.com/general_query_log_vs_mysql_performance .

Como parte de la historia, no ponga general_log=1 en el archivo .cnf . En su lugar, use set global general_log =1 durante un breve periodo de tiempo para registrar lo que está intentando averiguar y luego desactívelo.


Para habilitar el registro de consultas en la máquina MAC:

Abra el siguiente archivo:

vi /private/etc/my.cnf

Configure el url de registro de consultas en la sección ''mysqld'' de la siguiente manera:

[mysqld] general_log_file=/Users/kumanan/Documents/mysql_query.log

Pocas máquinas no registran la consulta correctamente, por lo que puede habilitarla desde la consola MySQL

mysql> SET global general_log = 1;


Primero, recuerde que este archivo de registro puede crecer mucho en un servidor ocupado.

Para mysql <5.1.29:

Para habilitar el registro de consultas, ponga esto en /etc/my.cnf en la sección [mysqld]

log = /path/to/query.log #works for mysql < 5.1.29

Además, para habilitarlo desde la consola de MySQL.

SET general_log = 1;

Consulte http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Para mysql 5.1.29+

Con mysql 5.1.29+, la opción de log está en desuso. Para especificar el archivo de registro y habilitar el registro, use esto en my.cnf en la sección [mysqld] :

general_log_file = /path/to/query.log general_log = 1

Alternativamente, para activar el registro desde la consola de MySQL (también debe especificar la ubicación del archivo de registro o encontrar la ubicación predeterminada):

SET global general_log = 1;

También tenga en cuenta que hay opciones adicionales para registrar solo consultas lentas, o aquellas que no usan índices.


Puede deshabilitar o habilitar el registro de consultas generales (que registra todas las consultas) con

SET GLOBAL general_log = 1 # (or 0 to disable)


También quería habilitar el archivo de registro de MySQL para ver las consultas y lo he resuelto con las siguientes instrucciones

  1. Vaya a /etc/mysql/mysql.conf.d
  2. abre el mysqld.cnf

y habilitar las siguientes líneas

general_log_file = /var/log/mysql/mysql.log general_log = 1

  1. reinicie MySQL con este comando /etc/init.d/mysql restart
  2. vaya a /var/log/mysql/ y revise los registros

Tuve que soltar y volver a crear el registro general en un punto. Durante la recreación, los conjuntos de caracteres se desordenaron y terminé teniendo este error en los registros:

[ERROR] Incorrect definition of table mysql.general_log: expected the type of column ''user_host'' at position 1 to have character set ''utf8'' but found character set ''latin1''

Entonces, si la respuesta estándar de "verificar para asegurarse de que el registro está activado" no funciona para usted, verifique que sus campos tengan el conjunto de caracteres correcto.


Utilizo este método para registrar cuando quiero optimizar rápidamente diferentes cargas de páginas. Es un pequeño consejo ...

Entrar a una mesa

SET global general_log = 1; SET global log_output = ''table'';

A continuación, puede seleccionar desde mi tabla mysql.general_log para recuperar consultas recientes.

Entonces puedo hacer algo similar a tail -f en mysql.log, pero con más mejoras ...

select * from mysql.general_log where event_time > (now() - INTERVAL 8 SECOND) and thread_id not in(9 , 628) and argument <> "SELECT 1" and argument <> "" and argument <> "SET NAMES ''UTF8''" and argument <> "SHOW STATUS" and command_type = "Query" and argument <> "SET PROFILING=1"

Esto hace que sea fácil ver mis consultas que puedo intentar y reducir. Utilizo el intervalo de 8 segundos para recuperar solo las consultas ejecutadas en los últimos 8 segundos.


para mysql> = 5.5 solo para consultas lentas (1 segundo y más) my.cfg

[mysqld] slow-query-log = 1 slow-query-log-file = /var/log/mysql/mysql-slow.log long_query_time = 1 log-queries-not-using-indexes