Questo post è una versione molto condensata delle mie ultime 24 ore, anche se in realtà non ha ancora funzionato, quindi spero anche che qualcuno pubblichi dove è andato storto qui sotto.
Il mio aggiornamento di Discourse è fallito a causa di una chiave duplicata, uno dei miei tag è raddoppiato. Per risolvere il problema dell’aggiornamento, ho dovuto eseguire una nuova installazione di Discourse e quindi caricare il mio ultimo backup, ma il ricaricamento fallisce perché si arrabbia per la chiave duplicata. Quindi ho dovuto entrare nel backup per modificare il tag incriminato in qualcos’altro.
Per qualche motivo, il backup ri-zippato con il problema del tag duplicato risolto è significativamente più piccolo del backup da cui proviene, e fallisce quando provo a ripristinarlo, quindi qualcosa è andato storto con il processo di rizippatura.
1) Individuazione dei backup: Per individuare i tuoi backup di Discourse, puoi usare il seguente comando:
sudo find / -name "*.tar.gz"
Questo cercherà nel tuo sistema tutti i file di backup con estensione “.tar.gz”. Per impostazione predefinita dovrebbe trovarsi all’interno del tuo container in: shared/backups/default
2) Creazione di una copia: Una volta trovato il backup con cui vuoi lavorare, creane una copia per assicurarti di avere un backup del file originale. Usa il comando “cp”:
bash
sudo cp /path/to/original_backup.tar.gz /path/to/copy_backup.tar.gz
3) Estrazione della copia: Estrai il contenuto del file di backup copiato usando il comando “tar”:
bash
tar -xzvf /path/to/copy_backup.tar.gz
Questo estrarrà i file di backup in una directory temporanea.
4) Modifica dei tag nel database: Naviga nei file di backup estratti e apri il file di database pertinente usando un editor di testo. Ho riscontrato un problema con i tag duplicati “socialmedia”, che hanno impedito un ripristino riuscito. In un database di grandi dimensioni ci sono molte istanze di tag, e probabilmente per il tag specifico che stai cercando, quindi ho cercato ‘immutable socialmedia’ usando Ctrl W in Nano che mi ha portato proprio lì.
sudo nano /path/to/extracted_database.sql
Ho modificato un’istanza del tag “socialmedia” in “socialmedia2”, quindi ho fatto una rapida ricerca per verificare che ora appaia solo una volta. Posso correggere quei tag dalla sezione admin una volta che il ripristino ha successo.
5) Rizippatura: Dopo aver modificato i file di backup, crea un nuovo file di backup con il contenuto corretto. Usa il seguente comando per comprimere i file modificati:
tar -czvf /path/to/new_modified_backup.tar.gz /path/to/modified_files_directory
6) Spostamento nel file corretto: Sposta il nuovo file di backup modificato nella directory appropriata dove vengono archiviati i backup. La posizione predefinita è solitamente “/shared/backups/default”:
sudo mv /path/to/new_modified_backup.tar.gz /shared/backups/default/
7) Arresto e avvio dei servizi: Prima di ripristinare il backup modificato, assicurati di arrestare i servizi pertinenti per evitare potenziali conflitti durante il processo di ripristino. Usa il comando “./launcher stop app” per arrestare l’applicazione Discourse:
./launcher stop app
8) Ripristino del backup: Per ripristinare dal backup modificato, usa il comando “discourse restore” con il percorso del nuovo file di backup:
discourse restore /shared/backups/default/new_modified_backup.tar.gz
Oppure puoi farlo tramite /admin sul tuo sito, poiché ora dovrebbe apparire nella sezione dei backup.
9) Verifica del ripristino: Dopo che il processo di ripristino è stato completato, ho verificato che le modifiche fossero andate a buon fine controllando l’applicazione e il database di Discourse per assicurarmi che i tag duplicati “socialmedia” fossero stati rimossi.
10) Avvio dei servizi: Ho riavviato i servizi che erano stati arrestati in precedenza per riportare online l’applicazione Discourse. Ho usato il comando “./launcher start app” per avviare l’applicazione Discourse:
./launcher start app
11) Eliminazione dei file temporanei e dei backup aggiuntivi: Dopo aver ripristinato con successo il backup, ho eliminato tutti i file temporanei e i backup aggiuntivi creati durante il processo per liberare spazio su disco. Usa il comando “rm” per rimuovere i file:
sudo rm -r /path/to/temporary_directory
sudo rm /path/to/copy_backup.tar.gz
