Devmind.
Menu

Apprendre, à votre rythme

Tous les cursus sont accessibles sans compte.

Chapitre 4 / Notion

Sauvegardes et restauration testée

Disque mort, DROP TABLE malencontreux, migration foireuse : sans backup testé, chacun de ces classiques est une fin.

◷ 15 minutesTravail sur votre machine

Prérequis : cours 4.1 (rôles) ; sauvegardes et monitoring pour les bases.

Pourquoi

Disque mort, DROP TABLE malencontreux, migration foireuse : sans backup testé, chacun de ces classiques est une fin. Avec, une anecdote de 20 minutes.

Concepts

  • RTO / RPO (définis ici, détaillés au chapitre 8) : RTO = durée max d'interruption acceptable (« on peut être down 1 h »), RPO = perte de données max acceptable (« on peut perdre 24 h de données »). Ils dimensionnent tout : fréquence des dumps, rapidité de restauration.
  • 3-2-1 : 3 copies, 2 supports, 1 hors site. La copie hors site est chiffrée avant envoi — avec age (chiffreur moderne simple : age -r clé-publique -o backup.sql.gz.age), car un backup en clair chez un tiers est une fuite en attente.
  • Objet storage (S3 et compatibles) : stockage de fichiers via API, seconde maison idéale pour les dumps : versionné, loin du serveur.

Exemple : dumper, vérifier, restaurer

pg_dump -U monapp -d monapp | gzip > /backups/monapp-$(date +%F).sql.gz
ls -la /backups/   # 0 octet = fausse sécurité : le script doit sortir en erreur
# Restauration test (trimestrielle minimum) :
createdb -U monapp monapp_restored
gunzip -c monapp-2026-01-01.sql.gz | psql -U monapp -d monapp_restored
psql -U monapp -d monapp_restored -c "SELECT count(*) FROM table_metier;"

Quotidien via timer systemd, rétention 7 + 4. On chronomètre : si ça prend 40 minutes, le « RTO de 10 minutes » est un mensonge — mieux vaut le savoir un dimanche calme.

Cas réel

Backup qui tournait depuis un an… vers un disque plein depuis 6 mois : dumps de 0 octet, alerte inexistante. Le jour du besoin : rien. D'où la règle : taille vérifiée à chaque dump, restauration testée, chiffrement testé (déchiffrer un vieux fichier 1×/trimestre).

Pièges

  • Sauvegarder la base mais pas les volumes (uploads), .env et confs proxy : lister tout ce qui n'est pas en base.
  • Tester la restauration sur la prod (écrase !) : toujours une base _restored séparée.
  • Chiffrer sans tester le déchiffrement : clé perdue = backups perdus.

À retenir

Dump quotidien vérifié, 3-2-1 chiffré, restauration testée et chronométrée, RTO/RPO honnêtes.

Pas de correction en ligneConfrontez votre code aux résultats attendus du cours.