[PT-BR] Rotacionando os logs de erro e consultas lentas do MySQL com logrotate

Banco de dados geram toneladas de logs, e é essencial gerenciá-los corretamente. Os logs ajudam os DBAs a entender o que está acontecendo nos bastidores, rastrear erros e otimizar o desempenho de consultas lentas. No entanto, esses logs podem se tornar um problema ao longo do tempo, especialmente se consumirem muito espaço em disco e não forem gerenciados adequadamente.

Por que rotacionar logs?

Os logs são como o diário de um sistema; eles acompanham tudo. Os logs podem crescer bastante com o tempo e se tornar um problema para o espaço em disco (especialmente ao usar um log_error_verbosity maior ou um long_query_time mais baixo). Sem falar que, fazer uma pesquisa em um arquivo de logs enorme pode ser uma tarefa tediosa. É por isso que rotacionar os logs se torna essencial, especialmente em bancos de dados como o MySQL.

Configurando o logrotate

Embora o MySQL cuide de alguns de seus logs, certos logs, como os de erro e consultas lentas, não são rotacionados automaticamente. Felizmente, na maioria das distribuições Linux, existe uma ferramenta chamada logrotate projetada especificamente para essa tarefa.

Configurar o logrotate para o MySQL é relativamente simples. Aqui está um guia passo a passo:

  1. Crie um Arquivo de Configuração: Crie um arquivo de configuração específico para o MySQL. Use o comando:

  1. Adicione o Conteúdo de Configuração: Dentro deste arquivo, adicione o seguinte conteúdo:

Nota: Certifique-se de atualizar os nomes dos logs de erro do MySQL e de consultas lentas na primeira linha de acordo com a configuração do seu servidor. Você pode verificar seus caminhos de logs com a consulta:

  1. Entendendo a Configuração:
  • compress: Comprime os logs rotacionados para economizar espaço.
  • create 660 mysql mysql: Garante que os novos arquivos de logs tenham as permissões e propriedade corretas.
  • size 1G: Rotaciona o log uma vez que ele atinja 1 Gigabyte em tamanho.
  • dateext: Adiciona uma extensão de data ao nome do arquivo de log rotacionado.
  • notifempty: Não rotacione o arquivo de log se ele estiver vazio.
  • missingok: Se o arquivo de log estiver faltando, passe para o próximo passo sem emitir uma mensagem de erro.
  • sharedscripts: informa ao logrotate para verificar todos os logs antes de executar o script postrotate. O script é executado apenas uma vez se um ou ambos os logs forem rotacionados. Se nenhum dos logs for rotacionado, o script postrotate não é executado.
  • postrotate: Comandos para executar após a rotação do log.
  • rotate 30: Mantém 30 arquivos de logs rotacionados antes de excluir o mais antigo.
  1. Ative e Teste: Depois de salvar e fechar o arquivo de configuração, o logrotate irá pegá-lo automaticamente durante sua próxima execução. Você também pode forçar uma execução para testar sua configuração:

  1. Leitura Adicional: Como todas as ferramentas, há muito mais no logrotate do que a configuração básica. A documentação oferece um mergulho profundo: [Documentação do Logrotate]

Em conclusão, embora os logs sejam inestimáveis para manter e solucionar problemas dos sistemas, gerenciá-los eficientemente garante que seus sistemas funcionem sem problemas. O logrotate oferece uma solução prática para manter seus logs do MySQL em ordem.

Written by

Vinicius Grippa

Writes this blog. Mostly about databases. Boring on purpose.

More about me →

Comments

1 comment · Moderated · civil & on-topic

Add a comment

Your email address is never published. * required

Subscribe · Posted when ready

A quiet, technical email about databases.

One post per send, corrections when I’m wrong, nothing else. No social-media cross-posts. No “what we learned.”

Unsubscribe with any reply