Binlogs en MySQL

Los binlogs en MySQL son ficheros binarios de registro en los que se va almacenando la información de todas las modificaciones de objetos de una determinada base de datos. Los llamados binlogs son clave por ejemplo en el diseño de entornos MySQL replicados, ya que permite tener total control e integridad de los datos ante cambios en los roles de la replicación de MySQL.

Por defecto, los días de retención de estos ficheros es de 30 días. Pero hay ocasiones en los que pueden saturar el almacenamiento en casos en los que disponemos de una máquina con poco almacenamiento y no podemos ampliar.

Sin ir más lejos, el propio sistema open source de monitorización Zabbix nos marcaba que estaba al 95% de espacio usado en la partición /var y tras un primer análisis del espacio usado ya pudimos comprobar que se estaba llenando debido al uso de estos ficheros

Lo primero que realizamos fue editar el fichero de configuración de MySQL y modificar estas líneas, donde indicamos el número máximo de días que va a retener y el tamaño máximo de los logs:

expire_logs_days = 5
max_binlog_size = 1G

Tras ello, conectamos por comandos al motor de MySQL y realizamos purga de los binlogs:

Miramos todos los logs actuales:

mysql> SHOW BINARY LOGS;

Realizamos purga hasta una fecha determinada:

mysql> PURGE BINARY LOGS TO ‘binlog.000064’;

Tras esto, podemos reiniciar el servicio:

systemctl restart mysql.service

Y por supuesto, no olvidar realizar un dump de las bases de datos antes de realizar cualquier operación en MySQL ya que podemos ocasionar pérdidas en un entorno de producción.