本指南提供有关创建、下载和恢复 Discourse 数据库备份的分步说明。
所需用户级别:管理员
Discourse 允许网站管理员创建和下载网站数据库的副本。然后可以将备份上传并恢复到任何 Discourse 论坛。
Discourse 备份包含完整的网站数据库,其中包含网站上的所有内容:主题、帖子、用户、群组、设置、主题等。根据创建备份文件的方式,它可能包含上传内容,也可能不包含。包含上传内容的备份保存为
.tar.gz文件,而不包含上传内容的备份保存为.sql.gz文件。有关详细信息,请参阅下一部分。尽管插件创建的数据存在于数据库中,但插件本身安装在您的
app.yml文件中。要将您的网站恢复到新服务器,您需要确保您的安装包含所需的插件。只读模式
您可以在“备份”页面上启用只读模式,以防止在与管理员相关的任务中更改网站。在此处了解有关只读模式的更多信息。
创建备份
要创建 Discourse 网站的备份,请执行以下步骤:
- 转到您网站的 “管理/备份” 部分。
- 点击 “备份” 按钮。
- 将打开一个模态窗口,其中有一个复选框,用于将网站的上传内容包含在备份中。根据您的偏好勾选或取消勾选此选项。
如果您的网站由我们托管,并且您希望创建包含上传内容的备份,请在创建备份之前联系 Discourse 团队。
- 点击确认按钮开始备份。
下载备份
备份完成后,Discourse 将向您发送通知。
- 点击通知中的链接返回到“备份”页面。然后点击“下载”按钮。
- 系统会向您发送一封包含备份下载链接的电子邮件。点击链接将备份保存到您的计算机。
上传备份
- 要上传备份,请转到您网站的 “管理/备份” 部分,导航到 “备份文件” 选项卡,然后点击 “上传” 按钮。
- 这将打开您浏览器的文件管理器。从文件系统中选择备份文件,然后点击文件管理器的“打开”按钮。新的备份文件将显示在文件列表中。
恢复备份
在能够恢复备份文件之前,您需要启用
allow restore网站设置。然后在“备份”页面上,找到要恢复的备份,点击更多选项菜单 (⋮),然后选择 “恢复”。
恢复备份文件将覆盖网站上的所有数据。恢复备份后,您将被注销出网站,需要使用来自已恢复网站的凭据重新登录。
确保要恢复到的网站正在运行与旧网站相同版本的 Discourse。最好在运行备份/恢复过程之前将两个网站都更新到最新版本。
恢复过程会自动将
disable emails设置为“非员工”,因此在您准备好之前不会向您的网站用户发送电子邮件。
如果您的网站由 Discourse 托管,“恢复”选项将被禁用。上传备份文件后,请联系 Discourse 团队并告知我们您希望恢复的备份文件名。我们将为您恢复。
命令行备份和恢复
对于熟悉命令行界面的管理员,您可以以编程方式创建和管理备份:
- 备份存储在
/var/discourse/shared/standalone/backups。- 使用以下命令启动备份:
./launcher run app discourse backup或
docker exec app bash -c "discourse backup"有关命令行备份的更多信息,请参阅:从命令行备份 discourse。
是否有办法以编程方式创建和下载此备份文件?我的意思是,我在服务器上有一些 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"
我想是这样。
在 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...
我下载备份时遇到了困难。当我点击下载按钮时,我收到一个提示,说下载链接已发送到我的电子邮件地址。但是,现在已经过去两天了,我仍然没有收到邮件。
请帮忙。
您尝试过 ./discourse-doctor 吗
感谢您的回复。主要问题是我已将另一个电子邮件从后端配置为管理员。端口号 587 的连接一直失败,电子邮件也无法发送。有什么解决办法吗?或者有其他端口可以使用?
这是您确认过的备用电子邮件地址的回复吗?
我使用端口 587 连接到 smtp.eu.mailgun.org
好的,所以您希望在根域上使用 Office 365,并在子域上使用 Discourse 的事务性电子邮件/邮件接收器(通过 MX 记录)?
是的,因为我的电子邮件设置在 365 上
我认为问题的原因在于您将 Office 365 用于事务性电子邮件。您可能需要使用像 Mailgun 或 Brevo 这样的事务性邮件服务,它们都与 Discourse 一起使用,没有遇到太多问题。
我可以帮助您进行设置。目前,您将无法使用您的 Office 365 订阅收发 discourse 电子邮件。
我们这里讨论的论坛规模有多大?免费电子邮件计划可能就足够了。
我使用 Brevo 配置了 SMTP 设置并使用了端口 587,但仍然收到相同的错误。请帮忙,我不知道哪里出错了。
嗯……端口改为 2525 怎么样?
你成功了吗?
上传备份文件的时候,无法选择下载的备份文件,显示灰色,无法被选定。文件是 tar.gz 后缀。
您尝试从中恢复的上传文件是最新版本的 Discourse 吗?
您是否更改了文件的名称?如果不是备份创建时给出的名称,它将无法工作。








