Sauvegarde physique avec pg_basebackup

Module BK50

Dalibo SCOP

26.09

10 septembre 2026

Sur ce document

Formation Module BK50
Titre Sauvegarde physique avec pg_basebackup
Révision 26.09
PDF https://dali.bo/bk50_pdf
EPUB https://dali.bo/bk50_epub
HTML https://dali.bo/bk50_html
Slides https://dali.bo/bk50_slides

Licence Creative Commons CC-BY-NC-SA

Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :

  • Paternité
  • Pas d’utilisation commerciale (y compris IA)
  • Partage des conditions initiales à l’identique

Marques déposées

PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.

Versions de PostgreSQL couvertes

Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 14 à 18.

pg_basebackup

Introduction

pg_basebackup, l’outil simple et efficace pour la copie physique à chaud

Au menu

  • Copie physique à chaud
  • Formats de sauvegarde
  • Compression
  • Avantages/inconvénients
  • Utilisation possible pour
    • le PITR
    • créer un secondaire

Utilisation de pg_basebackup

Cas prévu : la sauvegarde ponctuelle physique à chaud

Présentation

  • Intégré à PostgreSQL
  • Buts :
    • copie physique à chaud cohérente
    • créer facilement un secondaire
  • Ni restauration ni PITR incluses

But

  • Réalise les différentes étapes d’une sauvegarde
    • via 1 ou 2 connexions de réplication + slots de réplication
    • « base backup » & journaux nécessaires
  • Copie intégrale
    • image de la base à la fin du backup
    • peut servir de base pour du PITR plus tard

Mise en place

  • postgresql.conf :
wal_level = replica
max_wal_senders = 10
max_replication_slots = 10
  • pg_hba.conf :
host  replication  usersvg  192.168.0.42/32  scram-sha-256

Exemple de sauvegarde

$ pg_basebackup --format=tar --wal-method=stream \
 --checkpoint=fast --progress -h 127.0.0.1 -U sauve \
 -D /var/lib/postgresql/backups/
  • Attention aux fichiers de configuration
  • Possible aussi depuis un serveur secondaire

Restauration

  • Aucun automatisme
    • éventuellement créer l’instance
  • Juste copier vers le bon PGDATA
    • éventuellement décompresser journaux/tablespaces
    • fichier tablespace_map
  • Fichiers de configuration ?
  • Configuration adaptée à la restauration

Options de pg_basebackup

Formats de sauvegarde

  • --format plain
    • arborescence identique à l’instance sauvegardée
  • --format tar
    • 3 archives : PGDATA, journaux, tablespaces
    • compression :
      • -z
      • -Z client-lz4
      • -Z server-zstd:6

Récupération des journaux

  • Défaut : --wal-method stream
    • par streaming, slot de réplication par défaut
  • --wal-method fetch
    • en une phase, un fichier, pas de slot
  • --wal-method none
    • pas de journaux (si copiés par ailleurs)
    • archive alors non cohérente

Slot de réplication

  • Par défaut : slot temporaire
  • Pour un secondaire :
    • créer le slot
    • --slot nom_du_slot --create
    • à utiliser rapidement

Intégrité

  • Fichier manifeste
    • pg_verifybackup
    • --manifest-checksums=CRC32C|SHA523|NONE
  • Vérification des checksums de l’instance

Cible de la sauvegarde

  • Généralement :
    • répertoire vide ou fichier
    • là où pg_basebackup est lancé
    • ex : -D /backups/erp_prod
  • --target=server:/backups/erp_prod
  • --target=blackhole
    • tests

Copie en vue d’un réplica

  • --write-recovery-conf
  • pré-configure le streaming d’un réplica

Autres options

  • Limite de débit :
    • --max-rate=10M
  • Checkpoint immédiat :
    • --checkpoint-fast
  • Adapter le chemin des tablespaces : --tablespace-mapping=<vieuxrep>=<nouveaurep>
  • Et des journaux : --waldir=chemin

Supervision de la sauvegarde

  • --progress
  • Vue pg_stat_progress_basebackup

Sauvegardes incrémentales

  • v17+
  • À recombiner avec pg_combinebackup
  • Plutôt destiné à être utilisé par un outil

Résumé des avantages/inconvénients

Avantages

  • Simple ; inclus dans le projet
  • Transfert des WAL nécessaires pendant la sauvegarde
  • Slot de réplication automatique (temporaire voire permanent)
  • Limitation du débit
  • Relocalisation des tablespaces
  • Fichier manifeste
  • Vérification des checksums
  • Sauvegarde possible à partir d’un secondaire
  • Compression côté serveur ou client, plusieurs algorithmes
  • Emplacement de la sauvegarde (client/server/blackhole)
  • Suivi : pg_stat_progress_basebackup

Limitations

  • Streaming nécessaire
  • Pas de configuration de l’archivage
  • Pas de politique de rétention des sauvegardes
  • Pas de politique de rétention des journaux
  • Sauvegarde incrémentale peu conviviale
  • Pas de gestion de la restauration

Conclusion

  • pg_basebackup : simple et efficace
  • Parfois, pas besoin de plus
  • Si ça se complique, voir pgBackRest & concurrents

Questions

N’hésitez pas, c’est le moment !

Quiz