每日备份足够吗?

我有点“控制狂”,不想丢失任何数据。只看到每日备份总让我觉得服务器可能会出问题,然后整整一天的数据(可能非常重要)就丢失了。

不用太技术性,因为我不是专家,有没有可能建立一个系统,将发布/添加的内容复制到另一个服务器上?我认为社交媒体平台发布内容时就是这样运作的吧?

如果 Discourse 不支持这种方式,那么每小时备份会不会更安全一些?我没有看到这个选项。它似乎最低只能到 1(每日)或 0(禁用)。

你们是如何处理这个问题的?

在一个好的平台上拥有一个好的 VPS,不可能出现任何问题,尤其是在升级期间。

在运行我的一个论坛近 8 年的时间里,我从未丢失过任何数据。

每日批处理是为大多数自托管用户设计的权衡。

它是一个相对简单的系统、方案,不需要太多的空间和处理能力。

我无法想象对大多数人来说,更频繁地进行备份是值得的。

我从未需要在在线崩溃时使用备份,只在迁移到新服务器时使用(因为我超出了较小服务器的容量!)

您的体验可能有所不同 (YMMV)

然而,如果您确实认为需要更频繁的设置……请准备好自定义您的设置,并准备好维护该自定义设置(这可能涉及学习如何操作和/或雇人帮助您)。

3 个赞

备份和复制是两件不同的事情。

备份提供特定时间点的数据快照。它们提供了一个恢复点。

复制是将每个操作分发到不同的系统,以便您可以在多个位置拥有它。删除操作也会被复制。

如果您真的想实现容错,就需要同时拥有两者。(以及更多……)

因此,复制只解决了在多个位置拥有当前数据的问题。备份提供了将系统恢复到特定时间点的方法。

Discourse 使用两种机制进行存储:

  1. PostgreSQL 数据库,用于除附加文件外的所有内容
  2. 附加文件存储在本地系统或 S3 中

要备份和/或复制存储在 PostgreSQL 数据库中的数据,您可以查阅 PostgreSQL 文档了解如何操作。关于备份,以及复制

附加文件有点棘手。如果存储在 S3 中,您可以使用 S3 备份。对于本地存储的文件,您可以使用各种本地系统选项。

创建完整备份是一项繁重的工作,具体取决于数据量。因此,不能轻易更频繁地执行此操作。Discourse 的标准备份程序是创建完整备份。如果您真的想降低丢失数据的风险,就需要寻找其他选项。

您的托管服务可能会提供一个选项:卷快照。这提供了一种创建存储在卷中的数据的“即时”副本的方法。这允许您将卷恢复到该时间点。卷快照也可能在操作系统中可用,具体取决于所使用的文件系统。(例如,btrfs 支持此功能。)

除此之外,PostgreSQL 文档还介绍了如何创建更连续的数据库备份,从而实现出色的时间点恢复。 (不要忘记将备份发送到异地!)这比完整备份快得多。

对于更细粒度的附件备份,您可以使用各种允许管理完整+差异备份的备份工具。例如 duplicity。或者您可以使用 rsync(不带删除选项)。在快照之间,您仍然可能会丢失文件。不带删除地使用 S3 会更安全,因为文件已经在另一个系统上了。

总而言之。Discourse 的标准备份机制不太适合更频繁的备份计划。如果您想进行更多备份,请使用标准 PostgreSQL 备份/复制功能、S3、卷快照等的组合。

在我的站点上,我没有使用 Discourse 的备份系统进行常规备份。我仍然有每日备份,但我使用了 pg_dumps 和 duplicity 配置的组合(通过 backupninja 进行协调)。

3 个赞

我每 4 小时进行一次数据库备份。这是我可以接受可能丢失帖子的时间范围。相比之下,我的电子商务系统每 5 分钟备份一次。

每天一次是不够的。最多丢失 24 小时的主题/帖子价值太高了。

1 个赞

这关系到你可能会丢失多少内容——在一个安静的论坛上,每隔几天备份一次不成问题,但在一个非常繁忙的论坛上,即使是一个小时也可能感觉损失很大。但你需要考虑故障的不可预测性:如果一年中丢失一小时的帖子,比如,这会很令人不安吗?每十年呢?我们每个人对风险都有自己的看法。

2 个赞

比帖子丢失更大的损失可能是 24 小时内创建的所有新账户。

特别是如果 Discourse 被用作您其他应用程序或其他集成的单点登录 (SSO) 提供商。

我不认为这个“每日 0 次”的答案是正确的:

Screenshot 2025-12-29 at 13.26.18

1 个赞

零会禁用备份。此设置仅决定备份之间的天数。

@Jagster 定制的频繁数据库备份听起来像是您需要的更合适的解决方案,如果每日备份不够的话。

是的,我只是想强调人工智能给人们的建议是多么危险地错误。

想象一下,如果有人看到了这个并照做了,因为这是他们被告知要做的? :confused:

4 个赞

看起来它是从 https://meta.discourse.org/t/staging-test-server-ignored-the-environment-variable/390085/2?u=falco 获取的。我会更新帖子使其更清晰。

5 个赞