Establecer variables en MySQL 5.7 y MySQL 8

Hola a todos, hoy vamos a hablaros sobre cómo establecer variables en MySQL 5.7 y MySQL 8. Con la llegada de MySQL 8 se han añadido mejoras en este sentido. Vamos a contaros tres formas de hacerlo en ambas versiones. En función de nuestras necesidades usaremos unas u otras.

Establecer variables hasta que se reinicie el servidor

En ciertas ocasiones, se pueden aplicar variables del sistema de manera temporal hasta que se reinicie el servidor. Normalmente para probar cambios «en caliente» y ver si surten efecto. En este caso, no ha habido diferencias a la hora de establecer estas variables. Por tanto, en ambas versiones se establecen de la siguiente manera. Por ejemplo:

set global max_connect_errors=10000;

La forma de establecerlo es usando «SET GLOBAL«. Lo que implica que estos cambios afectan de manera instantánea a todas las sesiones, hasta que reinicie MySQL.

Establecer variables instantáneamente y mantenerlas tras reiniciar el servidor

Otra posibilidad es que se quieran aplicar los cambios de manera instantánea y que estos se mantengan tras el reinicio.

En MySQL 5.7 deberíamos establecer la variable de manera global como en el paso anterior:

set global max_connect_errors=10000;

Posteriormente guardar o actualizar esta variable en el fichero my.cnf y reiniciar el servidor.

En MySQL 8.0 se puede hacer todo en el mismo paso. Para ello utilizaríamos el comando SET PERSIST:

set persist max_connect_errors=10000;

Este comando aplicaría de manera instantánea el valor establecido y volvería a añadirlo automáticamente en cada reinicio. Para ello genera en el directorio de datos, el fichero mysqld-auto.cnf. Este fichero es de tipo JSON y en él se guardan las variables establecidas mediante set persist. Hay que tener en cuenta que este fichero, tiene prevalencia sobre my.cnf, por lo que tras el reinicio, si tenemos un valor diferente configurado en my.cnf no lo tendrá en cuenta, ya que siempre aplica el que haya en el fichero mysqld-auto.cnf.

Mantener las variables tras los reinicios pero no aplicarlas de manera instantánea

Por último, podemos aplicar variables para que se apliquen tras reiniciar el servicio de MySQL y sean estables en el tiempo. Puede ocurrir por dos motivos: hay variables que es necesario que se apliquen tras reiniciar, ya que se aplican en el momento de arrancar, o bien porque lo queremos voluntariamente.

En MySQL 5.7, necesitaríamos guardar estas variables en el fichero my.cnf y reiniciar el servidor.

En el caso de MySQL 8.0 podemos usar SET PERSIST ONLY, que guardará los cambios en el fichero mysqld-auto.cnf pero no lo aplicará hasta que se reinicie el servidor.

Una de estas variables es innodb_log_file_size, que controla el tamaño de los ficheros de log. Veamos cómo aplicar en MySQL 8.0:

set persist_only innodb_log_file_size=134217728;

Podemos reiniciar MySQL utilizando el comando «RESTART» en la consola siempre que este sea controlado por un gestor de servicios como systemd por ejemplo. También, podemos parar y volver a arrancar el servicio de forma manual en función de nuestro S.O.

Si aún así, tienes dudas o prefieres que lo hagamos nosotros, puedes contactar con nosotros para que podamos ayudarte. No dudes en suscribirte a nuestra newsletter mensual para recibir ésta y todas nuestras publicaciones con un solo email al mes. Nos vemos en próximas entradas.

Fuente: https://scalegrid.io/blog/setting-mysql-configuration-variables-mysql-5-7-vs-mysql-8-0/