¿Cómo habilito la función MySQL que registra cada declaración de consulta SQL recibida de los clientes y el momento en que se envió esa declaración de consulta? ¿Puedo hacer eso en phpmyadmin o NaviCat? ¿Cómo analizo el registro?
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, colóquelo /etc/my.cnf
en la [mysqld]
sección
log = /path/to/query.log #works for mysql < 5.1.29
Además, para habilitarlo desde la consola MySQL
SET general_log = 1;
Ver http://dev.mysql.com/doc/refman/5.1/en/query-log.html
Para mysql 5.1.29+
Con mysql 5.1.29+, la log
opción está en desuso. Para especificar el archivo de registro y habilitar el registro, use esto en my.cnf en la [mysqld]
sección:
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 de alguna manera, 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.
SET global general_log_file='c:/Temp/mysql.log';
SET global general_log = on;
SET global log_output = 'file';
Eche un vistazo a 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 )
Habilite el registro de consultas en la base de datos (tenga en cuenta que la cadena 'tabla' debe escribirse literalmente y no sustituirse por ningún nombre de tabla. Gracias Nicholas Pickering )
fuente
Utilizo este método para iniciar sesión cuando quiero optimizar rápidamente diferentes cargas de página. Es un pequeño consejo ...
Iniciar sesión en una TABLA
Luego puede seleccionar de mi
mysql.general_log
tabla para recuperar consultas recientes.Entonces puedo hacer algo similar
tail -f
en mysql.log, pero con más mejoras ...Esto facilita ver mis consultas que puedo tratar de recortar. Utilizo un intervalo de 8 segundos para buscar solo consultas ejecutadas en los últimos 8 segundos.
fuente
Esto ya estaba en un comentario, pero merece su propia respuesta: sin editar los archivos de configuración: en mysql, como root, do
No olvide apagarlo después:
fuente
/tmp/
, puede terminar en algún lugar como/tmp/systemd-private-...-mariadb.service-.../tmp/
Puede deshabilitar o habilitar el registro de consultas generales (que registra todas las consultas) con
fuente
También quería habilitar el archivo de registro de MySQL para ver las consultas y lo resolví con las instrucciones a continuación.
/etc/mysql/mysql.conf.d
y habilite las siguientes líneas
/etc/init.d/mysql restart
/var/log/mysql/
y revisa los registrosfuente
fuente
En Windows simplemente puedes ir a
Inserte esta línea en my.ini
El archivo my.ini finalmente se ve así
fuente
Hay un error en la versión MySQL 5.6. Incluso mysqld se muestra como:
Realmente la configuración se lee en el siguiente orden:
Verifique el archivo: "C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ my.ini"
Espero que ayude a alguien.
fuente
para mysql> = 5.5 solo para consultas lentas (1 segundo y más) my.cfg
fuente
Para habilitar el registro de consultas en la máquina MAC:
Abre el siguiente archivo:
Establezca la URL de registro de consulta en la sección 'mysqld' de la siguiente manera:
Pocas máquinas no están registrando la consulta correctamente, por lo que puede habilitarla desde la consola MySQL
fuente
No es exactamente una respuesta a la pregunta porque la pregunta ya tiene excelentes respuestas. Esta es una información lateral. Habilitar general_log realmente afecta el rendimiento de MySQL. Me fui
general_log =1
accidentalmente a 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 .La esencia de la historia, no poner
general_log=1
en el.cnf
archivo. En su lugar, utiliceset global general_log =1
durante un breve período de tiempo solo para iniciar sesión lo suficiente como para descubrir lo que está tratando de averiguar y luego apagarlo.fuente
En phpMyAdmin 4.0, vas a Estado> Monitor. Allí puede habilitar el registro lento de consultas y el registro general, ver un monitor en vivo, seleccionar una parte del gráfico, ver las consultas relacionadas y analizarlas.
fuente
Tuve que soltar y volver a crear el registro general en un punto. Durante la recreación, los juegos de caracteres se estropearon 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.
fuente