Sommaire
Tout le monde a une sauvegarde. Bien moins nombreux sont ceux qui savent combien de temps prendrait une restauration complète, ou si le fichier de la nuit dernière est seulement lisible.
Ce que l’on sauvegarde
- La base : un
pg_dumpau format personnalisé, compressé - Les médias : une copie miroir du compartiment S3 vers un stockage distant
- La configuration : versionnée dans le dépôt, donc déjà sauvegardée
pg_dump --format=custom --no-owner "$DATABASE_URI" > "backup-$(date +%F).dump"
mc mirror --overwrite local/media offsite/mediaRestaurer chaque semaine
Une tâche planifiée démarre une base vide, y restaure la dernière sauvegarde et lance une série de requêtes de contrôle : nombre d’articles, dernier message reçu, intégrité des références vers les médias.
SELECT count(*) AS orphan_media_refs
FROM article_media am
LEFT JOIN media m ON m.id = am.media_id
WHERE m.id IS NULL;Si une requête échoue, ou si la restauration dépasse le délai fixé, une alerte part.
Ce que la routine a déjà attrapé
- Une sauvegarde tronquée par un disque plein, restée silencieuse plusieurs jours
- Une extension PostgreSQL absente de la machine de restauration
- Des médias supprimés du stockage mais encore référencés
La question n’est pas « avons-nous une sauvegarde ? » mais « quand l’avons-nous restaurée ? ».
- #PostgreSQL
- #Docker



