2009-03-16 59 views

Respuesta

607

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

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

Si prefiere la salida a un archivo en lugar de una tabla:

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

prefiero este método para la edición de archivos porque .cnf:

  1. no se está editando el archivo my.cnf y potencialmente girando permanentemente en el registro
  2. que' No estoy pescando en 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. reiniciar el servidor que deja al punto de partida (registro es por defecto sigue apagado)
  4. Usted no tiene que reiniciar el servidor e interrumpir las conexiones actuales a ella.

Para obtener más información, consulte MySQL 5.1 Reference Manual - Server System Variables - general_log

+4

Gran diseño de interfaz de usuario. De todos modos, las tablas de registro de MySQL están usando un motor CSV para que pueda hacer todo lo que FlipMcF dijo en la respuesta sobre habilitar el registro en la tabla general_log, y tener tail -f de general_log como este: tail -f/var/lib/mysql/mysql /general_log.CSV –

+1

Maldita sea, el documento de MySQL para esto ni siquiera dispara el parámetro de la tabla. muchas gracias. – Vangel

+0

@Vangel, consulte [aquí] (http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_log_output). Está allá. Pero sí, fue frustrante no verlo para [versión 5.5] (http://dev.mysql.com/doc/refman/5.5/en/query-log.html), a pesar de que se muestra para [versión 5.1 ] (http://dev.mysql.com/doc/refman/5.1/en/query-log.html). –

38

Puede habilitar un general query log para ese tipo de diagnóstico. En general, no registra todas las consultas SELECT en un servidor de producción, sino que es un asesino de rendimiento.

Edite su configuración de MySQL, p. /etc/mysql/my.cnf - Buscar o agregar, una línea como esta mysql

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

Reiniciar para recoger ese cambio, ahora se puede

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

¡listo, se puede ver . las consultas ya que vienen en

+4

general_log_file y general_log en my.cnf –

+0

Esto funciona si quieres saber reiniciar mysql http: // askubuntu.com/questions/82374/how-do-i-start-stop-mysql-server –

+1

Las versiones más nuevas de Mac OS X (al menos en Mac OS X) requieren las opciones general_log_file y general_log en lugar de simplemente "log =". De lo contrario, obtendrá un error como este: ERROR/usr/local/mysql/bin/mysqld: opción ambigua '--log =/tmp/mysql_queries.log' (log-bin, log_slave_updates) –

2

Usted puede mirar en el siguiente en Linux

cd /root 

ls -al 

vi .mysql_history Puede ayudar

+5

Esto parece que solo funcionaría para el cliente oficial de la línea de comandos mysql, y solo para las consultas ejecutadas por el usuario raíz – golimar

+0

La pregunta dice 'todo el servidor' lo que hace que esta respuesta sea incorrecta. Esto mostraría todas las consultas ejecutadas por un solo cliente. Si – FlipMcF

+0

binlog MySQL está activado, puede comprobar los comandos corrieron por el usuario mediante la ejecución siguiente comando en la consola Linux navegando a mysql directorio binlog mysqlbinlog binlog.000001> /tmp/statements.sql permitiendo [mysqld] = log/var /log/mysql/mysql.log o registro genral tendrá un efecto en el rendimiento de mysql –

3

Si MySQL binlog está activado se puede comprobar los comandos ejecutados por usuario ejecutando siguiendo el comando en linux cons ole por la navegación a MySQL directorio binlog

mysqlbinlog binlog.000001 > /tmp/statements.sql 

permitiendo

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

o registro general tendrá un efecto sobre el rendimiento de MySQL

+0

posible, pero doloroso. más útil si buscas ver lo que sucedió en el pasado. – pdwalker

12

Puede hacer lo que fluye de registros de consultas monitoreo de MySQL .

abierto MySQL fichero de configuración my.cnf

sudo nano /etc/mysql/my.cnf 

búsqueda siguientes líneas bajo un encabezado [mysqld] y descomentar estas líneas para permitir que ingrese

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

Reinicie el servidor MySQL para reflejar los cambios

sudo service mysql start 

Controla el registro del servidor mysql con la siguiente coma nd en el terminal

tail -f /var/log/mysql/mysql.log 
9
SELECT * FROM mysql.general_log WHERE command_type ='Query' LIMIT total; 
3

1) Si está habilitado el registro general de MySQL después podemos comprobar las consultas en el archivo de registro o tabla en función de lo que hemos mencionado en la configuración. Comprobar lo que se activa con el comando

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

siguiente Si necesitamos consultar la historia en la tabla a continuación

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

Tome un vistazo a la tabla de mysql.general_log

Si prefiere enviar la salida 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

Cuestiones relacionadas