Come eseguire il backup di Discourse su S3 | Discourse come backup su S3

Discourse e S3 sono ottimi amici, se hai familiarità con S3, ti sarà di grande aiuto.

Molti hanno spazio limitato e risorse limitate sui loro server virtuali.

Utilizzare S3 per il backup consente di sfruttare al meglio lo spazio.

Puoi seguire questi passaggi per la configurazione:

Imposta la frequenza di backup

Vai su admin > backup, quindi imposta backup_frequency su 1. Questo parametro indica la frequenza dei backup, il valore predefinito è 7.
1 indica un backup al giorno.
7 indica un backup ogni 7 giorni.

Per un sito web con traffico normale, se utilizzi S3 per archiviare i backup, è meglio eseguire un backup al giorno.

Imposta il Bucket e il percorso di backup.

Questo Bucket può essere privato e non pubblico. Qui è importante notare che se utilizzi S3 anche per l’archiviazione di immagini e allegati, quel Bucket deve essere impostato su “public” durante la configurazione.

Per comodità, puoi creare un bucket separato qui. Cerca di non confonderlo con l’archiviazione di allegati e immagini.

Ti consigliamo di impostare un percorso di directory aggiuntivo qui, poiché Discourse creerà diverse cartelle necessarie all’interno di questa cartella.

Per rendere il tuo archivio più chiaro e definito.

Imposta s3_access_key_id e s3_secret_access_key

Successivamente, devi impostare per i tuoi dati di backup archiviati: s3_access_key_id, s3_secret_access_key e s3_region. Questi 3 parametri sono molto importanti, non scegliere la regione sbagliata. Se il tuo backup non viene caricato, nella maggior parte dei casi il problema è legato ai permessi.

Per i dettagli su come impostare, fai riferimento a: Setting up file and image uploads to S3 - sysadmin - Discourse Meta

È importante notare che qui devi concedere permessi sufficienti alla tua key ID, altrimenti non sarai in grado di caricare.

Imposta il backup su S3

Imposta il metodo di backup su S3.

Devi modificare l’archiviazione “Local” in archiviazione “S3” nella sezione di selezione dei parametri.

Test del backup

Una volta che tutto è configurato, puoi testare il backup.

Fai clic sul pulsante di backup per testare il backup. Nel menu di backup, fai semplicemente clic su “Backup”.


Nella schermata che appare, ti verrà chiesto se includere le immagini e gli allegati caricati.

In generale, qui si sceglie “Yes”. Successivamente, l’interfaccia passerà alla schermata dei log, dove verranno visualizzate le informazioni di backup. Puoi verificare se nel log appare “Finished” per confermare che il backup è stato completato.

Ancora più importante, puoi accedere al tuo account S3 per verificare che ci sia un backup recente.


Devi prestare attenzione all’ora, alla dimensione e al nome del file per confermare.


Impostando il backup su S3, possiamo espandere lo spazio di archiviazione di Discourse, ottenendo quasi spazio di archiviazione e backup illimitati. Per la gestione del sito web, il backup automatico e il caricamento sono funzioni molto pratiche.

Inoltre, avrai più backup archiviati, il che ti consentirà di ripristinare a diversi punti di backup quando necessario.

Poiché hai separato i file di backup da Docker, questo è molto utile per i tuoi backup giornalieri. Può ridurre notevolmente l’utilizzo dello spazio di archiviazione.

Consigliamo inoltre di archiviare immagini e allegati su S3, il che offre enormi vantaggi per la migrazione e il ripristino dei backup.

Consulta l’articolo originale iSharkFly - 飞鲨 per maggiori informazioni.

2 Mi Piace

Vorrei chiedere se il backup e gli allegati vengono montati su S3 diversi, il backup includerà anche il contenuto dell’S3 degli allegati? Se non si sceglie di includere le immagini e gli allegati caricati, il contenuto dell’S3 utilizzato per gli allegati potrà ancora essere visualizzato normalmente nel forum durante il ripristino del backup?

Non ho esaminato attentamente i backup di Discourse.

Dopo aver controllato i nostri backup, ho capito che:

Se i tuoi allegati utilizzano l’archiviazione cloud di AWS, anche se selezioni Includi allegati nel backup durante il backup, gli allegati caricati su AWS non verranno inclusi nel file di backup.

L’allegato incluso nel backup è quello memorizzato sul tuo computer locale, ma non quello su AWS.

