このガイドでは、Discourseデータベースのバックアップの作成、ダウンロード、復元に関するステップバイステップの手順を説明します。
必要なユーザーレベル:管理者
Discourseでは、サイト管理者がサイトのデータベースのコピーを作成およびダウンロードできます。その後、バックアップを任意のDiscourseフォーラムにアップロードして復元できます。
Discourseのバックアップには、サイト上のすべてのコンテンツ(トピック、投稿、ユーザー、グループ、設定、テーマなど)を含む完全なサイトデータベースが含まれます。バックアップファイルがどのように作成されるかによって、アップロードが含まれる場合と含まれない場合があります。アップロードを含むバックアップは
.tar.gzファイルとして保存され、アップロードを含まないバックアップは.sql.gzファイルとして保存されます。詳細は次のセクションを参照してください。プラグインによって作成されたデータはデータベースに存在しますが、プラグイン自体は
app.ymlファイルにインストールされます。サイトを新しいサーバーに復元するには、インストールに必要なプラグインが含まれていることを確認する必要があります。読み取り専用モード
管理者関連のタスクのためにサイトの変更を防ぐには、[Backups] ページで読み取り専用モードを有効にできます。読み取り専用モードの詳細については、こちらをご覧ください。
バックアップの作成
Discourseサイトのバックアップを作成するには、次の手順に従います。
- サイトのAdmin / Backupsセクションに移動します。
- Backupボタンをクリックします。
- バックアップにサイトのアップロードを含めるかどうかのチェックボックスがあるモーダルウィンドウが開きます。ご希望に応じて、このオプションをチェックまたはチェック解除します。
サイトが弊社によってホストされており、アップロードを含むバックアップを作成したい場合は、バックアップを作成する前にDiscourseチームに連絡してください。
- 確認ボタンをクリックしてバックアップを開始します。
バックアップのダウンロード
バックアップが完了すると、Discourseから通知が送信されます。
- 通知内のリンクをクリックして[Backups]ページに戻ります。次に、Downloadボタンをクリックします。
- バックアップをダウンロードするためのリンクが記載されたメールが送信されます。リンクをクリックして、バックアップをコンピューターに保存します。
バックアップのアップロード
- バックアップをアップロードするには、サイトのAdmin / Backupsセクションに移動し、Backup Filesタブに移動して、Uploadボタンをクリックします。
- これにより、ブラウザのファイルマネージャーが開きます。ファイルシステムからバックアップを選択し、ファイルマネージャーのOpenボタンをクリックします。新しいバックアップファイルがファイルリストに表示されます。
バックアップの復元
バックアップファイルを復元する前に、サイト設定の
allow restoreを有効にする必要があります。次に、Backupsページで復元したいバックアップを見つけ、その他のオプションメニュー(⋮)をクリックし、Restoreを選択します。
バックアップファイルを復元すると、サイト上のすべてのデータが上書きされます。バックアップが復元されると、サイトからログアウトし、復元されたサイトの資格情報で再度ログインする必要があります。
復元先のサイトが、古いサイトと同じバージョンのDiscourseを実行していることを確認してください。バックアップ/復元プロセスを実行する前に、両方のサイトを最新バージョンに更新するのが最善です。
復元プロセスでは、サイトのユーザーにメールが送信されないように、
disable emails設定が自動的に「non-staff」に設定されます。
サイトがDiscourseによってホストされている場合、Restoreオプションは無効になります。バックアップファイルをアップロードした後、Discourseチームに連絡し、復元したいバックアップファイルの名前を伝えてください。こちらで復元します。
コマンドラインでのバックアップと復元
コマンドラインに慣れている管理者の方は、プログラムでバックアップを作成および管理できます。
- バックアップは
/var/discourse/shared/standalone/backupsに保存されます。- バックアップを開始するには:
./launcher run app discourse backupまたは
docker exec app bash -c "discourse backup"コマンドラインでのバックアップの詳細については、Backup discourse from the command lineを参照してください。
プログラムでこのバックアップファイルを作成してダウンロードする方法はありますか?つまり、サーバーで大量の他のサービスをバックアップする cron スクリプトを実行していますが、バックアップをそこに配置するために、サーバーで直接いくつかの CLI コマンドを実行できますか?たとえば、./launcher app backup new-backup.backup のようなコマンドです。
バックアップは /var/discourse/shared/standalone/backups にあります。
バックアップは以下で開始できます。
./launcher run app discourse backup
または
docker exec app bash -c "discourse backup"
だと思います。
Docker開発環境でも、Install Discourse for development using Docker で概説されているように設定した場合、これは可能でしょうか?
上記の「バックアップの作成」セクション(Create, download, and restore a backup of your Discourse database error: connection to database “discourse_development” failed: connection to server on socket “/var/run/postgresql/.s.PGSQL.5432” failed: FATAL: Peer authentication failed for user “postgres”` というエラーが発生します。
失敗したバックアップのフルログ
[2024-09-04 15:03:39] [STARTED]
[2024-09-04 15:03:39] 'raphael.dasgupta' has started the backup!
[2024-09-04 15:03:39] Marking backup as running...
[2024-09-04 15:03:39] Making sure '/src/tmp/backups/default/2024-09-04-150339' exists...
[2024-09-04 15:03:39] Making sure '/src/public/backups/default' exists...
[2024-09-04 15:03:39] Updating metadata...
[2024-09-04 15:03:39] Dumping the public schema of the database...
[2024-09-04 15:03:40] pg_dump: error: connection to database "discourse_development" failed: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "postgres"
[2024-09-04 15:03:40] EXCEPTION: pg_dump failed
[2024-09-04 15:03:40] /src/lib/backup_restore/backuper.rb:173:in `dump_public_schema'
/src/lib/backup_restore/backuper.rb:36:in `run'
/src/script/spawn_backup_restore.rb:9:in `backup'
/src/script/spawn_backup_restore.rb:31:in `block in <main>'
/src/script/spawn_backup_restore.rb:4:in `fork'
/src/script/spawn_backup_restore.rb:4:in `<main>'
[2024-09-04 15:03:40] Cleaning stuff up...
[2024-09-04 15:03:40] Removing '.tar' leftovers...
[2024-09-04 15:03:40] Marking backup as finished...
[2024-09-04 15:03:40] Notifying 'raphael.dasgupta' of the end of the backup...
バックアップのダウンロードに苦労しています。ダウンロードボタンをクリックすると、ダウンロードリンクがメールアドレスに送信されたというプロンプトが表示されました。しかし、2日以上経ってもメールが届きません。
お手数ですが、ご協力いただけますでしょうか。
./discourse-doctor を試しましたか
ご返信ありがとうございます。主な問題は、バックエンドから管理者として別のメールを設定したことです。ポート番号587への接続が失敗し続け、メールが送信されません。回避策はありますか、または別のポートを使用できますか?
これが確認済みの代替返信メールアドレスですか?
ポート587はsmtp.eu.mailgun.orgに接続するために使用します
承知いたしました。ルートドメインにはOffice 365を、サブドメインにはDiscourseのトランザクションメール/メール受信者をMXレコードで設定したいということですね?
はい、メールが365に設定されているためです。
問題の原因は、トランザクションメールにOffice 365を使用していることだと思います。MailgunやBrevoのようなトランザクションメールサービスの使用を検討してください。どちらもDiscourseで問題なく使用されています。
設定についてはお手伝いできます。現在、Office 365 サブスクリプションを使用してディスコースのメールを送受信することはできません。
どのくらいの規模のフォーラムをお考えですか?無料のメールプランで十分かもしれません。
Brevo を使用して SMTP 設定を行い、ポート 587 を使用しましたが、同じエラーが発生しています。どこで間違っているのかわかりません。ご協力いただけますでしょうか。
うーん…ポートを2525に変更するのはどうですか?
これが機能するかどうか確認できましたか?
バックアップファイルをアップロードする際、ダウンロードしたバックアップファイルを選択できません。ファイルが灰色表示になり、選択できません。ファイルはtar.gzの拡張子です。
復元しようとしているアップロードされたファイルは、Discourse の最近のバージョンですか?
ファイル名を変更しましたか?バックアップが作成されたときに指定された名前でないと機能しません。








