IngDiaz

Registrar sentencias SQL de MySQL en tiempo real

Hola a todos. En el mundo de Microsoft, entre las herramientas que posee SQL Server, hay una muy útil llamado Profiler, con el cuál podemos monitorear en tiempo real las sentencias SQL que se están ejecutando en el servidor; podemos hacer filtros, determinar qué tipo de información queremos, etc.. Quizás, en una próxima entrada de blog pueda tratar al respecto. Ahora, ¿hay algo similar en MySQL?, claro que sí, pero en este caso les traigo una alternativa básica y sencilla para esto. Lo que hacemos, es activar los logs de querys para capturar todas las sentencias SQL que ocurren en tiempo real, guardándolo en un archivo de texto o una tabla que definamos.

Para esta entrada de blog, mostraré la forma de activarlo para que se genere un archivo log (lo más práctico, creo yo…), pero hay que tomar en cuenta algo, que no es una opción que debería estar todo el tiempo activa, dado que le genera estrés al servidor, por cuanto lo ideal es que tengamos prudencia y sepamos lo que estamos haciendo para activarlo; ¿en qué casos aplica?, por ejemplo, en un entorno de desarrollo y que deseamos saber qué sentencias SQL genera cierta aplicación.

Pues bien, en un sistema GNU/Linux, lo primero que debemos hacer es ingresar a nuestro servidor MySQL; en este caso, mediante línea de comando podemos ejecutar:

sudo mysql -u root -p

Y una vez en el servidor MySQL, definimos que utilizaremos un archivo para registrar los logs de querys y también definimos la ubicación donde estará el archivo que almacenará todas esas sentencias SQL:

SET global log_output = 'FILE';
SET global general_log_file='/var/log/mysql/sentencias.log';

y ahora, solo nos basta activar este log de querys así:

SET global general_log = 1;

Si miras el contenido del archivo, verás que se van registrando las sentencias SQL que se estén ejecutando en el servidor.

Para desactivar este log (dado que podría consumir muchos recursos y dejarnos sin espacio en disco con el tiempo…), simplemente ponemos a cero la variable en cuestión:

SET global general_log = 0;

Si no recordamos si el parámetro está activo o no, o si no recordamos si está configurado para generar un archivo o registrar en una tabla, podemos averiguarlo así:

show variables like 'general_log%';
show variables like 'log_out%';

y eso sería todo. Espero que la información te haya servido. Saludos.

Comentarios por Facebook

comentarios