Ripristina su nuovo host

Ho configurato un nuovo host in modo da avere un ambiente di “staging”. Ho ricreato la stessa installazione di Discourse con quella che dovrebbe essere la stessa versione. Sto eseguendo la versione: 2.8.2.

Primo commento, a partire dalla versione 2.8.2 la dimensione del mio backup è scesa da 282 MB a circa 90 MB. Non sono sicuro del perché, ma mi adeguerò con alcune informazioni aggiunte di cui sto approfittando.

Ho scaricato l’ultimo archivio dal mio forum e l’ho caricato nello storage locale sul nuovo ambiente di staging.

Il ripristino fallisce a causa di:

[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] Migrazione del database in corso...
[2022-02-27 19:43:00]
[2022-02-27 19:43:00] Riconnessione al database...
[2022-02-27 19:43:00] Ricaricamento delle impostazioni del sito...
[2022-02-27 19:43:00] Disabilitazione delle email in uscita per gli utenti non staff...
[2022-02-27 19:43:02] Disabilitazione della modalità di sola lettura...
[2022-02-27 19:43:02] Pulizia della cache delle categorie...
[2022-02-27 19:43:02] Ricaricamento delle traduzioni...
[2022-02-27 19:43:02] Rimodellamento degli upload...
[2022-02-27 19:43:02] Rimodellamento di 'https://forum.geekbeacon.org' a 'https://forum-staging.geekbeacon.org'
[2022-02-27 19:43:08] Ripristino degli upload, potrebbe richiedere del tempo...
[2022-02-27 19:43:36] ECCEZIONE: 8 post non sono stati rimappati al nuovo URL di upload S3. La migrazione S3 è fallita per il db 'default'.
[2022-02-27 19:43:36] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:317:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:62:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:44:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:61:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:36:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'
[2022-02-27 19:43:36] Tentativo di rollback...
[2022-02-27 19:43:36] Rollback in corso...
[2022-02-27 19:43:36] Pulizia in corso...
[2022-02-27 19:43:36] Eliminazione delle funzioni dallo schema discourse_functions...
[2022-02-27 19:43:36] Rimozione della directory tmp '/var/www/discourse/tmp/restores/default/2022-02-27-194051'...
[2022-02-27 19:43:36] Ripresa di sidekiq...
[2022-02-27 19:43:36] Marcatura del ripristino come completato...
[2022-02-27 19:43:36] Notifica a 'csgeek' della fine del ripristino...

1 Mi Piace

Questo è il tuo problema. Forse usa lo stesso bucket S3 e usa lo stesso bucket? Forse controlla che l’impostazione nascosta chiamata qualcosa come “scarica S3 nel backup” sia attivata. Dovrai cercare o guardare nel codice sorgente il nome dell’impostazione.

Oppure forse devi assicurarti che il resto dei tuoi caricamenti sul sito di produzione siano su S3.

1 Mi Piace

Non ho configurato S3, immagino che il vecchio server abbia dei dati vecchi che non sono stati mappati a una posizione S3 valida.

Sono tornato al vecchio server e ho 2 bucket configurati, 1 per i backup e 1 per i media. Ho seguito la guida e configurato AWS S3, inclusa la CDN.

Quando eseguo rake uploads:migrate_to_s3, che è fallito, ho seguito con un posts:rebake e questo sembra aver ridotto il numero di errori, ma fallisce ancora:

Si prega di notare che la migrazione a S3 non è attualmente reversibile!
[CTRL+c] per annullare, [ENTER] per continuare

Migrazione degli upload a S3 per 'default'...
Caricamento dei file su S3...
 - Elenco dei file locali
 => 208 file
 - Elenco dei file S3
. => 978 file
 - Sincronizzazione dei file su S3
................................................................................................................................................................................................................
Aggiornamento degli URL nel database...
Rimozione delle vecchie immagini ottimizzate...
Segnalazione di tutti i post contenenti lightbox per il rebake...
15 post sono stati segnalati per un rebake
rake aborted!
FileStore::ToS3MigrationError: 1 post non sono rimappati al nuovo URL di upload S3. La migrazione S3 è fallita per il db 'default'.
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:123:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:102:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:100:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:96:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(Vedi la traccia completa eseguendo il task con --trace)

C’è un modo per eseguire migrate_to_s3 in modalità verbose per identificare il post che è il colpevole?

