Discourse の自動バックアップを設定する

:bookmark: このガイドでは、ローカルサーバーおよびS3互換ストレージでのストレージオプションを含め、Discourseの自動バックアップを設定する方法を説明します。

Discourseプラットフォームの自動バックアップを設定する方法を学びましょう。

このガイドでは、自動バックアップの設定、ローカルサーバーまたはS3互換ストレージへの保存、Amazon Glacierなどのストレージ保持オプションの管理について説明します。

自動バックアップの設定

  1. /admin設定に移動します。
  2. Backupセクションを選択します。
  3. backup_frequencyを希望の間隔(日数)に設定します。デフォルトは7(週次)です。日次バックアップの場合は1に設定し、自動バックアップを無効にする場合は0に設定します。最大値は30です。

backup_frequencybackup_frequency100%75%50%

追加のバックアップ設定

  • backup_time_of_day — バックアップが実行される時刻(UTC)。デフォルト: 3:30
  • backup_with_uploads — スケジュールされたバックアップにアップロードを含めます。デフォルト: 有効。これを無効にすると、データベースのみがバックアップされます。
  • maximum_backups —保持するバックアップの最大数。古いバックアップは自動的に削除されます。デフォルト: 5
  • remove_older_backups — 指定された日数より古いバックアップを削除します。無効にする場合は空白のままにします。

バックアップをローカルサーバーに保存する

デフォルトでは、バックアップはローカルサーバーに保存されます。セルフホスト型インスタンスの場合、/var/discourse/shared/standalone/backups/defaultでアクセスできます。

バックアップをS3互換ストレージに保存する

管理パネルの使用

  1. S3バケットを作成します。
  2. 管理パネルでs3_backup_bucketを設定します。
  1. s3_access_key_ids3_secret_access_key、およびs3_regionを設定します。
  2. backup_locationを「S3」に設定します。

image

:warning: 警告

バックアップと通常のアップロードを同じバケット同じフォルダーに保存することは、もはやサポートされておらず、機能しません

s3_backup_bucketパスはバックアップ専用として使用する必要があります。他のファイルを含むバケットを使用する必要がある場合は、s3_backup_bucket設定でプレフィックス(例: my-awesome-bucket/backups)を指定し、そのプレフィックスを持つファイルがプライベートであることを確認してください。

これ以降、すべてのバックアップはS3にアップロードされ、ローカルには保存されなくなります。ローカルストレージは、バックアップと復元の間のテンポラリファイルにのみ使用されます。

管理ダッシュボードのBackupsタブに移動してバックアップを参照してください。いつでもダウンロードして手動でオフサイトバックアップを実行できます。

app.ymlで環境変数を使用する

app.ymlで環境変数を使用してS3バックアップを設定することもできます。詳細については、Configure an S3 compatible object storage provider for uploadsを参照してください。

上記の記事では、ファイル/画像アップロードとバックアップの両方でS3を設定するapp.ymlを扱っています。アップロード(ファイル/画像)用ではなく、バックアップ用にのみS3を使用したい場合は、app.yml設定から次のパラメーターを省略できます。

  • DISCOURSE_USE_S3
  • DISCOURSE_S3_CDN_URL
  • DISCOURSE_S3_BUCKET

この場合、after_assets_precompileステップを設定したり、CDNを設定したりする必要もありません。

記事で言及されているように、ストレージプロバイダーに必要な他のすべてのパラメーターを含めてください。S3をバックアップのみにアクティブにする場合の1つの設定例(Scaleway S3の場合)を次に示します。

DISCOURSE_S3_REGION: nl-ams
DISCOURSE_S3_ENDPOINT: https://s3.nl-ams.scw.cloud
DISCOURSE_S3_ACCESS_KEY_ID: my_access_key
DISCOURSE_S3_SECRET_ACCESS_KEY: my_secret_access_key
DISCOURSE_S3_BACKUP_BUCKET: my_bucket/my_folder
DISCOURSE_BACKUP_LOCATION: s3

低コストストレージへのアーカイブ

AWS S3では、S3バックアップコストを低く抑えるために、Glacierバケットへの自動移動のライフサイクルルールを有効にすることもできます。他のストレージプロバイダーも同様の機能を提供していることがよくあります。

「いいね!」 59

You are able to Archive Backups from your S3 Bucket to Glacier.
It is cheaper, but an Restore attemps more Time.

This Site will Help you to reduce Backup costs.:

「いいね!」 11

