đ§ 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.
-
Installation depuis les depĂŽts :
$ sudo apt update $ sudo apt install barman
-
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.
-
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
-
Mettre Ă jour les paquets systĂšme et installer barman:
$ sudo yum update $ sudo yum install barman
-
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 partie 2, nous entrerons dans le vif du sujet avec la configuration complĂšte de Barman : : de lâinstallation Ă lâactivation des sauvegardes incrĂ©mentales. 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.
Top comments (0)