Hai provato una nuova installazione senza ripristino, ma collegandoti al tuo database backend esistente?
Suppongo che ciò significhi potenzialmente perdere qualsiasi impostazione effettuata nell’interfaccia utente non salvata nel database? Non sono sicuro di cos’altro venga salvato e ripristinato.
Forse dovresti considerare di abbandonare Bitnami per un’installazione standard effettiva. I tuoi problemi non sono causati da “bug nella migrazione del database”, sono specifici di Bitnami.
Kubernetes consente di eseguire un’installazione manuale? Se sì, potresti eseguire un’installazione standard in quel modo. (Non ci ho mai provato, quindi non so come funziona Kubernetes)
Sento forte e chiaro i vantaggi dell’installazione standard e la natura indipendente e non sanzionata del chart Helm di Bitnami. Non intendevo insinuare che la colpa sia di Discourse stesso. La mia scelta di utilizzare Bitnami continua a dipendere da un calcolo che confronta il costo della risoluzione dei problemi con il chart Bitnami e il costo dello sviluppo del mio equivalente chart Helm basato sull’installazione ufficialmente supportata e quindi della risoluzione dei problemi con esso.
L’ho considerato, ma sto cercando di evitare modifiche alle impostazioni predefinite del chart per rimanere “sul percorso principale”. Detto questo, ho tentato di aggiornare solo il server Discourse a v3.2.0 sovrascrivendo il tag dell’immagine di Deployment, mantenendo il database esistente, per vedere se la migrazione avrebbe avuto successo; è comunque fallita.
Ho provato a eliminare e ripristinare manualmente il database tramite kubectl exec al container postgres utilizzando il file di dump SQL generato da Discourse stesso, ma questo fallisce con l’errore relativo alla tabella sidebar_sections. Più recentemente, ho creato una nuova VM e ho seguito il metodo di installazione standard per installare Discourse v3.3.0. Quando ho tentato un ripristino del backup, si è verificato lo stesso errore.
La mia conclusione è che, sebbene l’archivio di backup di produzione sia stato generato da Discourse stesso, la struttura del database della mia istanza di produzione v3.0.6 è in qualche modo diversa da ciò che Discourse si aspetta, causando errori nelle migrazioni. Se questo è il caso, sono pessimista riguardo alle mie opzioni. L’unica idea che ho al momento è iniziare a modificare il file di dump SQL nell’archivio di backup per rimuovere le tabelle che causano gli errori DuplicateTable durante la fase di migrazione del database del processo di ripristino.
Nella speranza che ciò possa salvare qualcuno dal dibattersi per molte ore come ho fatto io in questa situazione, ecco il processo che mi ha finalmente permesso di eseguire l’aggiornamento da Discourse v3.0.6 a v3.2.0 nel contesto dell’utilizzo del chart Helm di Bitnami (da v11 a v12). Sebbene ulteriori avvisi non dovrebbero essere necessari sulla base dei commenti precedenti, questo problema è dovuto a un bug nel chart Helm di Bitnami e nelle loro immagini personalizzate; il problema non influisce sulle release ufficiali di Discourse.
Le istruzioni seguenti mostrano come navigare l’aggiornamento. Il “sito di produzione” è una release del chart Helm del sito Discourse in fase di aggiornamento, e “sito di migrazione” si riferisce a una release temporanea del chart distribuita in parallelo nello namespace discourse-dev.
Sito di produzione
Imposta il forum di produzione in modalità di sola lettura nel pannello di amministrazione Backup /admin/backups.
Esegui il backup utilizzando il pannello di amministrazione Backup. Scarica l’archivio di backup localmente.
Sito di migrazione
Installa una nuova istanza del chart Bitnami v12.6.2 (Discourse v3.2.0). Scala il Deployment del server Discourse a zero.
cat > /tmp/db_init.sql << EOF
DROP DATABASE bitnami_application;
CREATE DATABASE bitnami_application;
GRANT ALL PRIVILEGES ON DATABASE bitnami_application TO bn_discourse;
CREATE EXTENSION hstore;
CREATE EXTENSION pg_trgm;
ALTER database bitnami_application owner to bn_discourse ;
EOF