see queries log_output log how error enable disable all mysql logging

log_output - mysql logging queries



¿Cómo mostrar las últimas consultas ejecutadas en MySQL? (10)

¿Hay alguna consulta / forma de mostrar las últimas consultas ejecutadas en TODOS los servidores?


1) Si el registro de mysql general está habilitado, podemos verificar las consultas en el archivo de registro o en la tabla según lo que hemos mencionado en la configuración. Compruebe lo que está habilitado con el siguiente comando

mysql> show variables like ''general_log%''; mysql> show variables like ''log_output%'';

Si necesitamos consultar el historial en la tabla entonces

Execute SET GLOBAL log_output = ''TABLE''; Execute SET GLOBAL general_log = ''ON'';

Echa un vistazo a la tabla mysql.general_log

Si prefieres dar salida a un archivo:

SET GLOBAL log_output = "FILE"; which is set by default. SET GLOBAL general_log_file = "/path/to/your/logfile.log"; SET GLOBAL general_log = ''ON'';

2) También podemos verificar las consultas en el archivo .mysql_history cat ~ / .mysql_history


Después de leer la respuesta de Paul, seguí buscando más información en https://dev.mysql.com/doc/refman/5.7/en/query-log.html

Encontré un código realmente útil por una persona. Aquí está el resumen del contexto.

(Nota: el siguiente código no es mío)

Este script es un ejemplo para mantener la tabla limpia, lo que le ayudará a reducir el tamaño de la tabla. Como después de un día, habrá alrededor de 180k consultas de registro. (en un archivo, sería 30MB por día)

Debe agregar una columna adicional (event_unix) y luego puede usar este script para mantener limpio el registro ... actualizará la marca de tiempo en una marca de tiempo de Unix, eliminará los registros anteriores a 1 día y luego actualizará la hora de evento en la marca de tiempo de event_unix ... suena un poco confuso, pero está funcionando muy bien.

Comandos para la nueva columna:

SET GLOBAL general_log = ''OFF''; RENAME TABLE general_log TO general_log_temp; ALTER TABLE `general_log_temp` ADD COLUMN `event_unix` int(10) NOT NULL AFTER `event_time`; RENAME TABLE general_log_temp TO general_log; SET GLOBAL general_log = ''ON'';

Script de limpieza:

SET GLOBAL general_log = ''OFF''; RENAME TABLE general_log TO general_log_temp; UPDATE general_log_temp SET event_unix = UNIX_TIMESTAMP(event_time); DELETE FROM `general_log_temp` WHERE `event_unix` < UNIX_TIMESTAMP(NOW()) - 86400; UPDATE general_log_temp SET event_time = FROM_UNIXTIME(event_unix); RENAME TABLE general_log_temp TO general_log; SET GLOBAL general_log = ''ON'';

El crédito es para Sebastian Kaiser (escritor original del código).

Espero que alguien lo encuentre útil como yo lo hice.


Para aquellos bendecidos con MySQL> = 5.1.12, puede controlar esta opción globalmente en tiempo de ejecución:

  1. Ejecute SET GLOBAL log_output = ''TABLE'';
  2. Ejecute SET GLOBAL general_log = ''ON'';
  3. Echa un vistazo a la tabla mysql.general_log

Si prefiere generar un archivo en lugar de una tabla:

  1. SET GLOBAL log_output = "FILE"; el predeterminado
  2. SET GLOBAL general_log_file = "/path/to/your/logfile.log";
  3. SET GLOBAL general_log = ''ON'';

Prefiero este método a editar archivos .cnf porque:

  1. no estás editando el archivo my.cnf y potencialmente activando permanentemente el registro
  2. no está buscando el sistema de archivos buscando el registro de consultas, o lo que es peor, distraído por la necesidad del destino perfecto. /var/log /var/data/log /opt /home/mysql_savior/var
  3. No es necesario reiniciar el servidor e interrumpir las conexiones actuales con él.
  4. reiniciar el servidor te deja donde empezaste (el registro está desactivado por defecto)

Para obtener más información, consulte el Manual de referencia de MySQL 5.1 - Variables del sistema del servidor - general_log


Puede habilitar un registro de consulta general para ese tipo de diagnóstico. En general, no registra todas las consultas SELECT en un servidor de producción, sin embargo, es un asesino de rendimiento.

Edite su configuración de MySQL, por ejemplo, /etc/mysql/my.cnf - busque, o agregue, una línea como esta

[mysqld] log = /var/log/mysql/mysql.log

Reinicie mysql para recoger ese cambio, ahora puede

tail -f /var/log/mysql/mysql.log

Hey presto, puedes ver las consultas a medida que entran.


Puedes hacer lo que sea necesario para monitorear los registros de consultas de mysql.

Abra el archivo de configuración mysql my.cnf

sudo nano /etc/mysql/my.cnf

Busque las siguientes líneas bajo el encabezado [mysqld] y descomente estas líneas para habilitar el registro

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

Reinicie su servidor mysql para reflejar cambios

sudo service mysql start

Supervisar el registro del servidor mysql con el siguiente comando en la terminal

tail -f /var/log/mysql/mysql.log


Puedes mirar lo siguiente en linux.

cd /root ls -al

vi .mysql_history puede ayudar


Si mysql binlog está habilitado, puede verificar los comandos ejecutados por el usuario ejecutando el siguiente comando en la consola de linux navegando al directorio mysql binlog

mysqlbinlog binlog.000001 > /tmp/statements.sql

habilitando

[mysqld] log = /var/log/mysql/mysql.log

o el registro general tendrá un efecto en el rendimiento de mysql


Si no tiene ganas de cambiar la configuración de MySQL, puede usar un generador de perfiles SQL como "Neor Profile SQL" http://www.profilesql.com .



SELECT * FROM mysql.general_log WHERE command_type =''Query'' LIMIT total;