Aggiornamento fallito: PostgreSQL versione 13 ... non compatibile con ... versione 10.12

Ho un piccolo forum, themooster.net, basato su Discourse, che non aggiornavo da un paio di mesi.

Ho cliccato su “Aggiorna” nel suggerimento dell’area “Amministrazione” per procedere all’aggiornamento, ma il sistema mi ha comunicato che dovevo eseguire l’aggiornamento direttamente dal prompt della shell, fornendomi tre righe da eseguire:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Ho eseguito quei tre comandi. Il comando “rebuild app” è fallito inizialmente perché non disponevo di 5 GB di spazio libero sulla mia piccola istanza Linode, quindi ho aggiunto ulteriore spazio su disco e il “rebuild app” sembra essere completato correttamente.

Tuttavia, il sito non si è riavviato.

Ho dato un’occhiata, ho riavviato il sistema, ma non è tornato online; ho controllato un po’ di più.

Sembra che il frontend nginx si avvii correttamente, ma quando provo ad accedere al mio forum tramite il web, come farebbe un utente normale, ricevo un errore “502 Bad Gateway” dal frontend nginx.

Il file “/var/discourse/shared/standalone/log/var-log/postgres/current” è pieno di errori del tipo:

2021-04-17 13:54:37.785 UTC [7095] FATAL: i file del database sono incompatibili con il server
2021-04-17 13:54:37.785 UTC [7095] DETAIL: La directory dei dati è stata inizializzata con PostgreSQL versione 13, che non è compatibile con questa versione 10.12 (Debian 10.12-2.pgdg100+1).

Ho ottimi backup del forum nella mia directory:
/var/discourse/shared/standalone/backups/default

Cosa dovrei fare ora?

Vedi Aggiornamento PostgreSQL 13

Controlerò subito il tuo link a PostgreSQL 13, grazie.

C’è un modo in cui avrei potuto o dovuto sapere di questa complicazione, senza essere un amministratore full-time che segue costantemente l’attività delle tecnologie chiave (PostgreSQL, Ruby, Linux, …) dietro Discourse?

Se sì, allora le tre righe di istruzioni (cd /var/discouse; …) potrebbero includere un’altra riga: “Attenzione: controlla prima qui per altre informazioni che potrebbero applicarsi.”

Se no, allora Discourse dovrebbe essere più trasparente sul fatto che non è adatto per un uso occasionale.

Proverò a leggere ancora un paio di volte la pagina di aggiornamento di PostgreSQL 13 che hai gentilmente linkato.

Tuttavia, dopo le prime letture… mi sento completamente perso. Non ho idea di quali sezioni di quella pagina possano applicarsi alla mia situazione (se ce ne sono).

Ad esempio, la pagina di aggiornamento di PostgreSQL 13 è (ragionevolmente, immagino) focalizzata sull’aggiornamento da PostgreSQL 12 a 13. Il mio messaggio di errore:

La directory dei dati è stata inizializzata con PostgreSQL versione 13, che non è compatibile con questa versione 10.12 (Debian 10.12-2.pgdg100+1).

parla della versione 10.12… si tratta di PostgreSQL 10 o di PostgreSQL 12? (Normalmente leggerei “10.12” come riferito principalmente alla versione 10, non alla 12).

Aha - il mio file:

/var/discourse/shared/standalone/postgres_data_old/PG_VERSION

ha il valore “10”.

Quindi il collegamento sopra a PostgreSQL 13, nella misura in cui si applica a un aggiornamento da 12 a 13, non è necessariamente rilevante, per quanto ne sappia (e la mia conoscenza in materia è molto limitata).

Ho una sensazione davvero negativa al riguardo… come cercare di riparare munizioni militari attive, in una grotta buia, senza istruzioni, senza formazione e senza nemmeno essere sicuri di che tipo di munizioni si stia lavorando.

Questo commento, su cui sono caduto per caso, esattamente così:

https://meta.discourse.org/t/how-do-i-manually-update-discourse-and-docker-image-to-latest/23325/238?u=thepythoniccow

“Dovresti ricompilare di nuovo. Immagino che tu abbia ignorato un messaggio relativo all’aggiornamento di postgres.”

Mi ha fatto pensare di provare di nuovo il comando “cd /var/discourse; git pull; ./launcher rebuild app”… apparentemente quel “rebuild” può essere provato più volte.

Questa volta ho catturato l’output. Tuttavia, GARANTISCO di aver ignorato la maggior parte dei messaggi nell’output. Ci sono 2020 righe di output dal solo comando “./launcher rebuild app”. Ci vorrebbe un mese di domeniche per imparare quali programmi sono in esecuzione e cosa significano i loro messaggi di output. Non c’è alcun modo pratico per sapere se sto ignorando qualcosa di critico in quell’output.

Tuttavia…

Ha funzionato!!

Il mio sito è tornato online, eseguendo la versione corrente del software.

Quindi la lezione del giorno: se il comando “./launcher rebuild app” non riesce a fornire un sito funzionante, riprovalo.

2 Mi Piace

Ah. Scusa, non ho pensato di dirti cosa ho detto a quel tizio!

:tada: Ottimo! Sono così contento che ce l’abbia fatta!

Sì. Potrebbe essere l’unica altra cosa che devi sapere. :slight_smile:

Sono contento che tu sia di nuovo online!

3 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.