Ho lo stesso problema, migrando il mio server senza cambiare il bucket s3.
Qualche suggerimento?

Il tuo ripristino sta fallendo con un errore simile a questo?

FileStore::ToS3MigrationError: 1 post non sono rimappati al nuovo URL di caricamento S3. La migrazione S3 è fallita per il db 'default'.

In tal caso, la cosa migliore da fare è correggere il/i post che hanno caricamenti nel posto sbagliato. Ma penso che ci sia un caso in cui quel test possa avere un falso positivo. In tal caso, puoi usare un’opzione (switch) sull’attività rake che la metterà in pausa in modo da poter sistemare le cose. Non riesco a trovarla velocemente, e non è su Backup discourse from the command line dove dovrebbe essere. Sono nel bel mezzo di un’attività, quindi non posso cercarla ora.

Sì, ho questo tipo di errore

EXCEPTION: 3 post non sono stati rimappati al nuovo URL di caricamento S3. La migrazione S3 è fallita per il db ‘default’

Puoi provare

discourse restore --pause nomefile

Questo metterà in pausa il ripristino e potrai armeggiare con il database in un altro terminale per risolverlo. Oppure, credo, puoi semplicemente fermarlo prima che esegua quel controllo.

Penso di doverlo usare durante un ripristino da riga di comando

Stesso errore:
Caricamento dei file su S3…

  • Elenco dei file locali
    => 2 file
  • Elenco dei file S3
    … => 183549 file
  • Sincronizzazione dei file con S3
    ..
    Aggiornamento degli URL nel database…
    Rimozione delle vecchie immagini ottimizzate…
    Contrassegno di tutti i post contenenti lightbox per il ribake…
    169809 post sono stati contrassegnati per un ribake
    ECCEZIONE: 3 post non sono mappati al nuovo URL di caricamento S3. La migrazione S3 per il db ‘default’ non è riuscita.
    /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in raise_or_log' /var/www/discourse/lib/file_store/to_s3_migration.rb:81:in migration_successful?’
    /var/www/discourse/lib/file_store/to_s3_migration.rb:385:in migrate_to_s3' /var/www/discourse/lib/file_store/to_s3_migration.rb:59:in migrate’
    /var/www/discourse/lib/file_store/s3_store.rb:367:in copy_from' /var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in restore_uploads’
    /var/www/discourse/lib/backup_restore/uploads_restorer.rb:49:in restore' /var/www/discourse/lib/backup_restore/restorer.rb:179:in restore_uploads’
    /var/www/discourse/lib/backup_restore/restorer.rb:72:in run' script/discourse:243:in restore’
    /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in run' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in invoke_command’
    /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/base.rb:584:in start’
    script/discourse:397:in \u003ctop (required)\u003e’ /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in load’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in kernel_load' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in run’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in exec' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in run’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in dispatch’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in dispatch' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in start’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in start' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:28:in block in \u003ctop (required)\u003e’
    /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/friendly_errors.rb:117:in with_friendly_errors' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:20:in \u003ctop (required)\u003e’
    /usr/local/bin/bundle:25:in load' /usr/local/bin/bundle:25:in
    Tentativo di rollback…
    Rollback in corso…
    Pulizia in corso…
    Eliminazione delle funzioni dallo schema discourse_functions…
    Rimozione della directory tmp ‘/var/www/discourse/tmp/restores/default/2026-01-13-145033’…
    Riattivazione di sidekiq…
    Contrassegno del ripristino come terminato…
    Notifica a ‘system’ della fine del ripristino…
    Finito!

Devi correggere quei tre caricamenti o interrompere il ripristino prima che esegua quel controllo.

Come potrei trovare
3 post su 168000?
È possibile interrompere il ripristino, saltando questa verifica?

Controllerei il codice che esegue quel test ed eseguirei la stessa query. Potrei aver pubblicato prima il codice per farlo.

Ho pubblicato

L’hai fatto? Penso che potresti semplicemente usare control-c dopo che ha finito il ripristino. Stai facendo un ripristino solo del database?

Oh cavolo, non avevo pensato di fermare il ripristino dopo il database e prima dei caricamenti.
Non ho bisogno di spostare i caricamenti da S3 — posso migrare solo il frontend e il database?

Puoi dirmi quale opzione ti permette di interrompere il rake sui post e di identificare quelli problematici? Ti sarei molto grato.

Qualche suggerimento? Grazie