O MySQL por padrão possui uma forma de recuperar os arquivos caso tenha acontecido um desligamento inesperado, ele faz isso utilizando a estrutura dos arquivos binlog, que são criados na inicialização do MySQL de forma sequencial da seguinte forma binlog.0000N e escritos no binlog.index para que o sistema verifique qual arquivo é o atual.

Este arquivos são conhecidos como logs binários ou binlog, que são arquivos que guardam de forma sequencial e cronológica todas as operações que modificam dados e estruturas das tabelas do MySQL. Esta função já vem habilitada por padrão no MySQL.

Cada operação de escrita no banco é escrita também no arquivo do log binário gerando uma concorrência de I/O com os dados do banco.

Estes logs binários são rotacionados quando chegam ao tamanho especificado na variável max_binlog_size, que por padrão é 1GB. Durante a rotação, o MySQL acrescenta mais 1 ao contador do prefixo gerando um novo arquivo, por exemplo, binlog.000002.

Como estes arquivos são gerados automaticamente pelo banco de dados a cada operação de escrita, acaba ocupando um grande espaço em disco, as vezes lotando o disco e prejudicando o funcionamento do MySQL.

Muitos administradores quando tem este problema de superlotação do disco acabam executando o comando abaixo e apagando todos os arquivos binlog.00*

O problema é quando reiniciam o MySQL e aparece a seguinte mensagem:

Isso acontece porque na inicialização o MySQL verifica o arquivo binlog.index para verificar qual o último arquivo existem do binlog.0000N e como não encontra ocorre este erro na inicialização.

Para solucionar o problema abra o arquivo binlog.index e apague todos as linhas existentes ou execute o comando abaixo.

Reinicie o banco de dados, desta forma o MySQL irá reiniciar sem problemas.

O MySQL não expurga os logs binários automaticamente, isso deve ser feito através das variáveis expire_logs_days e binlog_expire_logs_seconds no arquivo my.cnf.

Compartilhe sempre conhecimento, neste processo todos ganham!