PostgreSQL 18 升级前的数据库清理:日志/统计表的推荐保留期?

大家好,

我看到了针对自托管 Discourse 的 PostgreSQL 18 升级指南:

指南中提到,升级过程需要大量的额外磁盘空间,因此我在尝试迁移之前开始检查我的磁盘使用情况和数据库大小。

我当前的磁盘使用情况:

/dev/sda1        97G   44G   54G  45% /

我的 Discourse 数据库大小约为 21 GB。我发现大部分空间并非由帖子占用,而是由几个统计和日志表占用。

最大的表包括:

topic_views              5.2 GB
post_timings             1.9 GB
browser_pageview_events  1.8 GB
ai_api_audit_logs        1.6 GB
incoming_links           1.5 GB
user_auth_token_logs     1.2 GB

作为对比:

posts                    844 MB

我检查了数据范围:

topic_views:
2015-04-03 ~ 2026-08-03

incoming_links:
2015-04-09 ~ 2026-08-03

user_auth_token_logs:
2021-08-15 ~ 2026-08-03

ai_api_audit_logs:
2026-02-04 ~ 2026-08-03

browser_pageview_events:
2026-05-28 ~ 2026-08-03

我了解这些表有不同的用途,但我不确定对于生产环境的 Discourse 实例来说,合理的保留期是多少。

我的问题:

  1. 对于 user_auth_token_logs,您通常保留记录多久?

    • 6 个月?
    • 1 年?
    • 为了安全审计保留更久?
  2. 对于 incoming_linkstopic_viewspost_timings 这样的表,您通常保留所有历史数据,还是定期删除较旧的记录?

  3. 在进行 PostgreSQL 主要版本升级之前,是否有任何推荐的清理或维护流程?

到目前为止,我还没有删除任何内容。我只运行了:

vacuumdb --analyze discourse

我的目标是在升级到 PostgreSQL 18 之前释放不必要的磁盘空间,同时保持 Discourse 的正常功能和有用的审计信息。

我很感激任何来自运行自托管 Discourse 站点的用户的建议或实际经验。

谢谢!

我认为这是一个好问题。但请注意,链接的主题已更新,现在指出你需要拥有数据库大小两倍的可用磁盘空间——看起来你确实已经具备了。

就我个人的情况而言,我发现有许多未清理的 Docker 镜像、一个巨大的交换文件、所有的备份,以及在一个案例中还有 4GB 的日志文件。

因此,作为减少磁盘上数据库大小的补充措施,可以查看磁盘上其他可以缩减的内容。

您可以通过站点设置来控制此日志的保留期限。

这些表旨在永久保留,且在大多数实例中通常是最大的表,因此您无需为此担心。