Backups locais não são excluídos após serem carregados para o Amazon S3

Meus backups continuam se acumulando em /var/discourse/shared/standalone/backups/default, mesmo que sejam enviados para o Amazon S3.

Aqui está a minha configuração do Discourse:

Backups do Discourse:

Backups no bucket S3:

E o conteúdo de /var/discourse/shared/standalone/backups/default:

Isso vem acontecendo há muito tempo — tenho um lembrete mensal no meu calendário para excluir esses arquivos remanescentes. Os logs de backup estão vazios: “Ainda não há logs…” e nada nos logs de erro aponta para problemas com o Amazon S3.

O Discourse é atualizado regularmente e atualmente está na versão 2.9.0.beta14.

Esta é uma instalação padrão, certo? Existe a chance de o sistema operacional (ou outra coisa) estar encerrando o processo de backup durante o upload? Porque mesmo quando há uma falha no backup, o arquivo local deve ser excluído ao final do processo.

1 curtida

Sim, instalação padrão em um droplet DigitalOcean, Ubuntu 16.04.7 LTS. Onde estaria o log relevante?

Usei um serviço compatível com S3 por um tempo que às vezes resultava em backups sendo deixados no disco local, mas era intermitente.
Você olharia em /var/discourse/shared/standalone/logs/rails/production.log. Ele apenas executaria um backup de linha de comando e veria se ele tem o comportamento de “and”.

3 curtidas

Os logs de produção só voltam uma semana, então os backups mais antigos “não excluídos” saem dessa faixa, mas ficarei de olho nos futuros. A única entrada de erro de backup foi esta no log de 30/11:

Started GET \"/.env.backup\" for 3.236.147.46 at 2022-11-29 19:15:57 +0000
ActionController::RoutingError (No route matches [GET] \"/.env.backup\")

Vejo um novo backup não excluído em /var/discourse/shared/standalone/backups/default, mas nada no production.log. Nada no production_errors.log também. Onde mais eu poderia procurar?

P.S. Executei um backup da CLI e o backup foi removido com sucesso - tentarei isso mais algumas vezes para ver se consigo um erro lá.

1 curtida

Não estou tendo sucesso em reproduzir o backup local não excluído via CLI, mas ele continua acontecendo uma ou duas vezes por semana durante o backup noturno. Também não vejo nenhuma saída do log de backup em production.log. Você tem certeza de que é para lá que ele é escrito, @pfaffman?

Eu acho que deveria estar. Quando tive um problema semelhante com algum outro serviço S3, não consegui encontrar erros nem no Discourse nem no serviço deles. E desisti e mudei para algo diferente. Mas você está usando AWS, S3, o verdadeiro negócio, então estou bastante surpreso.

Tentei procurar assim:
grep -r "Output file is stored on S3" /var/discourse
como essa frase é a última linha da saída de backup da CLI, mas nada foi encontrado.

Há alguma chance de o servidor reiniciar devido a atualizações automáticas do sistema operacional do host? Elas podem ocorrer enquanto o upload para o S3 está em andamento. Há algo nos logs do seu sistema operacional? Talvez redefinir a configuração do site backup_time_of_day para o valor padrão ou para um horário diferente e ver se o problema desaparece.

1 curtida

Não, o tempo de atividade atual é de 36 dias. Eu suspeitei que o backup do droplet DigitalOcean rodando em paralelo poderia ter sido a causa, mas isso acontece uma vez por semana e meus backups não excluídos ocorrem com mais frequência do que isso.

Tentarei um backup_time_of_day diferente. Estava definido para 2:00 UTC, então veremos se o padrão 3:30 UTC fará alguma diferença.

2 curtidas

OOOOH! Essa é boa. Isso explicaria. Aposto que é isso. E o meio da noite é um bom momento para backups e reinicializações. Não explica bem por que o problema desapareceu quando mudei para um serviço diferente, mas talvez minha sorte tenha mudado, ou o que quer que eu tenha mudado era mais rápido ou algo assim.

Ah. Droga. :crying_cat_face:

Dezesseis dias depois, parece que essa foi a solução — não há mais backups não excluídos. Não sei o que estava causando o conflito, mas agora é irrelevante.

2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.