Zum Inhalt springen

Configurer des sauvegardes incrĂ©mentales avec PostgreSql – Introduction (Partie 1 )

🧭 Introduction

PostgreSQL est un systÚme de gestion de bases de données robuste, fiable, et trÚs utilisé dans le monde du développement. Il respecte les standards SQL, il est open source, et surtout, il garde précieusement nos données.

Mais mĂȘme le meilleur outil ne peut rien contre une mauvaise manip, un bug, ou un crash serveur. C’est lĂ  qu’intervient notre meilleure alliĂ©e : la sauvegarde.

Dans ce guide, on va découvrir comment configurer des sauvegardes incrémentales sur PostgreSQL.

L’objectif ? Que tu sois dĂ©veloppeur, administrateur, Ă©tudiant ou simplement curieux, tu pourras mettre en place un systĂšme de sauvegarde automatique, efficace et rassurant.

On va :

  • comprendre ce qu’est une sauvegarde (et une sauvegarde incrĂ©mentale 🧠),

  • dĂ©couvrir les outils disponibles dans PostgreSQL 🔧,

  • configurer Ă©tape par Ă©tape notre systĂšme de sauvegarde incrĂ©mentale đŸ› ïž,

  • automatiser le tout avec des scripts et cron ⏰,

  • et mĂȘme tester la restauration (parce qu’une sauvegarde non testĂ©e, c’est juste une illusion de sĂ©curitĂ© 😉).

PrĂȘt ? Alors on commence par les bases. 👇

🧠 Rappel : qu’est-ce qu’une sauvegarde (et une sauvegarde incrĂ©mentale) ?

Avant de plonger dans la configuration, prenons une minute pour poser les bases, parce qu’une bonne comprĂ©hension, c’est dĂ©jĂ  la moitiĂ© du boulot.

🔐 Une sauvegarde, c’est quoi ?

C’est tout simplement une copie de donnĂ©es (fichiers, bases, configurations, etc.) qu’on garde Ă  part, dans un coin sĂ»r, pour pouvoir les rĂ©cupĂ©rer en cas de pĂ©pin : erreur humaine, panne, piratage, ou juste un “Oups, j’ai tout supprimĂ©â€.

đŸ§± Les 3 grands types de sauvegardes

Il existe plusieurs façons de sauvegarder ses données. Voici les trois principales :

  • Sauvegarde complĂšte : on copie tous les fichiers Ă  chaque fois. C’est simple, mais ça peut vite devenir lourd en espace disque.

  • Sauvegarde diffĂ©rentielle : on copie uniquement les fichiers qui ont changĂ© depuis la derniĂšre sauvegarde complĂšte. C’est plus lĂ©ger, mais au fil du temps, ça peut s’accumuler.

  • Sauvegarde incrĂ©mentale : on copie les fichiers qui ont changĂ© depuis la derniĂšre sauvegarde, quelle qu’elle soit (complĂšte ou incrĂ©mentale). C’est la plus optimisĂ©e en taille et en temps, mais un peu plus technique Ă  gĂ©rer.

📌 Pourquoi les sauvegardes incrĂ©mentales sont cool ?

Parce qu’elles permettent de gagner du temps et de l’espace, tout en conservant l’historique des modifications. Et la bonne nouvelle, c’est que PostgreSQL permet ce type de sauvegarde en s’appuyant sur un mĂ©canisme intĂ©grĂ© de journalisation anticipĂ©e (WAL : Write-Ahead Logging).

👉 C’est justement ce qu’on va exploiter dans ce guide.

🔍 Comment Postgres permet-il les sauvegardes incrĂ©mentales ?

Nous allons nous intéresser dans un premier temps aux possibilités de sauvegarde offertes par PostgreSQL, afin de comprendre les différents mécanismes disponibles avant de se plonger dans la configuration des sauvegardes incrémentales.

🧬 Les diffĂ©rents types de sauvegarde avec PostgreSQL

Postgresql offre trois possibilitĂ©s 👇:

1. Sauvegarde complĂšte

Elle consiste Ă  copier l’intĂ©gralitĂ© de la base de donnĂ©es Ă  un instant donnĂ©. Ce type de sauvegarde est un instantanĂ© de la base et permet de restaurer une base de donnĂ©es dans son Ă©tat prĂ©cis au moment de la sauvegarde. Cela peut ĂȘtre effectuĂ© avec des outils comme pg_basebackup, ou manuellement en copiant les fichiers de donnĂ©es de PostgreSQL.

2. Sauvegarde logique (pg_dump)

