Problemi con i backup multisito su S3--backup archiviati nella root

Ho un’istanza multisito su un’istanza AWS EC2. Ho configurato i backup come segue:

DISCOURSE_S3_BACKUP_BUCKET: lc-sitename
DISCOURSE_S3_SECRET_ACCESS_KEY: secret-key
DISCOURSE_S3_ACCESS_KEY_ID: key-id
DISCOURSE_BACKUP_LOCATION: s3

I backup per le istanze multisito vengono archiviati nella root del bucket, ma non vengono visualizzati nell’elenco nell’interfaccia utente. I backup per il sito principale sono archiviati sotto default come previsto. Ciò significa che i backup sono invisibili per il ripristino e non vengono eliminati secondo le impostazioni.

La sezione multisito è simile a questa:

        site:
           adapter: postgresql
           database: site
           pool: 25
           timeout: 5000
           host: data
           password: secret
           host_names:
             - community.site.org

Potrebbe essere che se DISCOURE_USE_S3 non è impostato, i backup finiscano nel posto sbagliato? (Ho provato a impostare use_s3 in discourse.conf, ma non ho riavviato unicorn, invece ho eseguito un backup da riga di comando e lo ha comunque inserito nella root, non nel nome del sottosito).

C’è stato qualche problema con gli upload su S3 (forse una errata configurazione del bucket), quindi S3 è solo per i backup.

1 Mi Piace

Ho passato un’altra ora e mezza su questo.

Uno dei siti multisito sta correttamente inserendo i suoi upload backup nella directory corretta, ma due non lo stanno facendo.

Quelli che non vanno nel posto giusto avevano database ripristinati da un’istanza single-site, quindi la mia ipotesi è che ci sia qualcosa nel database che sta forzando il backup ad andare nella root della cartella di backup anziché nel nome del sito (o predefinito per il sito predefinito).

@gerhard scusa il disturbo, ma ti dispiacerebbe dare un’occhiata veloce per vedere se c’è qualcosa di palesemente sciocco che sto trascurando?

Sì, l’archiviazione dei caricamenti è per design, se un backup proveniva da un’istanza di sito singolo viene ripristinato diversamente.

      was_multisite = BackupMetadata.value_for("multisite") == "t"
      upload_path = "/#{Discourse.store.upload_path}/"
      uploads_folder = was_multisite ? "/" : upload_path

Ma non si trattava di dove venivano messi i backup, ma di dove vengono ripristinate le immagini?

1 Mi Piace

Sì.

Esatto.

Ma oops:

Come ho detto (correttamente) in precedenza, questa istanza sta utilizzando (attualmente?) S3 solo per i backup e non per gli upload.

Sono i backup di 2 dei 3 sottositi che vengono inseriti nella root del bucket di backup. Il sito principale li invia a default come previsto, e uno degli istanze multisito li invia alla directory sitename.

1 Mi Piace

Hmm, questo è un comportamento strano. Intendi i backup caricati dal browser o i backup creati dal sistema?

Non vedo alcun motivo per cui i backup creati dal sistema finiscano nel posto sbagliato. Il codice sembra piuttosto semplice.

s3_helper viene configurato con il bucket e il nome multisito corretti.

Intendo che l’esecuzione di un backup dall’interfaccia web o dal task rake per due dei 3 host multisito (entrambi migrati da un altro server) carica il backup nella root del bucket S3 di backup anziché in nome_sito/nome_backup.

Mi sembra strano anche a me.

Proverò ad aggiungere alcuni puts a quelle funzioni per vedere se riesco a rintracciarlo.

Penso di aver fatto puts del source_path e che avesse il percorso completo corretto nel sistema operativo, ma quando viene caricato su S3, il nome del sito non è più nel percorso.

Darò un’occhiata più da vicino la prossima settimana. I backup ci sono, solo che non sono dove Discourse li troverà.