CodeGym /Cours /SQL SELF /Types de backups dans PostgreSQL : complets, incrémentaux...

Types de backups dans PostgreSQL : complets, incrémentaux, différentiels

SQL SELF
Niveau 43 , Leçon 1
Disponible

Alors, imagine que ta base de données, c’est une énorme bibliothèque d’archives avec des milliers de bouquins. Un backup complet, c’est comme envoyer un coursier chaque nuit pour copier tous les livres. Mais si presque rien n’a changé ? C’est pas seulement lent, ça surcharge aussi le transport et ça prend un max de place. C’est là que les approches incrémentales et différentielles entrent en jeu. On bosse plus intelligemment, pas plus dur, en copiant juste ce qui a vraiment changé.

Aujourd’hui, on va voir ces types de backups :

  • Backup complet : copie complète de la base de données.
  • Backup incrémental : copie seulement des changements depuis le dernier backup.
  • Backup différentiel : copie des changements depuis le dernier backup complet.

Chacune de ces méthodes a ses avantages, ses inconvénients et ses cas d’utilisation. On va décortiquer tout ça.

Backup complet

Le backup complet (ou Full Backup) — c’est une sauvegarde de toute la base de données à un instant T. Il contient la structure de la base (tables, index, schémas) et toutes les données. En gros, c’est un “instantané” de toute la base.

Exemple de commande pour un backup complet :

pg_dump -U username -d database_name -F c -f full_backup.dump

Ici :

  • -U username — nom d’utilisateur PostgreSQL.
  • -d database_name — nom de la base de données.
  • -F c — format du backup (custom, pratique pour restaurer avec pg_restore).
  • -f full_backup.dump — nom du fichier où la sauvegarde sera stockée.

Tu en sauras plus sur la commande pg_dump et ses options dans les prochaines leçons :P

Avantages du backup complet :

  1. Facilité de restauration. Si un truc foire, le backup complet permet de restaurer toute la base rapidement.
  2. Snapshot complet des données. Peut servir à migrer toute la base vers un autre serveur ou environnement.

Inconvénients du backup complet :

  1. Volume de données : un backup complet peut être énorme, surtout si t’as beaucoup de données.
  2. Temps d’exécution long : plus t’as de données, plus ça prend du temps de tout copier.
  3. Espace de stockage : chaque backup complet prend de la place à part, ça peut vite bouffer le stockage.

Quand utiliser un backup complet :

  • Pour créer la première sauvegarde.
  • Avant de faire de gros changements dans la base.
  • Pour l’archivage long terme (tu fais un backup complet et tu l’envoies dans un “cold storage”).

Backups incrémentaux

Le backup incrémental (Incremental Backup) sauvegarde seulement les fichiers qui ont changé depuis le dernier backup — que ce soit un complet ou un incrémental. Ça permet de vraiment économiser de la place disque et d’accélérer le process de sauvegarde.

Dans PostgreSQL, tu peux faire des backups incrémentaux avec l’outil pgBackRest — c’est un utilitaire puissant pour créer et gérer des backups PostgreSQL, avec support des stratégies complètes, incrémentales et différentielles.

Comment fonctionne pgBackRest ?

  • pgBackRest utilise des métadonnées et des checksums de fichiers pour détecter les changements.
  • Seuls les fichiers vraiment modifiés sont inclus dans le backup incrémental.
  • L’archivage automatique des fichiers WAL est géré, ce qui permet de restaurer à un point précis dans le temps.

Exemple de commande pour un backup incrémental :

pgbackrest --stanza=main --type=incr backup

Où :

  • --stanza=main — nom de la config (ensemble de paramètres pour une base donnée).
  • --type=incr — indique qu’on fait un backup incrémental.

Avant le premier backup incrémental, il faut absolument avoir fait un complet (--type=full).

Avantages des backups incrémentaux avec pgBackRest :

  1. Économie d’espace : seuls les fichiers modifiés sont copiés.
  2. Rapidité d’exécution : surtout s’il y a peu de changements.
  3. Gestion automatique des WAL : pgBackRest archive et applique les fichiers WAL tout seul.
  4. Restauration flexible : tu peux choisir le point de restauration (PITR).

Inconvénients et subtilités :

  1. Nécessité d’une config initiale : il faut configurer la stanza, le répertoire du repo, les droits d’accès.
  2. Complexité pour les débutants : il faut piger le WAL et l’architecture PostgreSQL.
  3. Dépendance au repo : tous les backups sont centralisés — il faut bien gérer le stockage.

Quand utiliser les backups incrémentaux :

  • Si la base de données est souvent mise à jour.
  • Quand le backup complet est trop lourd ou prend trop de temps.
  • Si tu veux une stratégie de restauration fiable et automatique avec un minimum d’efforts.

Backups différentiels

Le backup différentiel (Differential Backup) sauvegarde tous les changements qui ont eu lieu depuis le dernier backup complet. La différence avec l’incrémental, c’est que chaque backup différentiel contient tout ce qui a changé depuis le dernier complet. Donc, pour restaurer la base, il te faut juste le dernier complet et le dernier différentiel.

Exemple de process :

  1. Premier soir : backup complet (A).
  2. Deuxième soir (B) : backup différentiel — contient les changements depuis A.
  3. Troisième soir (C) : backup différentiel — contient aussi les changements depuis A.

Avantages :

  1. Facilité de restauration : Pour restaurer, il suffit du complet et du dernier différentiel.
  2. Plus rapide qu’un complet : Le différentiel est plus rapide qu’un complet, car il ne copie que les changements.

Inconvénients :

  1. Taille du fichier backup : À chaque nouveau différentiel, la taille augmente, car il stocke tous les changements depuis le complet.
  2. Espace disque : Sur le long terme, ça peut prendre plus de place que les incrémentaux.

Le backup différentiel est utile si tu veux simplifier la restauration : il garde tous les changements depuis le dernier complet. C’est super pratique si les données changent souvent, mais que faire des complets à chaque fois, c’est trop long ou trop gourmand en ressources. Dans ces cas, l’approche différentielle est un bon compromis entre rapidité et fiabilité.

Comparaison des types de backups

Type de backup Complet Incrémental Différentiel
Volume de données Maximal Minimal Moyen
Temps d’exécution Long Rapide Moyen
Restauration Facile Compliquée (dépend de tous les backups) Moyenne (besoin du dernier complet et diff.)
Quand l’utiliser Première copie, migrations Backups fréquents en temps réel Sauvegarde régulière

Le choix du type de backup dépend de tes besoins en sécurité, de la fréquence des updates et des ressources dispos. Pour les petites bases, un backup complet régulier suffit. Si la base grossit, les incrémentaux te feront gagner de la place. Et si tu veux restaurer vite, les différentiels sont peut-être le meilleur choix. Le plus important — n’oublie pas la régularité et l’automatisation !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION