MySQL : Purge des binlogs

 dans Linux, Outils, Serveur

 

Si vous avez mis en place une belle instance MySLQL et que celle-ci consomme beaucoup sur votre partition qui lui ai dédié, pensez dans un premier temps à vos fichiers binlogs…. Il est toujours bien de savoir configurer son instance MySQL.

Pour les personnes qui ne connaissent pas ce qu’est un fichier binlog dans MySQL, sachez qu’un fichier binlog comporte toutes les requêtes dans un format binaire qui modifient vos données. Ceci est principalement utilisé par une réplication, ou bien des réplications aussi.

Tout purger …

Bon c’est une opération délicate mais vous en serez pour seul responsable si vous faites des bétises 🙂

mysql > RESET MASTER; ( permet de tout purger )
mysql > PURGE MASTER LOGS; ( seulement certains d'entre eux )

 

Purger seulement quelques binlogs

Je pense de loin que cette solution est la plus raisonnable et la plus correcte. Imaginons maintenant que vous avez pas loin de 200 fichiers de binlogs de chacun 100Mo…. Oui sa pue, surtout si vous arrivez à la saturation de votre partition dédié.

Avec cette commande dans MySQL, nous allons purger tous les fichiers binlogs de 0001 au fichier 0060 et qui nous permettra de gagné de l’espace :

mysql > PURGE BINARY LOGS TO 'mysql-bin.0061';

Si vous n’êtes pas idiot, il faut bien mettre le fichier binlog qui ce trouve au dessus, soit le 0061. Celui-ci n’est pas pris en compte lors de la purge et donc il ne sera pas effacé.

 

Purge par rapport à une date J-5

Dans notre configuration par exemple, nous avons une rétention à 7 jours mais exceptionnellement nous allons les purger à 5 jours afin d’avoir de la place.

C’est pareil, ceci reste simple avec cette commande :

mysql > PURGE BINARY LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 5 DAY);

 

Toutes ces manipulations effecacent les binlogs listés dans l’index de logs, il ne faut pas seulement faire un « rm -f » sur ces fichiers pour les supprimer.

 

Configuration du my.cnf

Voici ma configuration mise en place :

log-bin            =   /home/databases/mysql/bin-log.bin
expire_logs_days   =   4 
max_binlog_size    =   100M

 

Pour la suite, si vous avez besoin de plus de détails et d’informations, je vous conseil directement de lire la documentation de MySQL sur le site officiel 🙂

Articles recommandés