Dalle dimensioni del backup del nostro sito, si può vedere che se includessimo gli allegati, la dimensione del backup non sarebbe di soli 80 MB circa.

Ciò indica che il backup contiene solo il database e gli allegati locali.

Aprendo questo file di download, si vedono solo 2 cartelle: una è dump, che è il file di dump del database PGSQL.

L’altra è la cartella di upload, che contiene solo gli allegati caricati localmente, non quelli memorizzati su AWS. Per noi, questa cartella è molto piccola, con pochi file.

Questo perché abbiamo caricato tutti gli allegati su AWS poco dopo l’avvio della community.

L’immagine sopra mostra il contenuto del file di dump PGSQL, da cui è possibile vedere la versione PGSQL in esecuzione nel container del database Discourse corrente.

Se desideri visualizzare il database localmente, puoi importare direttamente questo file di dump nel tuo container locale.

Problemi di ripristino con AWS

Se utilizzi allegati AWS ma non utilizzi la CDN di AWS, il contenuto del corpo principale sarà l’indirizzo del percorso assoluto sui tuoi AWS.

Nel file MD del tema, viene visualizzato come:

Ma, una volta pubblicato il contenuto, il codice HTML effettivo viene sostituito da Discourse con l’indirizzo assoluto della tua CDN.

Pertanto, in base alla risposta precedente, se non selezioni il backup degli allegati durante il backup, il contenuto degli allegati non sarà influenzato durante il ripristino.

Eccezioni

In realtà, anche gli allegati sono stati influenzati, principalmente a causa del cambio di dominio.

Poiché abbiamo avuto un cambio di dominio in precedenza, ma il contenuto degli allegati era presente, il corpo principale non poteva essere collegato, anche ricostruendo l’HTML non era possibile collegarlo.

In questo caso, potrebbe essere necessario modificarlo direttamente nel database.

Finché non cambi arbitrariamente il tuo dominio, questo di solito non è un problema.

Per una discussione più dettagliata, visita: Discourse 备份和恢复中有关附件的问题 - Discourse - iSharkFly

Vorrei anche cogliere l’occasione per porre un’altra domanda. Non ho utilizzato Amazon Cloud S3, ma Cloudflare R2, e ho già eseguito con successo il backup su R2. Posso vedere i file in Cloudflare, ma i file di backup non vengono visualizzati nel backend di Discourse. C’è qualche problema?


Esegui nuovamente il backup manuale e controlla il log del backup.

È molto probabile che ci sia un errore nella parte dell’API di visualizzazione dello stato dopo che Discourse ha archiviato il backup in R2.

Controlla se il contenuto del log è completo.

Questa è la schermata appena generata, sembra che tutto sia normale. Inoltre, ho creato l’API con i massimi privilegi in R2.

Ho eseguito il mio processo di backup, sembra che i nostri log siano gli stessi.

[2024-07-26 11:56:00] pg_dump: executing SEQUENCE SET category_custom_fields_id_seq
[2024-07-26 11:56:00] Finalizing backup...
[2024-07-26 11:56:00] Creating archive: isharkfly-2024-07-26-115540-v20240723030506.tar.gz
[2024-07-26 11:56:00] Making sure archive does not already exist...
[2024-07-26 11:56:00] Creating empty archive...
[2024-07-26 11:56:00] Archiving data dump...
[2024-07-26 11:56:00] Archiving uploads...
[2024-07-26 11:56:00] Skipping uploads stored on S3.
[2024-07-26 11:56:00] Removing tmp '/var/www/discourse/tmp/backups/default/2024-07-26-115540' directory...
[2024-07-26 11:56:00] Gzipping archive, this may take a while...
[2024-07-26 11:56:05] Uploading archive...
[2024-07-26 11:56:09] Executing the after_create_hook for the backup...
[2024-07-26 11:56:09] Deleting old backups...
[2024-07-26 11:56:10] Cleaning stuff up...
[2024-07-26 11:56:10] Removing archive from local storage...
[2024-07-26 11:56:10] Removing '.tar' leftovers...
[2024-07-26 11:56:10] Marking backup as finished...
[2024-07-26 11:56:10] Refreshing disk stats...
[2024-07-26 11:56:10] Notifying 'honeymoose' of the end of the backup...
[2024-07-26 11:56:18] Finished!

Il prossimo passo sarà verificare se il problema riguarda i record delle tabelle di backup del database.

Usi anche tu R2? Riesce a visualizzarlo correttamente?

Uso AWS.

Questa parte dovrebbe essere facile da configurare.