I’ve been running into issues trying to run a restore on our Staging Discourse instance. Staging is running v2.4.0.beta1 +36. Any idea where the breakdown might be or where to look? Thanks in advance!
Below is the end of the log output:
[2019-07-16 20:08:12] ALTER TABLE
[2019-07-16 20:08:12] ALTER TABLE
[2019-07-16 20:08:12] ALTER TABLE
[2019-07-16 20:08:12] ALTER TABLE
[2019-07-16 20:08:12] Migrating the database...
[2019-07-16 20:08:16] Reconnecting to the database...
[2019-07-16 20:08:16] Reloading site settings...
[2019-07-16 20:08:16] Disabling outgoing emails for non-staff users...
[2019-07-16 20:08:16] Clearing emoji cache...
[2019-07-16 20:08:16] Disabling readonly mode...
[2019-07-16 20:08:16] Clear theme cache
[2019-07-16 20:08:22] Extracting uploads...
[2019-07-16 20:08:40] Migrating uploads to S3...
[2019-07-16 20:08:46] Restore process was cancelled!
[2019-07-16 20:08:46] Trying to rollback...
[2019-07-16 20:08:46] Rolling back...
[2019-07-16 20:08:47] Cleaning stuff up...
[2019-07-16 20:08:47] Removing tmp '/var/www/discourse/tmp/restores/default/2019-07-16-200516' directory...
[2019-07-16 20:08:48] Unpausing sidekiq...
[2019-07-16 20:08:48] Marking restore as finished...
Below is the output after running discourse restore BACKUP_FILENAME from the command line. Any feedback is appreciated, thanks!
Disabling outgoing emails for non-staff users...
Clearing emoji cache...
Disabling readonly mode...
Clear theme cache
Extracting uploads...
Migrating uploads to S3...
Checking if default already migrated...
524 of 9474 uploads are not migrated to S3. S3 migration failed for db 'default'.
321 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
Looking for missing uploads on: default
Fixing missing uploads:
..........................................................................................................
116 post uploads are missing.
116 uploads are missing.
106 of 116 are old scheme uploads.
98 of 83342 posts are affected.
rake posts:missing_uploads identified 98 issues. S3 migration failed for db 'default'.
No posts require rebaking
Migrating uploads to S3 for 'default'...
Some uploads were not migrated to the new scheme. Please run these commands in the rails console
SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)
Restore process was cancelled!
Trying to rollback...
Rolling back...
Cleaning stuff up...
Removing tmp '/var/www/discourse/tmp/restores/default/2019-07-22-172918' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.
Ich bin mir ziemlich sicher, dass ich gerade ebenfalls davon betroffen bin. Ich denke, dies sollte als Fehler markiert werden.
(Wenn es sich um ein anderes Problem handelt, kannst du es gerne in ein separates neues Thema verschieben.)
Es ist ziemlich wichtig, dass die Wiederherstellung von Backups funktioniert.
Beachte, dass der Grund für das Versagen nicht offensichtlich ist, wenn du die Admin-Oberfläche verwendest und neben dem Backup-Namen auf Wiederherstellen klickst. Du erhältst dann:
...
Migriere Uploads zu S3...
Wiederherstellungsprozess wurde abgebrochen!
...
Die vollständige Wiederherstellung über die Kommandozeile liefert mehr Details:
discourse enter app
discourse restore example-net-2020-01-02-033557-v20191219112000.tar.gz
...
Verbindung zur Datenbank wird wiederhergestellt...
Website-Einstellungen werden neu geladen...
Ausgehende E-Mails für Nicht-Mitarbeiter werden deaktiviert...
Emoji-Cache wird geleert...
Nur-Lese-Modus wird deaktiviert...
Theme-Cache wird geleert
Uploads werden extrahiert...
Uploads werden neu zugeordnet...
Remapping '//forum-example-net.s3.dualstack.eu-west-2.amazonaws.com/' zu '/uploads/default/'
optimized_images=3
uploads=1
Migriere Uploads zu S3...
Prüfe, ob 'default' bereits migriert wurde...
6 von 12 Uploads wurden nicht zu S3 migriert. S3-Migration für DB 'default' fehlgeschlagen.
1 Beitrag wurde nicht auf die neue S3-Upload-URL neu zugeordnet. S3-Migration für DB 'default' fehlgeschlagen.
Suche nach fehlenden Uploads auf: default
0 Beitrags-Uploads fehlen.
Bitte stelle die folgenden Umgebungsvariablen bereit
- DISCOURSE_S3_BUCKET
- DISCOURSE_S3_REGION
und entweder
- DISCOURSE_S3_ACCESS_KEY_ID
- DISCOURSE_S3_SECRET_ACCESS_KEY
oder
- DISCOURSE_S3_USE_IAM_PROFILE
Wiederherstellungsprozess wurde abgebrochen!
Rollback wird versucht...
Rollback wird durchgeführt...
Aufräumen...
Funktion aus dem Schema 'discourse_functions' wird entfernt
Verzeichnis '/var/www/discourse/tmp/restores/default/2020-01-06-222212' wird entfernt...
Sidekiq wird fortgesetzt...
Wiederherstellung wird als abgeschlossen markiert...
'System' wird über das Ende der Wiederherstellung informiert...
Fertig!
[FEHLGESCHLAGEN]
Wiederherstellung abgeschlossen.
Ich habe etwas Debug-Code in uploads.rake direkt vor „Bitte stelle die folgenden Umgebungsvariablen bereit
Meines Erachtens lautet die Annahme: Wenn Sie Uploads auf S3 haben, führen Sie ein rein datenbankbasiertes Backup durch, und es wird nicht fehlschlagen, da keine Uploads enthalten sind.
Stimmt, aber das hilft nicht, wenn das Backup, das du hast, die Uploads enthält.
Klarstellung: Das ist für mich gerade nicht kritisch wichtig. Ich kann die problematischen Zeilen auskommentieren und die Wiederherstellung abschließen, aber andere können das nicht.
Es ist nicht nötig, dies in einen bug umzuwandeln. Das Thema liegt in meinem Verantwortungsbereich, und ich habe bereits eine enorme Menge an Zeit damit verbracht, den Wiederherstellungsprozess zu refaktorisieren, zahlreiche Tests hinzuzufügen und ihn zuverlässiger zu machen. Ich werde noch ein paar Anpassungen vornehmen, um die Wahrscheinlichkeit zu verringern, dass die Wiederherstellung nach S3 fehlschlägt, und um im Admin-UI mehr Informationen auszugeben.
Soweit ich weiß, wurde die Sicherung/Wiederherstellung überarbeitet, aber ich habe gerade festgestellt, dass dies immer noch ein Problem darstellt.
Ein Versuch auf beta11, eine Sicherung wiederherzustellen, bei der enable s3 uploads aktiviert war, schlägt immer noch fehl mit:
[2020-02-18 09:51:38] Wiederherstellung von Uploads, dies kann eine Weile dauern...
[2020-02-18 09:51:38] AUSNAHME: Bitte stellen Sie die folgenden Umgebungsvariablen bereit:
- DISCOURSE_S3_BUCKET
- DISCOURSE_S3_REGION
und entweder
- DISCOURSE_S3_ACCESS_KEY_ID
- DISCOURSE_S3_SECRET_ACCESS_KEY
oder
- DISCOURSE_S3_USE_IAM_PROFILE
[2020-02-18 09:51:38] /var/www/discourse/lib/file_store/to_s3_migration.rb:34:in `s3_options_from_env'
Die S3-Zugangsdaten sind in der wiederhergestellten Datenbank vorhanden, sodass es nicht erforderlich ist, diese ebenfalls als Umgebungsvariable bereitzustellen.
Die Bereitstellung der Umgebungsvariablen führt ebenfalls zu einem Fehler:
Wiederherstellung von Uploads, dies kann eine Weile dauern...
Prüfen, ob db8015 bereits migriert wurde...
200 von 206 Uploads wurden nicht zu S3 migriert. S3-Migration für db 'db8015' fehlgeschlagen.
5 Beiträge wurden nicht auf die neue S3-Upload-URL umgemappt. S3-Migration für db 'db8015' fehlgeschlagen.
Keine Beiträge erfordern ein Neubacken.
Migration von Uploads zu S3 für 'db8015'...
Hochladen von Dateien zu S3...
- Auflisten lokaler Dateien
=> 21 Dateien
- Auflisten von S3-Dateien
. => 16 Dateien
- Synchronisieren von Dateien mit S3
.....................
Aktualisieren der URLs in der Datenbank...
Entfernen alter optimierter Bilder...
Markieren aller Beiträge mit Lightboxen für ein Neubacken...
5 Beiträge wurden für ein Neubacken markiert
AUSNAHME: 183 von 206 Uploads wurden nicht zu S3 migriert. S3-Migration für db 'db8015' fehlgeschlagen.
/var/www/discourse/lib/file_store/to_s3_migration.rb:127:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:74:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:350:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:61:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:203:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:48:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:30:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:58:in `run'
script/discourse:143:in `restore'
Ich habe keine Ahnung, warum dies fehlschlägt.
Die meisten Uploads waren bereits in S3, daher sind die Angaben „200 von 206 Uploads wurden nicht zu S3 migriert
Das Mischen von lokalen Uploads mit auf S3 gespeicherten Uploads wird nicht unterstützt. Ja, ich weiß, es ist möglich, in einen solchen Zustand zu geraten, wenn jemand von lokalen Uploads auf S3 umstellt und die bestehenden Uploads nicht auf S3 migriert, aber das ist eine andere Geschichte…
Bei der Wiederherstellung eines Backups werden Uploads immer neu gemappt, wenn das System Änderungen erkennt, die die Upload-URLs beeinflussen. Dazu gehören der Wechsel zwischen Standalone- und Multisite-Betrieb, der Wechsel zwischen lokalen Uploads und S3 sowie Änderungen an den S3- und CDN-Einstellungen. Alle Uploads werden basierend auf den Einstellungen am korrekten Ort wiederhergestellt, entweder lokal oder auf S3.
Gelegentlich stoßen wir auf Backups, bei denen die automatische Neuabbildung und Migration zu S3 aus verschiedenen Gründen fehlschlägt. Sie können frühe Verbesserungen im Entwicklungszyklus von Version 2.5 erwarten.