Aggiornamento PostgreSQL 18 per chi ospita in proprio

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

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

  1. Avvia un backup tramite 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. 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
  1. 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

  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 - la pagina di manutenzione non dovrebbe più essere caricata se hai impostato un timer di ricarica.
  2. Rimuovi la worker route di Cloudflare verso la pagina di manutenzione (non vogliamo raggiungere il limite giornaliero di 100.000 richieste!)
  3. Elimina i vecchi dati pg18 per recuperare spazio su disco:
rm -fr /var/discourse/shared/data/postgres_data_old/

fatto! :partying_face: :clinking_beer_mugs:

7 Mi Piace