Christophe Casalegno

Mysql : comment purger les logs binaires lorsqu’il n’y a plus de place sur le disque ?

Lorsque vous avez besoin de purger des logs binaires sur un serveur MySQL, vous avez simplement besoin de vous connecter sur le serveur et d’utiliser la commande PURGE BINARY LOGS :

 mysql> PURGE BINARY LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'; 

Par exemple :

 mysql> PURGE BINARY LOGS BEFORE '2017-03-02 22:46:26'; 

Cette commande va purger tous les logs binaires datant d’avant la date indiquée. L’autre méthode consiste par exemple à se base sur le nom du fichier log. Par exemple :

 mysql> PURGE BINARY LOGS TO 'ns30XXXX-bin.009836';

Mais parfois, vous pouvez être confronté à un problème plus grave : il n’y a plus de place sur le disque, et vous n’avez pas la possibilité de libérer de l’espace autrement. Dans ce cas, la solution est d’effacer manuellement les fichiers de logs binaires. Nous allons prendre comme postulat que vos fichiers logs se trouvent dans votre /var/lib/mysql : vous pouvez alors utiliser l’astuce suivante pour résoudre votre problème :

Etape 1 : arrêter MySQL (la syntaxe peut dépendre de la version de votre distribution linux). Exemple :

 service mysql stop 

 
Etape 2 : compter et effacer 50% des fichiers logs binaires pour libérer de l’espace et retirez les de l’index des logs binaires MySQL

 cd /var/lib/mysql && a=`ls |grep -v relay |grep bin.index` && b=`wc -l <$a` ; c=`echo $(($b/2))` |xargs -l rm ; echo $c | head -n $b $a |cut -d "/" -f2 && sed 1,$c\d $a -i 

 
Etape 3 : Démarrer MySQL

 service mysql start 

 
Etape 4 : vérifiez qu’il n’y a pas de problèmes

mysql> SHOW BINARY LOGS;

 
Si vous pyez un fichier avec une valeur à 0 c’est qu’il y a un problème : vous devrez arrêter MySQL à nouveau et retirer le fichier de l’index manuellement. Si tout est ok vous pouvez maintenant utiliser la commande « PURGE BINARY LOGS BEFORE » de manière standard pour effacer davantage de logs si besoin.
 
Enjoy !
 

Christophe Casalegno
​Vous pouvez me suivre sur : Twitter | Facebook | Linkedin | Telegram | Youtube

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *