Discourse su postgres 12 interrompe gli aggiornamenti

Stiamo eseguendo Postgres v12 poiché l’aggiornamento a v13 richiede troppo spazio su disco. Sembra che la compatibilità con v12 sia stata compromessa? È intenzionale? In tal caso, significa che non potremo mai più aggiornare Discourse.

L’esecuzione di ./launcher start app ci ha riportato online, quindi al momento non si tratta di un problema in produzione, ma l’impossibilità di effettuare aggiornamenti, anche per motivi di sicurezza, sarebbe molto negativo per noi.

Dal file app.yml:

  - "templates/postgres.12.template.yml"

Esecuzione di ./launcher rebuild app:

FAILED
--------------------
Errno::ENOENT: No such file or directory @ rb_sysopen - /etc/postgresql/13/main/pg_hba.conf
Posizione dell'errore: /pups/lib/pups/replace_command.rb:8:in `read'
Sostituzione fallita con i parametri {"filename"=>"/etc/postgresql/13/main/pg_hba.conf", "from"=>"/^host.*all.*all.*::1\\/128.*$/", "to"=>"host all all ::/0 md5"}
0ba8112e6efa1ac2dd75af8a1da8eea0937e7aefbca2df28b22d27e9608d1479
** FALLIMENTO DEL BOOTSTRAP ** scorri verso l'alto e cerca i messaggi di errore precedenti, potrebbero essercene più di uno.
./discourse-doctor potrebbe aiutare a diagnosticare il problema.

Versione attualmente in esecuzione: 2.8.0.beta4 75b0d6df93.

sta cercando PostgreSQL 13 e non 12.

{“filename”=>“/etc/postgresql/13/main/pg_hba.conf”,

Infatti. Questo è il problema.

Perché non esegui un backup, crei una nuova istanza di Discourse completamente fresca (che dovrebbe avere Postgres 13 come predefinito), ripristini il backup e rimappi il server nel DNS?

Sì, funzionerebbe. Sto cercando disperatamente di non doverlo fare.

Potrebbe sembrare spaventoso, ma ci sarebbero abbastanza misure di sicurezza: puoi sempre riportare online il vecchio server.

È meno spaventoso rispetto al lavoro fastidioso che vorrei evitare, combinato con l’annuncio al mio forum che perderanno un giorno o due di post. Idealmente, mi piacerebbe che i ragazzi di Discourse dicessero: ‘Certo che continuiamo a lavorare su PG12, è solo un bug, lo sistemeremo’.

Non capisco perché sia necessario.

  1. Preparare un nuovo server su un sottodominio?

  2. Attivare la modalità di sola lettura sul server esistente e creare un backup

  3. Importare il backup sul nuovo server

  4. Ricalcolare le impostazioni DNS

  5. Ricostituire il nuovo server con il sottodominio principale di Discourse.

Questo processo potrebbe richiedere 30 minuti?

No, gestisco un forum molto grande.

Ah! Un bel problema da avere! :slight_smile:

Immagino, non è che vengo pagato! :wink:

Ah, capisco: è un bug introdotto da una PR della community. Dato che non eseguiamo PG12 da nessuna parte, è passato inosservato. Dammi qualche minuto.

Risolto in

Puoi provare a ricostruire di nuovo, @Wingtip?

Detto questo, non eseguiamo più PG12, quindi potremmo introdurre in qualsiasi momento nel core una sintassi SQL esclusiva per PG13+, quindi sarebbe una buona idea programmare l’aggiornamento un giorno.

Lo controllerò subito dopo aver creato un altro snapshot della mia VM.

È davvero fastidioso come PG richieda un sacco di spazio su disco per l’aggiornamento. Non ho questo problema con Oracle o MySQL, che si aggiornano direttamente sul posto.

pg_upgrade fornisce un singolo flag --link per consentire aggiornamenti in-place.

Abbiamo scelto di non utilizzarlo nel nostro script di aggiornamento del launcher “amichevole per i principianti”, poiché il 99% delle installazioni avviene su macchine virtuali cloud che possono facilmente ed economicamente espandere le dimensioni del disco.

Tuttavia, è disponibile come opzione per chi preferisce eseguire l’aggiornamento manualmente per risparmiare spazio su disco durante il processo.

Sono state fornite due soluzioni; per quanto ricordo, una richiedeva essenzialmente il triplo della dimensione dell’intero database, mentre l’altra richiedeva circa il doppio. Se è possibile farlo in-place, documentarlo sarebbe molto utile.

Modifica: La correzione ha funzionato, grazie!

Sì, ho copiato e incollato senza pensarci - scusa e grazie per averlo sistemato!