Wiederherstellung fehlgeschlagen – S3 (kompatibel) Sicherung

Also ich versuche gerade, ein Backup wiederherzustellen, bekomme aber Fehler. Es scheint, als läge das an den S3-Backups.

Wichtig zu erwähnen: Ich nutze einen S3-kompatiblen Dienst (Scaleway). Allerdings bin ich mir nicht sicher, ob dieser Fehler spezifisch für den kompatiblen Dienst ist oder nicht. Die Einrichtung hat sehr reibungslos funktioniert und lief bisher einwandfrei. Falls es sich um ein Scaleway-spezifisches Problem handelt, werde ich den Dienst wahrscheinlich nicht weiter nutzen, da mir bekannt ist, dass offiziell nur AWS S3 unterstützt wird.

Ich habe mich bei der Einrichtung an diese Anleitung gehalten: Configure an S3 compatible object storage provider for uploads. Das folgende Fragment befindet sich also in der app.yml-Datei:

  after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets

Die gleiche Konfiguration habe ich auch für Scaleway in der app.yml-Datei verwendet (ich habe sie nicht in den Admin-Einstellungen eingerichtet, da dies unnötig erschien): Scaleway-Konfiguration

Ich habe es sowohl über den Admin-Bereich als auch über die Kommandozeile auf dem aktuellen Server versucht, sowie einen neuen Server konfiguriert (die app.yml wurde kopiert) und die Wiederherstellung über die Kommandozeile durchgeführt. Immer dieselben Fehler.

[GESTARTET]
'system' hat die Wiederherstellung gestartet!
Wiederherstellung wird als laufend markiert...
Sicherstellen, dass /var/www/discourse/tmp/restores/default/2020-07-16-131434 existiert...
Herunterladen des Archivs in das tmp-Verzeichnis...
#<Thread:0x000055c73a831df8@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:116 run> wurde mit einer Ausnahme beendet (report_on_exception ist true):
Traceback (most recent call last):
    1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:120:in `block (3 levels) in thread_batches'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:128:in `write': undefined method `split' for nil:NilClass (NoMethodError)
AUSNAHME: undefined method `split' for nil:NilClass
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:128:in `write'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:120:in `block (3 levels) in thread_batches'
Versuch eines Rollbacks...
Ein Rollback war nicht erforderlich.
Aufräumen...
Entfernen des tmp-Verzeichnisses '/var/www/discourse/tmp/restores/default/2020-07-16-131434'...
Freigabe von Sidekiq...
Wiederherstellung wird als abgeschlossen markiert...
'system' über das Ende der Wiederherstellung benachrichtigt...
#<Thread:0x000055c73a831510@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:116 run> wurde mit einer Ausnahme beendet (report_on_exception ist true):
Traceback (most recent call last):
    1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:120:in `block (3 levels) in thread_batches'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:128:in `write': undefined method `split' for nil:NilClass (NoMethodError)
#<Thread:0x000055c73a8316c8@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:116 run> wurde mit einer Ausnahme beendet (report_on_exception ist true):
Traceback (most recent call last):
    1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:120:in `block (3 levels) in thread_batches'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:128:in `write': undefined method `split' for nil:NilClass (NoMethodError)
#<Thread:0x000055c73a8319e8@/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:116 run> wurde mit einer Ausnahme beendet (report_on_exception ist true):
Traceback (most recent call last):
    1: from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:120:in `block (3 levels) in thread_batches'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/aws-sdk-s3-1.66.0/lib/aws-sdk-s3/file_downloader.rb:128:in `write': undefined method `split' for nil:NilClass (NoMethodError)
Fertig!
[FEHLGESCHLAGEN]
Wiederherstellung abgeschlossen.

Vielleicht liegt der Fehler nur beim Herunterladen des Backups? :face_with_monocle:

Klingt danach.

Ich würde den Sicherungsspeicherort in der app.yml auf „lokal

Ah, das ergibt Sinn. Danke @Falco! :slight_smile:

Ich werde es morgen früh versuchen und mich dann wieder melden~

Danke @Falco, das schätze ich sehr! Hat völlig reibungslos funktioniert :smiley:

Ich bin auf einen neuen Server migriert, aber es hätte wahrscheinlich auch geklappt, auf demselben Server zu bleiben.

Falls jemand anderes dies später referenzieren möchte, hier die Schritte im Detail (beachte, dass meine S3-Einstellungen nur in der app.yml-Datei wie hier beschrieben waren, ohne Anpassungen in den Admin-Einstellungen):

  1. Auf der Quellseite: Falls es keine Rollback-Situation ist, aktiviere „E-Mails deaktivieren