4.4 · Sauvegarder et restaurer les volumes

Niveau 4 · Registres, fiabilité & CI

4.4Sauvegarder et restaurer les volumes

Objectif : Mettre en place une sauvegarde testée des données Docker.
Temps estimé : 12 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Dump logique + snapshot volume, complémentaires : le dump (export portable) avant migration, le snapshot (archive brute de tout l'état) avant changement — en pratique : dump régulier + snapshot avant chaque opération.
  • On sauvegarde sans arrêter : un conteneur jetable monte le volume en lecture seule et écrit l'archive hors du volume — la production continue pendant la sauvegarde.
  • Réflexe d'Idir : une sauvegarde non testée n'existe pas — on restaure sur un volume neuf, on démarre une base dessus, on vérifie les données.

Mini-cas filé — Idir prouve que la sauvegarde marche avant la mise à jour

Idir, devops junior à Alger, doit mettre à jour la base de production : avant de toucher à quoi que ce soit, il dumpe la base vers un dossier daté et snapshotte le volume via un conteneur jetable en lecture seule, sans arrêter la production. Puis il restaure sur un volume de test, démarre une base dessus et vérifie les tables. Quatrième jalon du fil rouge : les données sont sauvegardées ET restaurables, preuve à l'appui.

Suite des cas 4.1-4.3 — Idir protège maintenant les données des services exposés.

1. Deux écoles : dump ou snapshot

Le dump logique (export via exec) donne un fichier portable, idéal avant migration. Le snapshot du volume (conteneur utilitaire qui archive le volume) capture tout l'état. En pratique : dump régulier + snapshot avant changement — comme Idir avant sa mise à jour.

Les deux se complètent : le dump se relit et migre facilement, le snapshot restaure tout à l'identique. Un seul des deux, c'est une demi-sauvegarde.

2. Sauvegarder sans arrêter

On ne stoppe pas la base : on lance un conteneur jetable qui monte le même volume en lecture et écrit l'archive hors du volume (dossier local ou stockage distant). La production continue pendant la sauvegarde — Idir n'interrompt aucun service.

Automatiser et dater : sauvegarde planifiée, archives datées, durée de conservation définie (quotidiens + hebdos). Archiver dans le volume lui-même, c'est perdre la sauvegarde avec lui.

3. Une sauvegarde non testée n'existe pas

Rituel : restaurer sur un volume neuf, démarrer une base dessus, vérifier les données. Sans ce test, vous découvrirez le jour J que l'archive est vide ou illisible. Et on ne restaure jamais « pour voir » sur le volume de production.

Tester, c'est prouver : archive rejouée, tables vérifiées, puis suppression du volume de test. La sauvegarde d'Idir n'est validée qu'après ce rituel.

Erreur d'interprétation fréquente : « J'ai copié un fichier, donc c'est sauvegardé — et je stocke l'archive dans le volume, au chaud ». Non. Une archive jamais rejouée peut être vide ou illisible, et stockée dans le volume elle disparaît avec lui. Conteneur jetable en lecture seule, archive hors du volume et ailleurs que sur la machine, restauration testée sur volume neuf : c'est ce rituel qui fait une vraie sauvegarde.
Sauvegarder puis prouver Sans arrêter, hors volume, restauré en test Dump et snapshot Portable+ état completConteneur jetable Lectureseule, prod non stoppéeArchive hors volume Dossierdaté, autre supportRestauration test Volumeneuf + vérification
Sans arrêter, hors volume, restauré en test
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Idir dumpe la base vers un dossier daté et snapshotte le volume via un conteneur jetable en lecture seule, sans arrêter la production. 2) Il stocke les archives hors du volume, sur un autre support. 3) Il restaure sur un volume neuf, démarre une base de test et vérifie les tables. 4) Il planifie la routine (quotidien + avant chaque changement) avec une durée de conservation. Leçon : dumper sans arrêter, archiver hors volume, restaurer pour prouver.

🔎 Exemple concret — 🔎 Exemple concret — Backup Postgres sans arrêt

Le rituel d'Idir : dump + snapshot, restauration sur volume neuf.

docker compose exec bdd pg_dump -U app appdb > backups/appdb-$(date +%F).sql
# snapshot du volume :
docker run --rm -v projet_pgdata:/data:ro -v ./backups:/backup ubuntu:24.04 tar czf /backup/pgdata-$(date +%F).tgz -C /data .
# restauration test :
docker volume create pgdata_test
docker run --rm -v pgdata_test:/data -v ./backups:/backup ubuntu:24.04 tar xzf /backup/pgdata-2026-09-22.tgz -C /data

Lecture : dump SQL + snapshot volume, restauration sur volume neuf.

Leçon : on ne restaure jamais « pour voir » sur le volume de production.

