đ§ Introduction
Dans la premiĂšre partie, on a posĂ© les bases : comprendre les diffĂ©rents types de sauvegardes, le rĂŽle crucial des fichiers WAL et ce que propose Barman. Maintenant, il est temps de passer Ă lâaction.
Dans ce guide pratique, on va configurer PostgreSQL et Barman pas Ă pas pour mettre en place un systĂšme de sauvegarde incrĂ©mentale robuste et automatisĂ©. Lâobjectif est simple : que tu puisses le reproduire dans ton propre environnement.
âčïž L'environnement de rĂ©fĂ©rence utilisĂ© dans cet article est Ubuntu
Dans la suite nous utiliserons deux serveurs Ubuntu 22, quâon appellera pg et barman pour postgres et barman respectivements et dâip respectifs 192.168.58.11 et 192.168.58.12
PrĂȘt ? On entre dans le vif du sujet. đ
đ€ Quelle stratĂ©gie de sauvegarde choisir avec BarmanâŻ?
Le choix de la stratĂ©gie de sauvegarde est un Ă©lĂ©ment crucial dans la mise en place dâun systĂšme fiable. Barman prend en charge deux grandes mĂ©thodesâŻ:
Via
rsync
: une méthode classique utilisant SSH pour transférer les fichiers du serveur PostgreSQL vers le serveur Barman.Via
pg_basebackup
: une mĂ©thode moderne qui sâappuie sur le protocole de rĂ©plication en streaming natif de PostgreSQL.
Le streaming via pg_basebackup
ne permet les sauvegardes incrĂ©mentales quâĂ partir de la version 17 de Postgres, nous allons donc dans la suite voir comment faire nos configurations pour effectuer nos sauvegardes via rsync
.
La figure ci dessous illustre comment mettre en place les sauvegardes incrémentales avec rsync
.
Il nous faut donc pour réussir notre configuration:
Une connexion standard Ă PostgreSQL (1)
Utilisée par Barman pour les opérations de gestion, de coordination et de supervision. Cette connexion se fait généralement via un accÚs réseau classique au port PostgreSQL, souvent en TCP/IP.Connexion SSH pour les sauvegardes de base (2)
Puisque nous avons dĂ©cidĂ© dâutiliserrsync
, Barman doit pouvoir utiliser SSH pour se connecter au serveur PostgreSQL. Lâutilisateurbarman
(sur le serveur Barman) doit se connecter en tant quepostgres
(sur le serveur PostgreSQL) et accĂ©der aux fichiers nĂ©cessaires Ă la sauvegarde.Connexion SSH pour lâarchivage des fichiers WAL (3)
Pour lâarchivage des WALs, une configuration appelĂ©earchive_command
de postgresql est activĂ©(on en parle dans la suite đ), et lĂ le serveur PostgreSQL doit initier une connexion SSH. Lâutilisateurpostgres
(du serveur PostgreSQL) va se connecter en SSH au serveur Barman, en tant quâutilisateurbarman
, afin dâenvoyer les fichiers WAL au bon endroit.
đ Configurations SSH entre Barman et PostgreSQL
Pour permettre Ă Barman et PostgreSQL de communiquer de maniĂšre sĂ©curisĂ©e et automatisĂ©e, il est essentiel de configurer une authentification par clĂ© SSH entre les deux serveurs. Cette Ă©tape garantit des transferts fiables, sans mot de passe, pour les sauvegardes et lâarchivage des fichiers WAL.
On va donc gĂ©nĂ©rer des paires de clĂ©s ssh en tant quâutilisateurs postgres et barman Ă Ă©changer entre nos diffĂ©rents serveurs.
- Sur le serveur postgres:
su postgres
ssh-keygen -t rsa -b 2048
# fichier généré par default => /var/lib/postgresql/.ssh/id_rsa
ssh-copy-id -i /var/lib/postgresql/.ssh/id_rsa barman@192.168.58.12
- Sur le serveur barman:
su barman
ssh-keygen -t rsa -b 2048
# fichier généré par default => /var/lib/barman/.ssh/id_rsa
ssh-copy-id -i /var/lib/barman/.ssh/id_rsa postgres@192.168.58.11
Cette étape nécessite de définir en amont pour les utilsateurs postgres
et barman
des mots de passe robustes.
đ§ Configuration dĂ©taillĂ©e de PostgreSQL pour les sauvegardes incrĂ©mentales (avec rsync)
Avant que Barman ne puisse faire son travail, il faut préparer PostgreSQL pour lui fournir ce dont il a besoin : les fichiers WAL (Write-Ahead Logs). Ces fichiers contenus dans le dossier /var/lib/postgresql/<version>/main/pg_wal/
contiennent un historique clair de toutes les écritures sur la base de données et sont essentiels pour effectuer des sauvegardes incrémentales.
Nous allons donc commencer par activer lâarchivage WAL au niveau de notre serveur PostgreSQL.
đïž Activer lâarchivage WAL dans postgresql.conf
Ouvre ton fichier postgresql.conf
, généralement situé dans le répertoire principal de PostgreSQL (/etc/postgresql/<version>/main
), et recherche la ligne
include_dir = 'conf.d' # include files ending in '.conf' from
.
Grace à cette ligne, on peut créer dans le dossier conf.d du répertoire principal, un fichier archivage.conf
pour porter nos configurations. Une fois le fichier crée ajoute ce contenu :
listen_addresses = '*'
wal_level = replica
archive_mode = on
archive_command = 'rsync -a %p barman@192.168.58.12:/var/lib/barman/pg/incoming/%f'
max_wal_senders = 3
Explications :
wal_level = replica
: definit le niveau de journalisation minimal pour permettre les sauvegardes incrémentales.archive_mode = on
: active lâarchivage des WAL.archive_command
: commande à exécuter à chaque rotation de logs expliqué dans la premiÚre partie de la série; ici on indique à PostgreSQL comment transférer chaque fichier WAL vers le serveur Barman en utilisantrsync
.max_wal_senders
: nombre maximum de connexions pour envoyer des WAL Ă des clients (comme Barman).
â Astuce : VĂ©rifie que la commande
rsync
fonctionne en testant manuellement la copie dâun fichier entre les serveurs.
đ Autoriser les connexions Barman dans pg_hba.conf
Dans le fichier /etc/postgresql/<version>/main/pg_hba.conf
, ajoute cette ligne pour autoriser lâutilisateur Barman Ă se connecter :
# Connexion pour les sauvegardes
host replication barman 192.168.58.12/32 md5
Ensuite assure-toi que lâutilisateur barman
existe dans PostgreSQL, avec un mot de passe sécurisé :
createuser --superuser --replication -P barman
đ RedĂ©marrer PostgreSQL
Une fois ces modifications faites, redĂ©marre PostgreSQL pour quâelles prennent effet :
sudo systemctl restart postgresql
đ ïž Configuration de Barman pour les sauvegardes incrĂ©mentales
Une fois PostgreSQL prĂȘt Ă envoyer ses WAL, il est temps de prĂ©parer Barman pour recevoir, stocker et gĂ©rer les sauvegardes; notamment les incrĂ©mentales.
đ Configuration du rĂ©pertoire de sauvegarde
Par défaut, Barman stocke ses données dans le répertoire /var/lib/barman
. Il faut créer un sous-répertoire pour chaque serveur PostgreSQL à sauvegarder.
Puisquâon a deja installĂ© barman sur le serveur exĂ©cute donc :
sudo mkdir -p /var/lib/barman/pg
sudo chown -R barman:barman /var/lib/barman/pg
Tu peux aussi personnaliser lâemplacement via le fichier de configuration.
đ§Ÿ Fichier de configuration barman.conf
Le fichier global est/etc/barman.conf
et chaque serveur pourra avoir sa propre configuration dans /etc/barman.d/
.
Voici un exemple de configuration minimale pour notre serveur nommé pg :
# fichier pg.conf
[pg]
description = "Serveur PostgreSQL principal"
conninfo = host=192.168.58.11 user=barman dbname=test_db
ssh_command = ssh postgres@192.168.58.11
backup_method = rsync
streaming_archiver = on
slot_name = barman
đ Explications des options importantes :
conninfo
: comment se connecter Ă PostgreSQL.ssh_command
: connexion SSH utilisée parrsync
.backup_method
:rsync
.streaming_archiver = on
: permet de récupérer les WAL en continu.slot_name
: nom du slot de réplication utilisé par Barman pour les WAL.
âïž ParamĂštres avancĂ©s utiles
Tu peux adapter la configuration Ă ton usage :
reuse_backup = link
retention_policy = RECOVERY WINDOW OF 7 DAYS
compression = gzip
reuse_backup = link
: évite les duplications de fichiers lors des backups incrémentaux.retention_policy
: conserve les sauvegardes nĂ©cessaires pour restaurer jusquâĂ 7 jours en arriĂšre.compression
: compresse les sauvegardes pour gagner de lâespace disque.
Toutes les options de configuration sont détaillées sur la documentation officielle de Barmn
Afin que barman puisse se connecter via l'utilisateur spĂ©cifiĂ© Ă la base de donnĂ©es, nous devons ajouter le mot de passe que nous avons spĂ©cifiĂ© Ă la crĂ©ation de lâutilisateur barman au fichier .pgpass.
su barman
cat <<'EOF' >>~/.pgpass
mon_serveur:5432:test_db:barman:password
EOF
chmod 0600 ~/.pgpass
Chaque ligne de ce fichier doit etre au format
[db_hote]:[db_port]:[db_nom]:[db_user]:[db_password]
â VĂ©rifier que tout fonctionne
Avant de lancer un backup, vĂ©rifie la connexion entre Barman et PostgreSQL; Ă cette Ă©tape tous les voyants doivent etre au vert đșđ et tu dois avoir:
$ barman check pg
Server pg:
PostgreSQL: OK
is_superuser: OK
wal_level: OK
directories: OK
retention policy settings: OK
backup maximum age: OK (no last_backup_maximum_age provided)
compression settings: OK
failed backups: OK (there are 0 failed backups)
minimum redundancy requirements: OK (have 0 backups, expected at least 0)
ssh: OK (PostgreSQL server)
systemid coherence: OK
archive_mode: OK
archive_command: OK
continuous archiving: OK
archiver errors: OK
Tu peux aussi à présent lancer ton premier test de sauvegarde, si tout se passe bien tu dois avoir:
$ barman backup pg
Starting the backup using the rsync-concurrent method for the pg server in /var/lib/barman/pg/base/20250413T113210
Backup start at LSN: 0/12000060 (000000010000000000000012, 00000060)
This is the first backup for the pg server
The WAL segments preceding the current backup were found:
000000010000000000000000F from pg server has been removed
0000000100000000000000010 from server pg has been removed
Starting backup via rsync/SSH for 20250413T113210
Completed copy (duration: 3 seconds)
This is the first backup for the server pg
Asking the PostgreSQL server to finalize the backup.
Backup size: 38.8 MiB. Actual disk size: 38.8 MiB (-0.00% deduplication ratio).
Backup end at LSN: 0/12000138 (00000001000000000000012, 00000138)
Backup completed (start time: 2025-04-13 11:32:10.136973, time elapsed: 5 seconds)
Processing xlog segments from file archiving for pg
000000010000000000000011
000000010000000000000012
000000010000000000000012.00000060.backup
đ Automatiser les sauvegardes incrĂ©mentales avec Barman
Une fois Barman et PostgreSQL correctement configurĂ©s, il est essentiel dâautomatiser les sauvegardes pour garantir la protection continue de vos donnĂ©es. Heureusement, Barman sâintĂšgre facilement avec les outils classiques de planification de tĂąches, comme cron.
đ Planifier les sauvegardes avec cron
Pour dĂ©clencher automatiquement une sauvegarde, il suffit dâajouter une tĂąche cron sur le serveur Barman. Par exemple, pour lancer une sauvegarde complĂšte tous les jours Ă 2h du matin :
-
Se connecter en tant que
barman
:
sudo -u barman crontab -e
- Ajouter la tĂąche cron dans cette crontab :
0 2 * * * barman backup pg
đĄ Pensez Ă tester votre commande manuellement avant de lâautomatiser, pour vĂ©rifier que tout fonctionne comme prĂ©vu.
đ Astuces pour optimiser lâespace disque
Voici quelques conseils pour conserver vos sauvegardes tout en maĂźtrisant lâutilisation du stockage :
đïž Compression des sauvegardes : Barman propose la compression automatique des fichiers; possible avec
compression = gzip
utilisĂ©e plus haut dans nos configurations:đ§č Suppression automatique des anciennes sauvegardes : utilisez la politique de rĂ©tention pour ne conserver que les sauvegardes nĂ©cessaires; possible avec
retention_policy = RECOVERY WINDOW OF 7 DAYS
aussi utilisé dans notre fichierpg.conf
.
đ Surveillance et gestion des sauvegardes avec Barman
Une fois les sauvegardes en place, il est crucial de les surveiller et de gérer leur cycle de vie pour garantir leur efficacité. Barman fournit plusieurs outils pour cela, directement utilisables en ligne de commande.
â VĂ©rifier lâĂ©tat des sauvegardes
Barman dispose de plusieurs commandes utiles pour suivre l'état de vos sauvegardes et de vos serveurs.
đ§ Lister les sauvegardes disponibles
$ barman list-backup pg
pg 20250415T201754 - Tue Apr 15 20:17:58 2025 - Size: 54.9 MiB - WAL Size: 16.0 MiB
pg 20250415T201516 - Tue Apr 15 20:15:19 2025 - Size: 54.9 MiB - WAL Size: 48.0 MiB
pg 20250413T113210 - Sun Apr 13 11:32:14 2025 - Size: 54.8 MiB - WAL Size: 32.0 MiB
Cette commande affiche entre autre :
lâID de chaque sauvegarde,
la date
le point de récupération possible (PITR)
đ VĂ©rifier lâĂ©tat gĂ©nĂ©ral du serveur
$ barman check nom_du_serveur
Cette commande fait un diagnostic complet de la configuration : connexions SSH, configuration PostgreSQL, accÚs aux répertoires de sauvegarde, etc.
Obtenir des détails sur une sauvegarde spécifique
barman show-backup nom_du_serveur ID_sauvegarde
Utile pour voir entre autre:
les chemins utilisés,
la taille de la sauvegarde,
les fichiers WAL associés,
les options activées.
đ§Ż Et en cas de problĂšme ?
En cas dâĂ©chec de sauvegarde :
Lance
barman check
pour diagnostiquer.Consulte les logs postgres et barman dans respectivement
/var/log/postgresql
et/var/log/barman/
.
đ Conclusion : Garder le contrĂŽle sur vos sauvegardes PostgreSQL
Dans cette seconde partie, nous avons plongĂ© dans les aspects techniques essentiels pour Ă©lĂ©borer une stratĂ©gie de sauvegarde incrĂ©mentale fiable avec Barman. De la configuration fine de PostgreSQL, Ă la mise en place des connexions sĂ©curisĂ©es en passant par lâautomatisation via cron et la surveillance proactive, chaque Ă©tape renforce la robustesse et la rĂ©silience de votre base de donnĂ©es.
GrĂące Ă Barman, vous disposez dâun outil puissant, souple et open source, capable de rĂ©pondre aux besoins des environnements de production les plus exigeants. Mais la maĂźtrise des sauvegardes ne sâarrĂȘte pas lĂ .
Dans la prochaine partie, nous verrons comment restaurer efficacement une base de données PostgreSQL, notamment via le Point In Time Recovery (PITR), ainsi que des cas pratiques pour tester vos sauvegardes.
đ Restez connectĂ©s pour aller jusquâau bout de votre stratĂ©gie de sauvegarde PostgreSQL !
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.