Ho appena eseguito l’aggiornamento a PostgreSQL 18 per un’installazione standard e una configurazione dual container senza alcun problema. Grazie ancora a @chrisr e al team per le istruzioni semplici.
Per una configurazione dual container dietro Cloudflare CDN con bucket R2 per upload e backup, i passaggi che ho utilizzato sono i seguenti:
Passaggio 1: pulizia del disco
# elimina tutti i dati docker non utilizzati
docker system prune -a -f
# svuota vecchi log e cache apt
journalctl --vacuum-time=2d
apt-get clean
apt-get autoremove -y
# verifica la dimensione del database
du -sh /var/discourse/shared/data/postgres_data*
# verifica lo spazio libero disponibile
df -h -x tmpfs -x devtmpfs
Passaggio 2: manutenzione e backup
- Modifica una pagina di manutenzione di Cloudflare per indicare un aggiornamento di manutenzione di sistema di 15-20 minuti (potrebbe non richiedere così tanto tempo, ma è meglio essere prudenti!) e imposta un timer di ricarica di circa 30 secondi. Attiva una worker route di Cloudflare per mostrare la pagina di manutenzione.
- Avvia un backup tramite riga di comando:
cd /var/discourse
./launcher enter web_only
discourse backup
exit
- 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
- Arresta prima il contenitore web per terminare le connessioni attive, quindi arresta il contenitore del database:
cd /var/discourse
./launcher stop web_only
./launcher stop data
- Verifica che PostgreSQL si sia arrestato correttamente:
tail -n 20 shared/data/log/var-log/postgres/current
Passaggio 4: rebuild di aggiornamento
Esegui i seguenti comandi in questo ordine:
./launcher rebuild data # dump, migrazione e ripristino di postgresql 18
./launcher rebuild data # rebuild del contenitore del database
./launcher rebuild web_only # rebuild dell'app web
Passaggio 5: ottimizzazione e pulizia
- 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
- Testa il forum per assicurarti che tutto funzioni - la pagina di manutenzione non dovrebbe più essere caricata se hai impostato un timer di ricarica.
- Rimuovi la worker route di Cloudflare verso la pagina di manutenzione (non vogliamo raggiungere il limite giornaliero di 100.000 richieste!)
- Elimina i vecchi dati pg18 per recuperare spazio su disco:
rm -fr /var/discourse/shared/data/postgres_data_old/
fatto!
![]()