Vocabulaire de la section

Dump
Export LOGIQUE portable (fichier rejouable) de la base, idéal avant migration.

Exemple simple : Idir exporte sa base vers un fichier daté avant la mise à jour.

Ce que ce n'est pas : une archive brute du disque.

Réflexe : avant migration : penser dump portable.

Snapshot
Archive BRUTE de tout l'état du volume, qui restaure à l'identique.

Exemple simple : Idir archive tout le volume avant le changement risqué.

Ce que ce n'est pas : un export partiel qu'on relit à la main.

Réflexe : avant changement : snapshotter tout l'état.

Montage ro
Volume monté en LECTURE SEULE pour la sauvegarde : on lit sans risquer d'écrire.

Exemple simple : Le conteneur jetable d'Idir lit le volume sans pouvoir le modifier.

Ce que ce n'est pas : un montage inscriptible qui expose le volume.

Réflexe : sauvegarder : toujours monter en lecture seule.

Restauration test
Rejeu de l'archive sur un VOLUME NEUF + vérification des données : la seule preuve.

Exemple simple : Idir démarre une base de test et vérifie les tables avant de valider.

Ce que ce n'est pas : une archive jamais rejouée.

Réflexe : sauvegarde terminée : restaurer et vérifier avant de se croire protégé.

En pratique — En pratique — Votre première sauvegarde testée

  1. Dumpez votre base vers ./backups avec la date.
  2. Snapshotez le volume via un conteneur --rm en lecture seule.
  3. Restaurez sur pgdata_test et démarrez une base test.
  4. Vérifiez les tables, puis supprimez le volume test.
Vos données sont sauvegardées ET restaurables, preuve à l'appui.

Script prêt à dire — annoncer la sauvegarde avant la mise à jour (30 s)

« C'est Idir : avant la mise à jour, j'ai dumpé la base et snapshotté le volume sans arrêter la production, et j'ai rejoué l'archive sur un volume de test avec les tables vérifiées. Si la mise à jour échoue, on restaure en quelques minutes. »

À dire avant toute opération risquée : montrez la vérification sur le volume de test.

Modèle copier-coller — dump + snapshot + restauration test

docker compose exec bdd pg_dump -U app appdb > backups/appdb-$(date +%F).sql
docker run --rm -v projet_pgdata:/data:ro -v ./backups:/backup ubuntu:24.04 tar czf /backup/pgdata-$(date +%F).tgz -C /data .
docker volume create pgdata_test
docker run --rm -v pgdata_test:/data -v ./backups:/backup ubuntu:24.04 tar xzf /backup/pgdata-2026-09-22.tgz -C /data

Avant chaque mise à jour

Comme Idir : dump + snapshot juste avant, restauration testée — le filet de sécurité de l'opération.

Routine quotidienne

Dump planifié daté chaque jour, hebdos conservés : la fréquence suit le coût d'une perte.

Archives hors machine

Copie sur disque externe ou stockage distant chiffré : une sauvegarde sur le même disque n'en est pas une.

Restauration qui échoue en test

Bonne nouvelle découverte tôt : corriger la procédure maintenant plutôt que le jour du sinistre.

✓ Bonnes pratiques

  • Automatiser et dater les archives.
  • Archiver hors du volume, sur un autre support.
  • Tester chaque restauration sur volume neuf.

✗ Pièges fréquents

  • Sauvegarder dans le volume (perdu avec lui).
  • Stopper la production pour dumper (inutile).
  • Ne jamais restaurer pour tester.

Points clés à retenir

  • Dump SQL + snapshot volume : complémentaires.
  • Jetable --rm en lecture seule, prod non stoppée.
  • Restauration test sur volume neuf.
  • Rétention + automatisation = routine.

Défi 48h — appliquez demain

Sur votre vraie base : dumpez + snapshottez sans arrêter, restaurez sur un volume neuf et vérifiez les données.

Checklist sortie de section
  • Je sais dumper et snapshotter sans arrêter la production.
  • Je sais archiver hors du volume avec rétention.
  • Je sais restaurer sur volume neuf et vérifier.
Auto-évaluation 1-5 : ma dernière sauvegarde a-t-elle été rejouée et vérifiée ?mes archives survivraient-elles à la perte de la machine ?

Questions fréquentes

Quelle fréquence ?

Au minimum quotidienne pour une base vivante, avant chaque migration ou mise à jour, avec rétention (quotidiens + hebdos). Ajustez au coût d'une perte de données.

Où stocker les archives ?

Ailleurs que sur la machine : disque externe, stockage distant chiffré. Une sauvegarde sur le même disque n'en est pas une.

Vérifiez votre compréhension

Quelle sauvegarde est valable ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 4Questions inédites et durcies pour valider vos acquis