Por favor, não os apague apenas no SO.
Você precisa deixar o mysqld fazer isso por você. Aqui está como o mysqld gerencia:
O arquivo mysql-bin.[index]
mantém uma lista de todos os logs binários que o mysqld gerou e girou automaticamente. Os mecanismos para limpar os binlogs em conjunto com mysql-bin.[index]
são:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Isso limpará todos os logs binários antes do log do bin ou do carimbo de data / hora que você acabou de especificar.
Por exemplo, se você executar
PURGE BINARY LOGS TO 'mysql-bin.000223';
isso apagará todos os logs binários antes mysql-bin.000223
.
Se você correr
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
isso apagará todos os logs binários antes da meia-noite, 3 dias atrás.
Se você deseja que o binlog seja rotacionado automaticamente e fique por três dias, basta definir o seguinte:
mysql> SET GLOBAL expire_logs_days = 3;
adicione isso a /etc/my.cnf
[mysqld]
expire_logs_days=3
e o mysqld irá deletá-los para você
MOSTRAR ESTADO DO ESCRAVO \ G
Isso é crítico. Ao executar SHOW SLAVE STATUS\G
, você verá dois logs binários do Master:
Master_Log_File
Relay_Master_Log_File
Quando a replicação tem pouco ou nenhum atraso, eles geralmente têm o mesmo valor. Quando há muito atraso na replicação, esses valores são diferentes. Apenas para simplificar, escolha o que Relay_Master_Log_File
for e volte ao Mestre e execute
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
Dessa forma, a replicação não é interrompida.
[mysqld] expire_logs_days=3
(e você deve incluir a[mysqld]
seçãoSET GLOBAL expire_logs_days = 3;
do cliente mysql não os aceitará. Exemplo no MySQL Docs: dev.mysql.com/doc/refman/5.5/en/mysqld-option-tables.htmlmysql> SET GLOBAL expire_logs_days = 3;
eexpire-logs-days=3
in/etc/my.cnf
.. Eles são iguais? Isso é redundante ou não? Ou, é importante executarSET GLOBAL...
e adicionarexpire-logs-days=..
? Obrigado.PURGE BINARY LOGS BEFORE DATE(NOW());
por que não há padrões sãos para isso? Em nenhum lugar, nunca a explicitamente alterou o tamanho do arquivo de log para uma quantidade gigantesca. Eu tinha 10,0 GB de arquivos de log. Depois de executar este comando, o tamanho da minha pasta mysql.bin diminuiu para 1,6 GB.Isso realmente depende da sua estratégia de backup. Um dos principais motivos para manter os logs binários atualizados é restaurar o banco de dados para um 'momento específico'. Se o seu banco de dados travar e exigir restauração, você restauraria o backup completo mais recente e, em seguida, reproduziria os logs binários começando com a posição do backup completo.
Portanto, se você fizer um backup completo todos os dias e tiver 7 dias em logs binários, é provável que você possa excluir os últimos 4 a 6 dias em logs binários. Você pode controlar quantos dias de logs binários são mantidos com a
expire_logs_days
configuração.Você pode excluir os logs binários de que não precisa, primeiro vendo qual é o log mais antigo que deseja manter:
e depois no mysql:
fonte
Tente o seguinte:
como o documento dizia:
Isso excluirá todos os arquivos de log binário relacionados, que podem não ser o que você deseja.
fonte