备份不再进行

大约在三月初,我的 Discourse 备份开始失败。

设置并未更改,但可能(很可能确实)进行过 Discourse 升级。

备份存储于本地,除将最大备份数设为 3、备份频率设为 3 外,其余设置均为默认值。

我可以手动执行备份,且操作成功,但我注意到现在的备份文件是 sql.gz,而之前是 tar.gz 文件。

然而,自动备份并未运行,看似在运行,却没有任何错误报告。备份页面显示“无可用备份”(包括我几天前执行的手动备份,现已消失),而“备份 ➤ 日志”显示“暂无日志……”。

我尝试重启了服务器(整个 DigitalOcean Droplet),但这并未使备份恢复运行。

版本信息显示我已更新至最新版 2.6.3(我使用的是稳定分支,而非最新分支)。

有任何建议吗?

只要所有上传文件都存储在 S3 上,这就是预期行为。在这种情况下,备份文件仅包含压缩后的数据库转储。

请查看 /logs,是否有与备份相关的错误?
另外,请检查 /u/system/messages/sent,确认系统是否发送了关于备份失败的私信。曾存在一个漏洞,在某些情况下会阻止管理员收到这些私信的通知。

手动备份也消失了,这一点确实令人有些担忧。既然你将 maximum_backups 设置为 3,我不确定这是如何发生的。你是否设置了某种 cronjob 或脚本来移动/删除备份,或者该脚本无法处理新的文件扩展名(现在是 sql.gz 而不是 tar.gz)?
备份文件真的不在那里吗?运行 ls /var/discourse/shared/standalone/backups/default 会显示什么?

这是正常的。日志仅显示手动备份的输出。

我刚检查过,自 2.6 版本发布以来,备份代码没有进行任何相关更改。

我的所有上传文件都没有存储在 S3 上,它们都存储在本地。

我没看到。我通常会遇到一堆 TypeErrors,但我一直都能看到它们。搜索“backup”除了找到与论坛主题网页相关的 TypeErrors(这些网页碰巧包含单词“backup”)外,没有发现其他内容。

哦,看,有一堆“备份失败”的消息——为什么我没有收到这些警报?

好吧,我不知道为什么我从未收到过这些报告,但这给出了以下错误:

[2021-04-08 03:35:35] 正在删除临时目录 ‘/var/www/discourse/tmp/backups/default/2021-04-08-033313’…
[2021-04-08 03:35:35] 正在对归档文件进行 Gzip 压缩,这可能需要一些时间…
[2021-04-08 03:38:49] 异常:lib/discourse.rb:92:in `exec’:Gzip 归档失败。

gzip: /var/www/discourse/public/backups/default/keyboard-maestro-discourse-2021-04-08-033313-v20201116132948.tar.gz:设备上没有剩余空间

实际上,那是一个外部脚本——它将备份复制到另一台机器进行永久存储,然后删除它以为服务器腾出空间(尽管显然空间不够)。

因此,剩余的问题:

  • 为什么我没有收到这些错误消息的任何警报?
  • 为什么手动备份是 .sql.gz 文件,而实际备份是 .tar.gz 文件(两者都应包含上传文件,而上传文件是本地的)?
  • 为什么手动备份可以成功,而自动备份却因空间不足而失败(可能与此相关,也许手动备份实际上并未包含上传文件,因此体积较小,尽管看起来大小合适)?
  • 还有一个显而易见的问题——我想知道如何在服务器上腾出一些空间?[编辑:好的,运行 ./launcher cleanup 释放了 15GB 的空间,这应该能解决问题]。

好吧,至少现在我知道问题出在哪里了。我真的很想知道第一个问题的答案,因为我显然应该收到通知。这些消息会发送给谁?谁会收到这些消息的警报?我如何确保将来能及时了解它们?

谢谢!

正如我所提到的,其中一个最近的测试版发布中已经修复了一个导致此问题的错误。

您可能在通过界面创建备份时弹出的对话框中,选择了在不包含上传内容的情况下创建手动备份。

谢谢,那就好。我会再次检查备份,并确认我在创建备份时是否点错了按钮。

非常感谢!