バックアップからの復元が S3 移行により失敗

Discourse インスタンスを新しいサーバーに移行しようとしましたが、UI および CLI を通じたリストア操作が失敗しました。これは S3 移行に関連する問題です。

また、Rails コンソールで以下の設定を有効にしていました。

SiteSetting.migrate_to_new_scheme = true
Jobs::MigrateUploadScheme.new.execute(nil)

失敗に関連するログは以下の通りです:

Remapping '//thinnal.s3.dualstack.us-east-1.amazonaws.com/' to '/uploads/default/'
incoming_emails=2
optimized_images=3851
post_revisions=86
posts=618
stylesheet_cache=10
topic_links=107
topics=150
uploads=419
user_histories=20
Migrating uploads to S3...
Checking if default already migrated...
1971 of 1977 uploads are not migrated to S3. S3 migration failed for db 'default'.
266 posts are not remapped to new S3 upload URL. S3 migration failed for db 'default'.
Looking for missing uploads on: default

0 post uploads are missing.

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...
Dropping function from the discourse_functions schema
Removing tmp '/var/www/discourse/tmp/restores/default/2019-09-02-140750' directory...
Unpausing sidekiq...
Marking restore as finished...
Notifying 'system' of the end of the restore...
Finished!
[FAILED]
Restore done.

同様の報告が検索結果にあります。復元時に S3 アップロードを無効にすれば解決したはずです。

@pfaffman さん、ありがとうございます。試してみます。

S3 アップロードを無効化するコマンドライン(rails console)の方法はご存知でしょうか?

復元中は S3 へのアップロードが無効化されていました。それでも失敗しました。

既知の問題です。回避策として、バックアップを作成する前にenable_s3_uploads サイト設定を一時的に無効にすることができます。復元後、新しいサーバーで再度有効にしてください。

ありがとうございます!はい、バックアップを取得する前にS3へのアップロードを無効にしてから、リストアが正常に完了しました。

こんにちは

バックアップが有効な状態で作成された場合、どうすればよいでしょうか :slight_smile:

解決しました。

EmEditor で dump.sql を開き、enable_s3_uploads と S3 を検索し、すべての「t」を「f」に、すべての「true」を「false」に置換しました。

復元に成功しました :slight_smile:

では、手を汚すことになりますね。ごめんなさい。来週からリファクタリングとバックアップ・リストアの改善を始める予定ですが、すべてが再び完璧になるまでには時間がかかるかもしれません。

それは素晴らしいですね!まさにその手順を提案しようとしていたところです。:wink:

将来これを読む人のために:dump.sql(非常に大きい場合があります)を編集する必要がある場合は、エディタとして Scintilla and SciTE をお勧めします。このエディタは、そのような大きなファイルでも問題なく扱えます。