Nettoyage de la base de données avant la mise à niveau vers PostgreSQL 18 : durée de conservation recommandée pour les tables de journaux/statistiques ?

Bonjour à tous,

J’ai consulté le guide de mise à jour vers PostgreSQL 18 pour les instances Discourse auto-hébergées :

Il indique que le processus de mise à jour nécessite une quantité importante d’espace disque supplémentaire, donc j’ai commencé à vérifier mon utilisation du disque et la taille de ma base de données avant d’entreprendre la migration.

Mon utilisation actuelle du disque :

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

La taille de ma base de données Discourse est d’environ 21 Go. J’ai constaté que la majeure partie de l’espace n’est pas utilisée par les messages, mais par plusieurs tables de statistiques et de journaux.

Les plus grandes tables sont :

topic_views              5,2 Go
post_timings             1,9 Go
browser_pageview_events  1,8 Go
ai_api_audit_logs        1,6 Go
incoming_links           1,5 Go
user_auth_token_logs     1,2 Go

Pour comparaison :

posts                    844 Mo

J’ai vérifié les plages de données :

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

Je comprends que ces tables ont des finalités différentes, mais je ne suis pas certain des périodes de rétention considérées comme raisonnables pour une instance Discourse en production.

Mes questions :

  1. Pour user_auth_token_logs, pendant combien de temps conservez-vous généralement les enregistrements ?

    • 6 mois ?
    • 1 an ?
    • Plus longtemps pour l’audit de sécurité ?
  2. Pour des tables comme incoming_links, topic_views et post_timings, conservez-vous normalement toutes les données historiques, ou supprimez-vous périodiquement les enregistrements plus anciens ?

  3. Existe-t-il une procédure de nettoyage ou de maintenance recommandée avant une mise à majeure de PostgreSQL ?

Jusqu’à présent, je n’ai rien supprimé. Je n’ai exécuté que :

vacuumdb --analyze discourse

Mon objectif est de libérer de l’espace disque inutile avant de passer à PostgreSQL 18, tout en maintenant le fonctionnement normal de Discourse et les informations d’audit utiles.

Je vous serais reconnaissant de bien vouloir partager vos recommandations ou votre expérience concrète si vous gérez des sites Discourse auto-hébergés.

Merci !

C’est une bonne question, je pense. Mais notez que le sujet lié a été mis à jour et indique désormais qu’il faut deux fois la taille de la base de données en espace disque libre — ce qui, semble-t-il, est déjà le cas pour vous.

Dans mon propre cas, je constate que j’ai de nombreuses images Docker non nettoyées, un fichier swap volumineux, toutes mes sauvegardes, et dans un cas, 4 Go de fichiers journal également.

Ainsi, en complément de la réduction de la taille de la base de données sur le disque, on peut examiner d’autres éléments présents sur le disque qui peuvent être réduits.

Vous pouvez contrôler la durée de rétention de celui-ci via les paramètres du site.

Celles-ci sont destinées à être conservées indéfiniment et constituent généralement les tables les plus volumineuses dans la plupart des instances, donc inutile de s’en inquiéter.