创建、下载和恢复您的 Discourse 数据库备份

:bookmark: 本指南提供有关创建、下载和恢复 Discourse 数据库备份的分步说明。

:person_raising_hand: 所需用户级别:管理员

Discourse 允许网站管理员创建和下载网站数据库的副本。然后可以将备份上传并恢复到任何 Discourse 论坛。

Discourse 备份包含完整的网站数据库,其中包含网站上的所有内容:主题、帖子、用户、群组、设置、主题等。根据创建备份文件的方式,它可能包含上传内容,也可能不包含。包含上传内容的备份保存为 .tar.gz 文件,而不包含上传内容的备份保存为 .sql.gz 文件。有关详细信息,请参阅下一部分。

尽管插件创建的数据存在于数据库中,但插件本身安装在您的 app.yml 文件中。要将您的网站恢复到新服务器,您需要确保您的安装包含所需的插件。

只读模式

您可以在“备份”页面上启用只读模式,以防止在与管理员相关的任务中更改网站。在此处了解有关只读模式的更多信息

创建备份

要创建 Discourse 网站的备份,请执行以下步骤:

  1. 转到您网站的 “管理/备份” 部分。
  2. 点击 “备份” 按钮。

  1. 将打开一个模态窗口,其中有一个复选框,用于将网站的上传内容包含在备份中。根据您的偏好勾选或取消勾选此选项。

:warning: 如果您的网站由我们托管,并且您希望创建包含上传内容的备份,请在创建备份之前联系 Discourse 团队。

  1. 点击确认按钮开始备份。

下载备份

备份完成后,Discourse 将向您发送通知。

  • 点击通知中的链接返回到“备份”页面。然后点击“下载”按钮。

  • 系统会向您发送一封包含备份下载链接的电子邮件。点击链接将备份保存到您的计算机。

上传备份

  • 要上传备份,请转到您网站的 “管理/备份” 部分,导航到 “备份文件” 选项卡,然后点击 “上传” 按钮。

  • 这将打开您浏览器的文件管理器。从文件系统中选择备份文件,然后点击文件管理器的“打开”按钮。新的备份文件将显示在文件列表中。

恢复备份

在能够恢复备份文件之前,您需要启用 allow restore 网站设置。然后在“备份”页面上,找到要恢复的备份,点击更多选项菜单 (⋮),然后选择 “恢复”

:warning: 恢复备份文件将覆盖网站上的所有数据。恢复备份后,您将被注销出网站,需要使用来自已恢复网站的凭据重新登录。

:warning: 确保要恢复到的网站正在运行与旧网站相同版本的 Discourse。最好在运行备份/恢复过程之前将两个网站都更新到最新版本。

恢复过程会自动将 disable emails 设置为“非员工”,因此在您准备好之前不会向您的网站用户发送电子邮件。

:discourse: 如果您的网站由 Discourse 托管,“恢复”选项将被禁用。上传备份文件后,请联系 Discourse 团队并告知我们您希望恢复的备份文件名。我们将为您恢复。

命令行备份和恢复

对于熟悉命令行界面的管理员,您可以以编程方式创建和管理备份:

  • 备份存储在 /var/discourse/shared/standalone/backups
  • 使用以下命令启动备份:
./launcher run app discourse backup

docker exec app bash -c "discourse backup"

有关命令行备份的更多信息,请参阅:从命令行备份 discourse

32 个赞

是否有办法以编程方式创建和下载此备份文件?我的意思是,我在服务器上有一些 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"

我想是这样。

2 个赞

Install Discourse for development using Docker 中概述的 Docker 开发环境中,这是否也可能?

当我尝试按照上面“创建备份”部分 Create, download, and restore a backup of your Discourse database 中的描述进行操作时,我收到错误 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: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...
1 个赞

我下载备份时遇到了困难。当我点击下载按钮时,我收到一个提示,说下载链接已发送到我的电子邮件地址。但是,现在已经过去两天了,我仍然没有收到邮件。

请帮忙。

您尝试过 ./discourse-doctor

感谢您的回复。主要问题是我已将另一个电子邮件从后端配置为管理员。端口号 587 的连接一直失败,电子邮件也无法发送。有什么解决办法吗?或者有其他端口可以使用?

1 个赞

这是您确认过的备用电子邮件地址的回复吗?

我使用端口 587 连接到 smtp.eu.mailgun.org

这是我在服务器设置上看到的内容。

好的,所以您希望在根域上使用 Office 365,并在子域上使用 Discourse 的事务性电子邮件/邮件接收器(通过 MX 记录)?

是的,因为我的电子邮件设置在 365 上

我认为问题的原因在于您将 Office 365 用于事务性电子邮件。您可能需要使用像 Mailgun 或 Brevo 这样的事务性邮件服务,它们都与 Discourse 一起使用,没有遇到太多问题。

1 个赞

我可以帮助您进行设置。目前,您将无法使用您的 Office 365 订阅收发 discourse 电子邮件。

我们这里讨论的论坛规模有多大?免费电子邮件计划可能就足够了。

我使用 Brevo 配置了 SMTP 设置并使用了端口 587,但仍然收到相同的错误。请帮忙,我不知道哪里出错了。

嗯……端口改为 2525 怎么样?

1 个赞

你成功了吗?

上传备份文件的时候,无法选择下载的备份文件,显示灰色,无法被选定。文件是 tar.gz 后缀。

您尝试从中恢复的上传文件是最新版本的 Discourse 吗?

您是否更改了文件的名称?如果不是备份创建时给出的名称,它将无法工作。

1 个赞