Amazon RDS – Activar el slow log de MySQL (Parameter Groups)

A veces, cuando nuestra BBDD empieza a crecer y se vuelve mas lenta, es cuando nos damos cuenta que quizás, deberíamos optimizar un poquito mas las consultas SQL y/o crear los indices necesarios. El problema es que a menudo nuestras aplicaciones pueden generar decenas de consultas SQL y no sabemos a ciencia cierta si alguna de estas consultas tarda más de lo esperado.

Para detectar esas consultas que tardan más de lo debido, existe un log especial de MySQL llamado slow_query_log, que podemos activar desde las variables del sistema, generalmente editando el fichero “my.cnf”

AWSRDSLogo

En mi empresa, utilizamos el servicio de Amazon RDS por diferentes razones que no voy a explicar en este post, y logicamente, al ser un servicio administrado, no dispongo de la opción de editar ningún fichero “my.cnf”

Entonces… ¿como puedo cambiar las variables del sistema?

Muy sencillo. En el “AWS RDS Dashboard” tenéis una opción llamada “Parameter Groups” que no es ni más ni menos que la opción de poder editar todas esas variables del sistema que editarías en el fichero “my.cnf”.

Por defecto, encontrarás un “Parameter group” llamado “default.mysql5.6” (o la versión de MySQL que utilices) que no podras editar, pero el propio sistema te permite crear uno nuevo.

RDSPG1

Al hacer click sobre “Create DB Parameter Group”, accederemos a otra pantalla donde se nos pregunta para que versión de MySQL y que nombre y descripción le queremos dar. Si no sabéis que versión tenéis, la podéis ver en “Instances/details” o bien, si solo tenéis una BBDD corriendo, será la misma versión que el “parameter group” default.mysqlX.X

RDSPG2

Pulsáis sobre el botón “Yes, Create” y ya tendréis un nuevo “Parameter Group” creado con los valores por defecto que asigna AWS RDS.

Para activar el “slow query log” en tabla, seleccionáis el “parameter group” llamado test y le dais al botón “Edit Parameters”.

RDSPG3

Al pulsar en “Edit Parameters” podréis editar los valores que deseéis. Finalmente los guardaréis pulsando el botón “Save Changes”. Personalmente, me gusta bastante porqué nos muestra el rango de posibles valores y una pequeña descripción para cada parámetro.

RDSPG4Yo personalmente prefiero guardar el log del “slow_query” dentro de la tabla “mysql.slow_log”, así que modifico los parámetros siguientes:

slow_query_log=1
long_query_time=2
log_output=TABLE

Ahora que tenemos nuestro “Parameter Group” con los valores que queremos para que empiece a trazar cualquier “query” que tarde más de dos segundos, lo que tenemos que hacer es decirle a nuestra base de datos que utilice el nuevo “Parameter Group” “test” en vez del “default”.

Nos vamos a “Instances”, y sobre nuestra BBDD pulsamos el botón derecho y “Modify”.

RDSPG5

En la siguiente pantalla tan solo tendremos que cambiar el valor de “Parameter Group” de “default” a “test” y pulsar el botón “Continue”.

RDSPG6

Más adelante detectará que solo hemos cambiado el “Parameter Group” y si es correcto, pulsamos sobre el botón “Modify DB Instance” para que actualice las variables de este Parameter Group en la BBDD.

Si volvéis a “Instances” y seleccionáis de nuevo la BBDD veréis que dirá “Applying….” durante unos minutos mientras hace los cambios sin necesidad de reiniciar la BBDD.

Pasados unos minutos, y si realmente tenéis “queries” que tardan más de dos segundos, veréis que en la tabla “mysql.slow_log” empiezan a aparecer registros con la consulta SQL problemática, hora de inicio, tiempo de ejecución, etc…

Si te ha gustado y quieres compartir esta página..