Elle utilise l’outil pg_dump, qui exporte les donnĂ©es de la base sous forme de script SQL. Il s’agit d’une forme de sauvegarde complĂšte qui permet de rĂ©cupĂ©rer la base de donnĂ©es sous un format indĂ©pendant de PostgreSQL. Cette mĂ©thode est souvent utilisĂ©e pour migrer des bases de donnĂ©es ou pour effectuer des sauvegardes spĂ©cifiques (par exemple, d’une table ou d’un schĂ©ma). Toutefois, elle a des limites pour les sauvegardes incrĂ©mentales, car elle n’inclut pas directement les journaux de transactions (WAL).

3. Sauvegarde incrémentale (basée sur les WAL)

La sauvegarde incrĂ©mentale, comme son nom l’indique, permet de ne sauvegarder que les modifications effectuĂ©es aprĂšs une premiĂšre sauvegarde complĂšte. Cela repose sur l’archivage des fichiers WAL (Write-Ahead Log) gĂ©nĂ©rĂ©s par PostgreSQL. Ces fichiers contiennent un enregistrement de toutes les transactions qui ont Ă©tĂ© appliquĂ©es Ă  la base de donnĂ©es. En utilisant les fichiers WAL, il est possible de restaurer la base de donnĂ©es Ă  un moment prĂ©cis, ce qui permet d’atteindre un objectif RPO (Recovery Point Objective) trĂšs bas, souvent Ă  quelques minutes seulement. Il s’agit ici de minimiser la quantitĂ© de donnĂ©e qu’on est prĂȘt Ă  perdre aprĂšs un incident.

đŸ§Ș Les sauvegardes incrĂ©mentales

PostgreSQL offre une fonctionnalité clé qui permet de réaliser des sauvegardes incrémentales : le Write-Ahead Logging (WAL).

Chaque opĂ©ration d’écriture sur la base de donnĂ©es est journalisĂ©e dans des fichiers de log. Ces fichiers enregistrent les modifications de la base de donnĂ©es avant que celles-ci ne soient rĂ©ellement appliquĂ©es, garantissant ainsi l’intĂ©gritĂ© des donnĂ©es.

Ce mĂ©canisme, appelĂ© WAL, permet de restaurer l’Ă©tat de la base de donnĂ©es Ă  un moment prĂ©cis, une technique connue sous le nom de Point In Time Recovery (PITR). Cela signifie qu’aprĂšs une premiĂšre sauvegarde complĂšte, vous pouvez restaurer une base de donnĂ©es Ă  n’importe quel instant en rĂ©cupĂ©rant les fichiers WAL gĂ©nĂ©rĂ©s depuis cette sauvegarde.

C’est exactement ce que nous allons exploiter dans notre configuration avec Barman.

⚙ Principe de fonctionnement du WAL

Lorsque l’archivage des WAL est activĂ© dans PostgreSQL, il gĂ©nĂšre des fichiers dans un dossier spĂ©cifique (/var/lib/postgresql/{version}/main/pg_wal/) Ă  chaque opĂ©ration d’Ă©criture. Ces fichiers font l’objet d’une rotation dĂšs qu’ils atteignent une taille de 16 Mo par dĂ©faut.

Chaque fois qu’un fichier WAL est modifiĂ© ou créé, PostgreSQL permet de dĂ©finir une commande spĂ©cifique Ă  exĂ©cuter. Cela permet de centrer l’archivage des fichiers WAL et de gĂ©rer plus facilement la rĂ©cupĂ©ration des donnĂ©es.

Barman va s’appuyer sur ces fichiers WAL pour faciliter la gestion des sauvegardes incrĂ©mentales et des restaurations Ă  un moment prĂ©cis.

🚀C’est quoi Barman ?

đŸčDĂ©couverte de barman

Barman (Backup and Recovery Manager) est un outil écrit en Python qui facilite la gestion des sauvegardes et restaurations des bases de données PostgreSQL.

Ce gestionnaire de sauvegardes est spécialement conçu pour PostgreSQL et simplifie :

  • La planification et l’automatisation des sauvegardes.

  • La gestion des sauvegardes complĂštes et incrĂ©mentales.

  • La rĂ©cupĂ©ration Point-in-Time Recovery (PITR) en utilisant les fichiers WAL.

Il est particuliÚrement pratique pour gérer plusieurs serveurs PostgreSQL en centralisant les opérations de sauvegarde et de restauration en un seul endroit.

Ce sera l’outil que nous allons configurer et utiliser dans cet article.

đŸ€” Barman vs pg_dump

