Como se livrar do mysql binlogs?

5

Eu tenho usado o mysql para desenvolvimento. Eu não uso replicação, mas eu acho que eu tinha o log binário ativado há algum tempo em um dos meus computadores anteriores e eu inconscientemente acumulei centenas de arquivos de log binários.

Estou usando o Linux agora e preciso começar a usar o log binário. Quando tento habilitar o log binário no servidor my.cnf-mysql não é iniciado e é isso que eu encontro no log de erros:

  1 110314 14:39:40 [Note] Plugin 'FEDERATED' is disabled.                                                                                                                                                                                                                        
  2 110314 14:39:40  InnoDB: Started; log sequence number 0 36669358
  3 ^G/usr/sbin/mysqld: File '.\mysql-bin.000179' not found (Errcode: 2)
  4 110314 14:39:40 [ERROR] Failed to open log (file '.\mysql-bin.000179', errno 2)
  5 110314 14:39:40 [ERROR] Could not open log file
  6 110314 14:39:40 [ERROR] Can't init tc log
  7 110314 14:39:40 [ERROR] Aborting
  8 
  9 110314 14:39:40  InnoDB: Starting shutdown.

então - eu suponho - eu só tenho que apagar antigos logs binários - certo? Posso apenas apagar todos os mysql-bin. arquivos? Eu teria que limpar o arquivo mysql-bin.index também?

Obrigado!

    
por Stann 14.03.2011 / 20:00

1 resposta

3

Edit: Opa, eu interpretei mal a pergunta. Sim, certifique-se de que bin_log esteja comentado. Reiniciar. remova todos os logs de bin e o índice de log de bin. Em seguida, adicione bin_log de volta ao seu my.cnf e reinicie. Deixarei minha resposta original porque contém algumas coisas decentes, especialmente sob o nº 1.

Original: Você tem algumas opções aqui. No entanto, nunca é uma boa idéia excluir logs da pasta por meio do sistema de arquivos, a menos que o banco de dados tenha sido configurado para não gerá-los por mais tempo.

  1. Mantenha os registros da lixeira, mas expire-os ocasionalmente. Adicione expire_logs_days = 3 ao seu my.cnf e todos os servidores Mysql devem ter essa configuração se gerarem logs bin. Eu uso 10 dias nos meus servidores. Você pode querer adicionar max_binlog_size = 100M ou algum outro tamanho menor que o padrão de 1G em um servidor de desenvolvimento. O Mysql só remove bin_logs quando atinge os maximos dias e tamanho max.

  2. remova completamente os registros bin. Comente o log_bin no seu my.cnf. Reinicie o Mysql porque log_bin não é dinâmico. Agora você pode entrar e excluir os logs da lixeira através do sistema de arquivos.

  3. Limpe bin_logs até um certo ponto. Faça o seguinte na linha de comando do mysql. Você pode mudar o dia para o que funciona para você.

    mysql > PURGAR REGISTOS BINÁRIOS ANTES DE DATE_SUB (NOW (), INTERVAL 7 DAY);

Na maioria dos casos, eu recomendaria o número 1, porque às vezes é útil ter alguns dias de registros de caixa.

    
por 14.03.2011 / 20:16