===== Registrar / Loguear todas las consultas a base de datos realizadas en un servidor MySQL =====
Registrar todas las consultas realizadas puede ser algo muy útil en determinadas ocasiones, también produce un incremento rápido del tamaño del fichero de log o bien de la tabla de log, dependiendo de donde queremos que se almacenen los registros. Por este motivo no se recomienda hacer en sistemas en producción.
**Consultar el valor de las variables para concer el estado actual.** (Valor por defecto OFF, desactivado).
select * from information_schema.SESSION_VARIABLES where VARIABLE_NAME like 'log_output'
or VARIABLE_NAME like 'general_log'
or VARIABLE_NAME like 'general_log_file'
+------------------+----------------------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------+----------------------------+
| LOG_OUTPUT | FILE |
| GENERAL_LOG | OFF |
| GENERAL_LOG_FILE | /var/run/mysqld/mysqld.log |
+------------------+----------------------------+
**Registrar consultas MySQL en una tabl**a (MySQL >= 5.1.12). **Nombre de la tabla:** //general_log// / Base de datos: //mysql//.
Execute SET GLOBAL log_output = 'TABLE';
Execute SET GLOBAL general_log = 'ON';
**Registrar consultas MySQL en un fichero**.
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';
**Parar el registro de todas las consultas MySQL**
mysql> SET GLOBAL general_log = 'OFF';
NOTA: Al reiniciar el servidor / servicio volverá la variable general_log a "OFF"
**Lectura recomendada**: [[http://dev.mysql.com/doc/refman/5.0/es/server-system-variables.html]]
===== Visualizar las consultas MySQL en tiempo real =====
Para poder ver las consultas MySQL que se están ejecutando en el servidor de base de datos al más puro estilo "top", se puede hacer uso del comando mysqladmin + watch.
Mostrar las consultas de MySQL con la aplicación mysqladmin (instalada por defecto con MySQL).
watch mysqladmin -uXXX -pXXX processlist --verbose
Otras alternativas diseñadas para visualizar las consultas MySQL en tiempo real de forma parecida a como lo hace el mítico comando top.
* Mytop [[http://jeremy.zawodny.com/mysql/mytop/]]
* Innotop [[https://code.google.com/p/innotop/]]
* mtop [[http://mtop.sourceforge.net/]]
NOTA: Con estas herramientas, se podrán ver solo consultas que tarden algunos segundos en completarse. Si lo que se quiere es poder tener todas las consultas registradas, lo recomendado es utilizar ficheros de log o tablas como se mostró anteriormente.