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
```\n
比較のために:

```text
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 サイトを運営している方からの推奨事項や実際の経験談をいただければ幸いです。

ありがとうございます!

それは良い質問だと思います。ただし、リンクされたトピックが更新されており、現在は空きディスク容量としてデータベースサイズの2倍が必要と明記されています。これについては、すでに満たしているようです。

私の場合、未整理のDockerイメージ、大きなスワップファイル、すべてのバックアップ、そして1つのケースでは4Gのジャーナルファイルが存在していることが分かりました。

したがって、ディスク上のデータベースサイズを削減する補完的な方法として、ディスク上の他の要素も削減できるかどうか検討できます。

サイト設定を使用して、この保持期間を制御できます。

これらは永久に保持されるよう設計されており、ほとんどのインスタンスで最も大きなテーブルになりますので、心配する必要はありません。