Asunto: Monitorizar y ver consultas SQL que se ejecutan en MySQL
Hola, tengo un servidor de base de datos con MySQL Server 5 y con Linux CentOS. El equipo va muy bien pero tengo una pequeña duda con MySQL ¿hay alguna forma de monitorizar y ver todas las consultas SQL que se ejecutan en una base de datos MySQL? tengo un sistema gestor de contenidos web (Joomla!) y una aplicación de facturación, contabilidad, almacén y recursos humanos que usa también el motor de MySQL, el caso es que necesito ver qué consultas SQL ejecuta la aplicación de facturación para poder depurar unos problemas.
¿Es esto posible en MySQL Community? ¿cómo se ven todas las consultas SQL que se ejecutan en MySQL?
Publicado:
Lun May 18, 2015 10:09 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Monitorizar y ver consultas SQL que se ejecutan en MySQL
Anuncios
varios escribió:
Hola, tengo un servidor de base de datos con MySQL Server 5 y con Linux CentOS. El equipo va muy bien pero tengo una pequeña duda con MySQL ¿hay alguna forma de monitorizar y ver todas las consultas SQL que se ejecutan en una base de datos MySQL? tengo un sistema gestor de contenidos web (Joomla!) y una aplicación de facturación, contabilidad, almacén y recursos humanos que usa también el motor de MySQL, el caso es que necesito ver qué consultas SQL ejecuta la aplicación de facturación para poder depurar unos problemas.
¿Es esto posible en MySQL Community? ¿cómo se ven todas las consultas SQL que se ejecutan en MySQL?
Sí que es posible, para activar la monitorización de las consultas SQL que se ejecutan en un servidor de MySQL Server sigue estos pasos:
1. Edita el fichero de configuración de MySQL (en linux suele ser my.cnf) que suele estar en equipos Linux en:
/etc/my.cnf
Puedes editar este fichero con nano o con vi:
Código:
nano /etc/my.cnf
Una vez dentro añade las líneas, en el grupo [mysqld]:
general_log = 1
log = /var/log/mysql_SQL.log
Nota: dependiendo de la versión de MySQL Server, es posible que en lugar de "log = xxx" debas usar "general_log_file = xxx". En nuestro laboratorio, usando la versión de MySQL Server 5.5.41 ha funcionado correctamente con log = xxx.
Una vez añadidas estas líneas guardaremos los cambios (en nano pulsando Control + O, en vi pulsando Escape y :w) y cerrando la edición con Control + X en nano o Escape + :q en vi.
2. Ahora debes crear el fichero de log y asignarle permisos, pues a este fichero accederá MySQL Server con el usuario mysql (normalmente el usuario que se crea en el sistema al instalar MySQL Server). Por lo tanto el fichero de log debe existir y este usuario debe tener permisos para este fichero. Para crearlo, podemos usar:
Código:
nano /var/log/mysql_SQL.log
Y asignarle permisos con:
Código:
chmod 777 /var/log/mysql_SQL.log
3. Por último, para que los cambios se apliquen, debes reiniciar el servicio de MySQL Server (mysql), teniendo en cuenta que las aplicaciones dejarán de funcionar unos segundos mientras se reinicia, para reiniciarlo, en CentOS 6 o inferior:
Código:
/etc/init.d/mysql restart
En CentOS 7:
Código:
systemctl restart mysql.service
Ahora si el proceso ha sido correcto, al visualizar el contenido del fichero /var/log/mysql_SQL.log podrás ver las consultas SQL que se van ejecutando en tu servidor de MySQL.
Publicado:
Lun May 18, 2015 10:29 am
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: [RESUELTO] Monitorizar y ver consultas SQL MySQL
Anuncios
alonsojpd escribió:
Sí que es posible, para activar la monitorización de las consultas SQL que se ejecutan en un servidor de MySQL Server sigue estos pasos:
1. Edita el fichero de configuración de MySQL (en linux suele ser my.cnf) que suele estar en equipos Linux en:
/etc/my.cnf
general_log = 1
log = /var/log/mysql_SQL.log
2. Ahora debes crear el fichero de log y asignarle permisos, pues a este fichero accederá MySQL Server con el usuario mysql (normalmente el usuario que se crea en el sistema al instalar MySQL Server). Por lo tanto el fichero de log debe existir y este usuario debe tener permisos para este fichero. Para crearlo, podemos usar:
Y asignarle permisos con:
3. Por último, para que los cambios se apliquen, debes reiniciar el servicio de MySQL Server (mysql), teniendo en cuenta que las aplicaciones dejarán de funcionar unos segundos mientras se reinicia, para reiniciarlo, en CentOS 6 o inferior:
Código:
/etc/init.d/mysql restart
Genial, me funciona perfecto, ahora me guarda en el fichero de log todas las consultas SQL que se ejecutan en la base de datos, además con esto ya he arreglado el problema que tenía con una aplicación de contabilidad.
Un aporte, si no se establecen bien los permisos del fichero de log para el usuario mysql al ejecutar el comando desde mysql:
set global general_log = 'ON';
Aparece el error:
ERROR 29 (HY000): File '/var/log/mysql_SQL.log' not found (Errcode: 13)
Creando el fichero y estableciéndole los permisos como indicas ya funciona perfecto.
Gracias!!
Publicado:
Lun May 18, 2015 10:34 am
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: [RESUELTO] Monitorizar y ver consultas SQL MySQL
Anuncios
Aportando alguna información más para configurar los log en MySQL:
1. Para comprobar el valor de los parámetros de log desde la línea de comandos de MySQL, accediendo a esta línea de comandos con:
mysql -u xxx -p
2. Introduciendo el comando:
Código:
SHOW VARIABLES LIKE "general_log";
te mostrará el valor del parámetro:
general_log ON
Código:
SHOW VARIABLES LIKE "general_log_file";
te mostrará el valor del parámetro:
general_log_file /var/log/mysql_SQL.log
También puedes ver el valor de los parámetros ejecutando:
3. Para activar el modo de log también puedes ejecutar:
SET GLOBAL general_log = 'ON';
Para desactivarlo:
SET GLOBAL general_log = 'OFF';
4. Es muy recomendable que actives este modo de log solo en momentos determinados para depuraciones y demás y lo vuelvas a desactivar. Este modo te irá guardando en el fichero de log todas las consultas SQL que se ejecutén, si tienes una base de datos que usan muchos usuarios y muchas aplicaciones este log puede crecer muchísimo e incluso ralentizar ciertos procesos de MySQL. Por lo tanto no es conveniente tener activado este modo de log en entornos de producción, solo para depuración.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A