Porque tenho tantos arquivos de binary-log no meu banco de dados MySQL ? Eles estão tomando uma quantidade grande de espaço e eu preciso me livrar deles!
Não tão rápido ! Primeiro você precisa saber quais são os logs binários e para o que eles são usados:
O que são eles?
O log binário contém "eventos" que descrevem as alterações de banco de dados, tais como operações de criação de tabelas ou alterações aos dados da tabela.
O que eles servem para?
Replicação - o log binário em um servidor de replicação Master fornece um registro das alterações de dados a serem enviados para servidores escravos. O servidor mestre envia os eventos contidos em seu log binário para seus Slave, que executam esses eventos para fazer as mesmas alterações de dados que foram feitas no Master.
Operações de recuperação -Exige o uso dos logs binários. Após que um backup foi restaurado, os eventos no log binário que foram registrados após o backup foi feito são re-executado. Estes eventos trazem bancos de dados atualizados a partir do ponto do backup.
A execução de um servidor com o log binário habilitado torna o desempenho um pouco mais lento. No entanto, os benefícios do log binário em que lhe permite configurar a replicação e para operações de restauração em geral superam este decréscimo desempenho menor.
Por isso, se você está no banco de dados MySQL produção logs binários são muito importantes.
Não é colocar para falar sobre os logs binários, mas agora vamos ver como podemos logs antigos com segurança limpar.
Vamos começar listando nossos logs binários:
mysql> SHOW BINARY LOGS;
+---------------+-----------+
| Log_name | File_size |
+---------------+-----------+
| bih001.000075 | 105819784 |
| bih001.000076 | 104881533 |
| bih001.000077 | 105052269 |
| bih001.000078 | 104876835 |
| bih001.000079 | 105226559 |
| bih001.000080 | 104857777 |
| bih001.000081 | 104857924 |
| bih001.000082 | 105398762 |
| bih001.000083 | 104990674 |
| bih001.000084 | 105127042 |
| bih001.000085 | 105057967 |
| bih001.000086 | 109000834 |
+---------------+-----------+
26 rows in set (0.04 sec)
mysql> PURGE BINARY LOGS TO 'bih001.000075';
Query OK, 0 rows affected (0.00 sec)
mysql> PURGE BINARY LOGS BEFORE '2015-01-30 22:46:26';
Query OK, 0 rows affected (0.88 sec)
mysql> SET GLOBAL expire_logs_days = 5;
--Certifique-se também que adicionou ao seu arquivo conf (my.cnf) para que na próxima vez que a instância reinicia ela não vai perder o parâmetro configurado.
[mysqld]
expire-logs-days=5