Setting this up can be rather confusing. Here’s a simple guide to help you out.

  • Log into your Discourse admin panel
  • Configure daily backups
  • Set maximum backups to 7
  • Log into your Amazon Web Services account
  • Go in the S3 Dashboard
  • Open the bucket containing the backups
  • Click on the properties tab
  • Activate versioning
  • Open the Lifecycle menu
  • Add a rule for the whole bucket
  • Set current version to expire after 15 days
  • Set previous version to
  • Archive to Glacier after 1 days
  • expire after 91 days
  • Save and logout

How it works

Versioning will keep backups automaticly deleted by Discourse. One day after beeing deleted it will be moved to the Glacier storage. After 91 days it will be delete from the Glacier storage.

Warning

Amazon charge you for item stored in Glacier for 90 days even if you delete them before. Make sure your Glacier Lyfecicle keep your file at least 90 days.

「いいね!」 11

I may have missed this, but how to I make sure a bucket for backups is private the proper way? Setting up file and image uploads to S3 doesn’t seem to be described here.

「いいね!」 1

Looks like there is no such option anymore.

UPD: ah, now it’s split into 2 steps of this wizard.

So I guess it should be like this:

「いいね!」 2

IAM アクセスキーとシークレットを使用せず、インスタンスに割り当てられた AWS ロールを使用し、settings メニューで s3 use iam profile が有効になっている場合、S3 バックアップ機能は正常に動作しますか?

編集:答えは「はい」です!適切なリージョンが設定されていることだけ確認してください。

「いいね!」 1

私も同じ問題に直面しましたが、ポリシー文書に数行を追加することで解決しました:

"Resource": [
        "arn:aws:s3:::your-uploads-bucket",
        "arn:aws:s3:::your-uploads-bucket/*",
        "arn:aws:s3:::your-backups-bucket",
        "arn:aws:s3:::your-backups-bucket/*"
      ]

これは OP(ウィキではありません)に追加すべきでしょうか?それとも Set up file and image uploads to S3 の OP に追加すべきでしょうか?

「いいね!」 2

毎日バックアップをデフォルトにしない合理的な理由はあるのでしょうか?

OP に必要な修正

S3 バックアップを Glacier へ移行することについての記述を追加する?
S3 に関する記述を削除し、Configure an S3 compatible object storage provider for uploads へのリンクを貼る

それはやりすぎで高価になります。車のオイルを500マイルごとに交換しないのと同じ理由です。

サーバーのバックアップは週に一度しか行っていないのですか?

「なぜバックアップを30個も保持しないのか?」という問いには、あなたの「500マイルごとにオイル交換をするようなもの」というアナロジーがうまく当てはまると思いますが、ここでは意味がわかりません。

もし5つのバックアップを保持するなら、多くの人は毎日バックアップを取って、復元が必要な場合でも最大1日分のデータ損失で済むようにする方が好むのではないでしょうか。古いバックアップが役立った記憶があるのは、画像がトームストーンから消えてしまった時だけです。

もしディスク容量が5つのバックアップを保持できないほど少ないなら、4〜5週間待つよりも、5日後にまだ記憶が残っているうちにそのことに気づく方が良いでしょう。

「いいね!」 1

はい、その通りです。自分でホストしているサーバーの場合です。

もし異なる設定を希望される場合は、デフォルトから自由に編集してください。それを妨げるものは何でしょうか?

「いいね!」 1

ええ、本当にそうですね!

私はこのようなトピックを整理している最中です。もしデフォルト値が変更されていれば、こんなことは必要なかったのに!

デフォルト値は変更されないと思うので、先に進みます。:wink

「いいね!」 2

週に一度がよい出発点であり、堅実なデフォルトです。

「いいね!」 1

私も全く同じ問題に遭遇しました!

初期の投稿にもこの点に関する注記を追加することをお勧めします!

「いいね!」 3

MinIO のように、S3 互換の異なるプロバイダーへのアップロードに使えると良いですね。

Minio を使用したい場合は、アップロード用のオブジェクトストレージの使用 (S3 およびそのクローン) を参照してください。バックアップとアセット用に異なるサービスを使用したい場合は、残念ながら対応していません(ただし、あるバケットから別のバケットへコピーするためのトリガーを設定する方法はあります)。

いいえ、バックアップ用です。ネットワーク上の別のマシンに自動的に転送されるようにするためです。

それなら、私がリンクしたガイドがお探しのものです。

「いいね!」 1

1日1回よりも頻繁に設定することは可能でしょうか?推測を避けるため、バックアップの頻度を浮動小数点数で設定したいと考えています。

「いいね!」 1

より頻繁なバックアップが必要な場合は、外部で行う必要があります。

「いいね!」 3