Avant d’aller plus loin, faisons une petite comparaison entre Barman et les outils classiques de sauvegarde PostgreSQL : pg_dump/pg_basebackup.

  • pg_dump / pg_basebackup : Ces outils permettent des sauvegardes complĂštes, oĂč vous pouvez exporter l’Ă©tat d’une base de donnĂ©es (sous forme de script SQL par exemple, avec des options pour une table, un schĂ©ma, ou toute la base). Cependant, pg_dump/pg_basebackup ne conviennent pas pour des restaurations rapides en cas de sinistre, car vous devez toujours restaurer Ă  partir de l’heure prĂ©cise de la sauvegarde.

    Essayons nous Ă  une petite expĂ©rience de pensĂ©e; vous faites rĂ©guliĂšrement vos sauvegardes avec pg_dump par exemple Ă  3 heures du matin et vous avez un crash/incident Ă  18 heures. Vu que pg_dump rĂ©cupĂšre l’Ă©tat de votre systĂšme Ă  une heure bien prĂ©cise (ici 3h), et qu’un incident survient Ă  18h, vous perdrez toutes les donnĂ©es ajoutĂ©es depuis la derniĂšre sauvegarde. On parle bien de 15h de donnĂ©es, dans tous les scĂ©narios, cette perte est inacceptable pour de nombreuses entreprises.

  • Barman : Contrairement Ă  pg_dump, Barman opĂšre au niveau physique de la base de donnĂ©es. Cela signifie qu’il prend des copies complĂštes et incrĂ©mentales de vos donnĂ©es, permettant de rĂ©cupĂ©rer tout ce qui a changĂ© depuis la derniĂšre sauvegarde, sans risquer une perte importante de donnĂ©es. Ce systĂšme est particuliĂšrement adaptĂ© pour des objectifs RPO (Recovery Point Objective) bas, rĂ©duisant ainsi la perte de donnĂ©es Ă  quelques minutes seulement.

    Bien sĂ»r, cela nĂ©cessite un peu plus d’espace disque pour stocker les sauvegardes, mais le compromis en termes de sĂ©curitĂ© et de rĂ©cupĂ©ration est largement justifiĂ©.

📩 Installation de barman

Avant de pouvoir utiliser Barman pour la gestion des sauvegardes incrĂ©mentales, il est nĂ©cessaire de s’assurer que les composants Postgresql sont bien installĂ©s. Pour les utilisateurs d’Ubuntu ce tutoriel est excellent pour l’installation de PostgreSQL. Pour ceux avec CentOs/RHEL vous pouvez suivre celui-ci.

Une fois PostgreSQL installĂ© et pret Ă  l’utilisation, nous reviendrons sur les configuration plus avancĂ©es nĂ©cessaire Ă  notre sauvegarde. A prĂ©sent passons maintenant Ă  l’installation de Barman

a. Sur Ubuntu/Debian

Sur les distributions basées sur Debian comme Ubuntu, vous pouvez installer Barman directement depuis les dépÎts officiels.

  1. Installation depuis les depĂŽts :

    $ sudo apt update
    $ sudo apt install barman
    
  2. VĂ©rifier l’installation :

    Une fois l’installation terminĂ©e, vĂ©rifiez que Barman est bien installĂ© en exĂ©cutant la commande suivante :

    $ barman --version
    

b. Sur CentOS/RHEL

Sur CentOS ou RHEL, vous devez d’abord ajouter le dĂ©pĂŽt officiel de Barman avant de l’installer.

  1. Ajouter le dépÎt officiel Barman :

    $ sudo yum install -y https://dl.enterprisedb.com/barman/barman-2.16.0-1.rhel7.x86_64.rpm
    
  2. Mettre Ă  jour les paquets systĂšme et installer barman:

    $ sudo yum update
    $ sudo yum install barman
    
  3. VĂ©rifier l’installation :

    $ barman --version
    

đŸ§Ÿ Conclusion

Dans cet article, nous avons explorĂ© les concepts fondamentaux nĂ©cessaires Ă  la mise en place de sauvegardes incrĂ©mentales sur PostgreSQL, en mettant l’accent sur le rĂŽle essentiel des journaux de transactions (WAL) et le mĂ©canisme de PITR. Nous avons Ă©galement vu comment Barman, l’outil de gestion de sauvegarde et de restauration, s’intĂšgre parfaitement dans ce processus.

L’objectif Ă©tait de fournir une comprĂ©hension claire de ce qu’implique une sauvegarde incrĂ©mentale avec PostgreSQL avant de plonger dans la configuration technique elle-mĂȘme. Ces bases vous permettent d’avoir une vue d’ensemble sur les enjeux et les outils Ă  utiliser pour une gestion efficace des sauvegardes.

Dans la suite, nous entrerons dans le vif du sujet avec la configuration complĂšte de Barman : de l’installation Ă  l’activation des sauvegardes incrĂ©mentales, en passant par la gestion des restaurations point-in-time. Nous aborderons Ă©galement les bonnes pratiques pour garantir la continuitĂ© et la fiabilitĂ© de vos sauvegardes.

Rendez-vous dans le prochain article pour découvrir comment configurer et automatiser vos sauvegardes de maniÚre optimale.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert