dimecres, 17 d’abril de 2013

Binary logs purge

Els binary logs contenen tota la informació referent a modificacions de la base de dades (Sentencies INSERT, UPDATE, DELETE). També s'utilitzen per a fer recuperar la base de dades en un punt concret  en el temps. Si disposem de un backup i els binary logs corresponents som capaços de recuperar la base de dades a un punt en concret.

Els binary logs van creixent en el temps, per tant es important tenir una politica de retenció de binary logs per a que no s'acumulen i acaben per esgotar l'espai del disc.

Per a eliminar tots els binary logs mes antics dels ultims 7 dies podem utilitzar una de les dues següents sentencies. Si volem utilitzar bash podem fer el següent:
echo "PURGE BINARY LOGS \ 
BEFORE '`date --date='7 days ago' +'%F %T'`';" | mysql
Si volem utilitzar la sentencia propia de MySQL, millor realitzar el següent:
mysql -uroot -e "PURGE BINARY LOGS \
BEFORE DATE_SUB( NOW( ), INTERVAL 7 DAY);"
També es possible eliminar tots els binary logs anteriors a una data concreta:
mysql PURGE MASTER LOGS BEFORE '2013-01-01 00:00:00';
A l'hora de definir una politica de retenció podem utilitzar el cron, pero no es la opció mes elegant ni correcta. La opció mes correcta i més neta passa per editar la configuració de mysql my.cnf i configurar el periode de retenció.
...
expire_logs_days = 7
...

ENLLAÇOS:
http://systems.takizo.com/2009/08/23/how-to-remove-mysql-binary-log/
http://dev.mysql.com/doc/refman/5.0/en/purge-binary-logs.html