Estava migrando nossa instância do Discourse de um servidor para outro e me deparei com um problema interessante…
Usamos o S3 para armazenar uploads do fórum. Habilitamos isso há vários anos, portanto, não é algo que introduzimos nesta migração.
Depois de corrigir alguns outros problemas, consegui importar o backup. Mas falhou em uma etapa relacionada ao S3 com o seguinte:
Atualizando os URLs no banco de dados...
Removendo imagens otimizadas antigas...
Marcando todos os posts contendo lightboxes para rebake...
72038 posts foram marcados para rebake
EXCEÇÃO: 257 posts não foram remapeados para o novo URL de upload do S3. A migração do S3 falhou para o banco de dados 'default'.
Depois de investigar um pouco, consegui rastrear o problema até esta linha:
Então, fui ao console do rails e consegui replicar as consultas com o seguinte:
Então, fui a esses posts específicos, e eles faziam parte dos Relatórios de Desempenho (a captura de tela é de depois que executei um script de encontrar e substituir):
Aparentemente, essa verificação recupera qualquer post contendo /uploads/default/original no campo cooked, apesar de não ser um ativo legítimo. Neste caso, /uploads/default/original foi usado como “texto simples”, portanto, não foi perdido durante o trabalho de migração.
Eu consegui restaurá-lo completamente apenas substituindo o texto nessas postagens para não corresponder ao filtro. Não foi um problema para mim, mas estou mencionando caso alguém enfrente o mesmo problema, pois talvez valha a pena corrigi-lo no Discourse.
Tenho quase certeza de que encontrei isso também ao tentar restaurar um backup e criei o backup com “incluir uploads” DESATIVADO. Há algo mais que estou perdendo na restauração apenas do banco de dados?
Sou novo no Discourse, então tentarei descobrir como contornar isso, mas isso parece ser de maior prioridade se o backup/restauração não estiver funcionando corretamente para usuários que têm buckets S3 como armazenamento de uploads.
Aqui estão meus arquivos de log da restauração tentada.
Atualização sobre minha situação específica… Eu ainda tinha arquivos em /var/discourse/shared/standalone/uploads, mesmo depois de ter mudado para S3 para armazenamento. Assim que excluí o diretório ‘default’ nesse diretório de uploads, recriei um backup e ele criou com sucesso um backup apenas do banco de dados (…sql.gz).
Por algum motivo (no meu caso), se houver arquivos nesse diretório, ele ignora a configuração para NÃO incluir uploads no backup e os cria de qualquer maneira.
Me avisem se precisarem de mais informações ou esclarecimentos sobre minha situação. Parece que é talvez um pouco diferente da situação do OP (autor original).
De qualquer forma, consegui contornar o problema e agora consigo restaurar com sucesso.