Respuestas:
Para aquellos bendecidos con MySQL> = 5.1.12, puede controlar esta opción globalmente en tiempo de ejecución:
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
mysql.general_log
Si prefiere exportar a un archivo en lugar de una tabla:
SET GLOBAL log_output = "FILE";
el valor por defecto .SET GLOBAL general_log_file = "/path/to/your/logfile.log";
SET GLOBAL general_log = 'ON';
Prefiero este método para editar archivos .cnf porque:
my.cnf
archivo y potencialmente activa permanentemente el registro/var/log /var/data/log
/opt /home/mysql_savior/var
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
Hola, listo, puedes ver las consultas a medida que entran.
Puede hacer lo que fluye para monitorear los registros de consultas mysql.
Abra el archivo de configuración mysql my.cnf
sudo nano /etc/mysql/my.cnf
Busque las siguientes líneas debajo de un [mysqld]
encabezado 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 los cambios.
sudo service mysql start
Monitoree el registro del servidor mysql con el siguiente comando en la terminal
tail -f /var/log/mysql/mysql.log
1) Si el registro general de mysql está habilitado, entonces podemos verificar las consultas en el archivo de registro o en la tabla en función de 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 el historial de consultas 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 prefiere exportar 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
Tal vez pueda averiguarlo mirando el registro de consultas .
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 binq de mysql
mysqlbinlog binlog.000001 > /tmp/statements.sql
permitiendo
[mysqld]
log = /var/log/mysql/mysql.log
o el registro general tendrá un efecto en el rendimiento de mysql
Si no desea cambiar su configuración de MySQL, puede utilizar un generador de perfiles SQL como "Neor Profile SQL" http://www.profilesql.com .
Después de leer la respuesta de Paul, seguí cavando para obtener 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 limpia la tabla que lo ayudará a reducir el tamaño de su tabla. Como después de un día, habrá aproximadamente 180k consultas de registro. (en un archivo, sería 30 MB por día)
Debe agregar una columna adicional (event_unix) y luego puede usar este script para mantener el registro limpio ... actualizará la marca de tiempo en una marca de tiempo Unix, eliminará los registros anteriores a 1 día y luego actualizará event_time en Timestamp from 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 va para Sebastian Kaiser (Escritor original del código).
Espero que alguien lo encuentre útil como lo hice.
Puedes mirar lo siguiente en Linux
cd /root
ls -al
vi .mysql_history
Puede ayudar