Acabei de fazer a atualização para o PostgreSQL 18 em uma instalação padrão e em um container duplo sem nenhum problema. Obrigado mais uma vez ao @chrisr e à equipe pelas instruções fáceis de seguir.
Para uma configuração de container duplo atrás do CDN do Cloudflare com buckets de upload/backup no R2, os passos que usei foram os seguintes:
Passo 1: limpeza do disco
# remove todos os dados não utilizados do docker
docker system prune -a -f
# limpa logs antigos e cache do apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# verifica o tamanho do banco de dados
du -sh /var/discourse/shared/data/postgres_data
# verifica o espaço livre disponível
df -h -x tmpfs -x devtmpfs
Passo 2: manutenção e backup
- edite uma página de manutenção do Cloudflare para informar sobre uma atualização de manutenção do sistema de 15-20 minutos e defina um temporizador de recarregamento (pode não levar tanto tempo, mas é melhor prevenir!). Ative uma rota de worker do Cloudflare para exibir a página de manutenção.
- acione um backup via linha de comando:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- faça login no painel do Cloudflare R2 e verifique a pasta de backup para confirmar que o arquivo de backup foi enviado com sucesso
Passo 3: desligamento seguro
- pare o container web primeiro para encerrar quaisquer conexões ativas, depois pare o container do banco de dados:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- verifique se o PostgreSQL foi desligado corretamente:
tail -n 20 shared/data/log/var-log/postgres/current
Passo 4: reconstrução da atualização
execute os seguintes comandos nesta ordem:
./launcher rebuild data # despeja, migra e restaura o postgresql 18
./launcher rebuild data # reconstrói o container do banco de dados
./launcher rebuild web_only # reconstrói o aplicativo web
Passo 5: otimização e limpeza
- gere as estatísticas de tabela pg18 ausentes, caso contrário o fórum ficará mais lento do que o normal:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
- teste o fórum para garantir que tudo esteja funcionando - a página de manutenção não deve mais estar carregando se você tiver um temporizador de recarregamento definido nela.
- remova a rota do worker do Cloudflare para a página de manutenção (não queremos atingir o limite diário de 100.000!)
- exclua os dados antigos do pg18 para recuperar esse espaço em disco:
rm -fr /var/discourse/shared/data/postgres_data_old/
concluído!
![]()
