Atualização do PostgreSQL 18 para self-hosters

acabei de fazer o PostgreSQL 18 para uma instalação padrão e uma instalação com dois contêineres sem nenhum problema. obrigado novamente @chrisr e equipe pelas instruções fáceis.

para uma configuração com dois contêineres atrás do Cloudflare CDN com buckets de upload/backup no R2, os passos que usei foram os seguintes:

Passo 1: limpeza do disco

# remove todos os dados docker não utilizados
docker system prune -a -f
# limpa logs antigos e o 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 novo 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 dizer que haverá manutenção do sistema por 15-20 minutos (pode não demorar tanto, mas é melhor estar preparado!) e defina um timer de recarregamento de 30 segundos ou mais. ative uma rota de worker do Cloudflare para exibir a página de manutenção.

  1. dispare 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 se o arquivo de backup foi enviado com sucesso

Passo 3: desligamento seguro

  1. pare primeiro o contêiner web para encerrar conexões ativas, depois pare o contêiner 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ções de upgrade

execute os seguintes comandos nesta ordem:

./launcher rebuild data # faz dump, migra e restaura o postgresql 18
./launcher rebuild data # reconstrói o contêiner 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 do pg18 que estão faltando, 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 carregar se você tiver um timer 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/

pronto! :partying_face: :clinking_beer_mugs:

7 curtidas