Atualização do PostgreSQL 18 para self-hosters

Recomendamos que você teste o processo, já que não é algo que oferecemos suporte, mas provavelmente tudo o que você precisará fazer é informar que deseja fazer a atualização e tudo ficará bem.

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

  1. 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.

  1. acione um backup via linha de comando:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. 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

  1. 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
  1. 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

  1. 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
  1. 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.
  2. 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!)
  3. exclua os dados antigos do pg18 para recuperar esse espaço em disco:
rm -fr /var/discourse/shared/data/postgres_data_old/

concluído! :partying_face: :clinking_beer_mugs:

3 curtidas