Descrição do contexto
Uma distribuição Linux contém redis-server 6.0.5. O Redis está configurado para usar persistência AOF
(Append Only File) e a RDB
persistência está desabilitada.
Na inicialização, um script solicita ao servidor redis a execução do BGREWRITEAOF
comando. Esta solicitação inicia um processo (com PID= <pid>
) que cria um arquivo temp-rewriteaof-<pid>.aof
no mesmo caminho de dados do Redis onde está escrito o appendonly.aof
arquivo.
Este é o funcionamento normal do BGREWRITEAOF
comando. A utilidade deste comando é comprovada pelo que está escrito neste post .
Qual é o problema
O problema surge quando o sistema é desligado enquanto o BGREWRITEAOF
não está concluído. Nesse caso, o arquivo temp-rewriteaof-<pid>.aof
ainda está presente na reinicialização e ocupa espaço no disco.
Como o sistema pode ser desligado a cada momento, corro o risco de que meu disco fique cheio.
Na minha opinião, a solução exclusiva para esse problema é criar um script que remova todos os arquivos temp-rewriteaof-*.aof
da pasta de dados do Redis.
Pergunta
Alguém conhece uma solução melhor? O Redis tem um procedimento/comando limpo para resolver este problema?
O servidor Redis não possui métodos sofisticados de gerenciamento de espaço em disco no servidor em que está sendo executado. Ele gerencia seus próprios arquivos de instantâneo RDB e o arquivo AOF (como você descreveu). No entanto, gerenciar arquivos que foram criados por um processo anterior interrompido por uma parada do computador não é algo que o Redis faz.
Eu sugiro que você adicione uma rotina ao script de inicialização que você escreveu que envia o
BGREWRITEAOF
comando para o servidor Redis. A rotina limparia qualquer arquivo AOF temporário obsoleto que foi deixado para trás pela parada anterior do servidor. É um bom lugar para essa rotina - o script já está preocupado com o gerenciamento de arquivos AOF e o tempo de inicialização é um momento apropriado para se preparar para as próximas horas/dias do computador em execução (e consumindo espaço em disco) limpando arquivos obsoletos.