Aggiornamento PostgreSQL 18 per chi ospita in proprio

Ti consigliamo di testare la procedura, poiché non è qualcosa che supportiamo direttamente, ma probabilmente ti basterà indicare che desideri eseguire l’aggiornamento e tutto funzionerà correttamente.

Ho appena effettuato l’aggiornamento a PostgreSQL 18 sia per un’installazione standard che per una configurazione a doppio contenitore senza alcun problema. Grazie ancora a @chrisr e al team per le istruzioni semplici e chiare.

Per una configurazione a doppio contenitore dietro Cloudflare CDN con bucket di upload/backup R2, i passaggi che ho seguito sono stati i seguenti:

Passaggio 1: pulizia del disco

# elimina tutti i dati Docker non utilizzati
docker system prune -a -f
# pulisce i vecchi log e la cache di apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# controlla le dimensioni del database
du -sh /var/discourse/shared/data/postgres_data
# controlla lo spazio libero disponibile
df -h -x tmpfs -x devtmpfs

Passaggio 2: manutenzione e backup

  1. modifica una pagina di manutenzione di Cloudflare per indicare un aggiornamento di manutenzione del sistema di 15-20 minuti e imposta un timer di ricaricamento (potrebbe non volerci così tanto tempo, ma è meglio essere prudenti!). Attiva una route del worker di Cloudflare per mostrare la pagina di manutenzione.

  1. avvia un backup da riga di comando:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
  1. accedi alla dashboard di Cloudflare R2 e controlla la cartella dei backup per confermare che il file di backup sia stato caricato con successo

Passaggio 3: arresto sicuro

  1. ferma prima il contenitore web per chiudere tutte le connessioni attive, quindi ferma il contenitore del database:
cd /var/discourse
./launcher stop web_only
./launcher stop data
  1. verifica che PostgreSQL si sia arrestato correttamente:
tail -n 20 shared/data/log/var-log/postgres/current

Passaggio 4: rebuild dell’aggiornamento

esegui i seguenti comandi in questo ordine:

./launcher rebuild data # esporta, migra e ripristina PostgreSQL 18
./launcher rebuild data # rebuild del contenitore del database
./launcher rebuild web_only # rebuild dell'applicazione web

Passaggio 5: ottimizzazione e pulizia

  1. genera le statistiche mancanti delle tabelle pg18, altrimenti il forum sarà più lento del normale:
docker exec -u postgres data /usr/lib/postgresql/18/bin/vacuumdb -d discourse --analyze-in-stages
  1. testa il forum per assicurarti che tutto funzioni correttamente - la pagina di manutenzione non dovrebbe più essere visualizzata se hai impostato un timer di ricaricamento.
  2. rimuovi la route del worker di Cloudflare alla pagina di manutenzione (non vogliamo raggiungere il limite giornaliero di 100.000 richieste!)
  3. elimina i vecchi dati pg18 per recuperare quello spazio su disco:
rm -fr /var/discourse/shared/data/postgres_data_old/

fatto! :partying_face: :clinking_beer_mugs:

3 Mi Piace