Sauvegardes avec CloudNativePG

Module K3

Dalibo SCOP

26.09

10 septembre 2026

Sur ce document

Formation Module K3
Titre Sauvegardes avec CloudNativePG
Révision 26.09
PDF https://dali.bo/k3_pdf
EPUB https://dali.bo/k3_epub
HTML https://dali.bo/k3_html
Slides https://dali.bo/k3_slides
TP https://dali.bo/k3_tp
TP (solutions) https://dali.bo/k3_solutions

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.

Sauvegarder nos Clusters

Introduction

  • Sauvegardes de nos Clusters
  • Politique de sauvegarde

Au menu

  • Rappel
    • Journalisation
  • Sauvegardes PostgreSQL
    • Logique
    • Physique
      • PITR
  • Méthode de sauvegardes de CloudNativePG
    • Plugin
    • VolumeSnapshot
  • Politique de sauvegarde
    • RTO, RPO

Principe de la journalisation

Intégrité & durabilité

  • Intégrité : la base reste cohérente malgré :
    • arrêt brutal des processus
    • crash machine
  • Durabilité garantie si COMMIT
  • Écriture des modifications dans un journal avant les fichiers de données
  • WAL : Write Ahead Logging

Journaux de transaction (rappels)

Essentiellement :

  • pg_wal/ : journaux de transactions
    • sous-répertoire archive_status
    • nom : timeline, journal, segment
    • ex : 00000002 00000142 000000FF
  • pg_xact/ : état des transactions
  • Ces fichiers sont vitaux !
  • Utiles pour le PITR

Sauvegardes PostgreSQL

  • Deux types, complémentaires
    • Logiques
    • Physiques
      • PITR
  • Outils différents
  • Cas d’usage différents
  • Complexités différentes

Choisir celle qui convient à votre besoin.

Sauvegardes logiques

  • Sauvegarde d’une base, d’un schéma, d’une table…
  • À chaud et cohérente
  • Pas d’impact sur les lecteurs / écrivains
  • 2 outils (contrib)
    • pg_dump
    • pg_dumpall
  • Jamais inclus :
    • tables systèmes
    • fichiers de configuration

Sauvegardes physiques

  • Sauvegarde de l’instance complète
  • À chaud ou à froid
  • Attention à la cohérence des données
  • Ne pas oublier
    • Les fichiers de configuration
    • Les Tablespaces
    • Les journaux de transactions

La cohérence est garantie grâce aux WAL

Sauvegarder avec CloudNativePG

  • Déclarativement
    • Sauvegarde physique uniquement
  • Nouvelles CRD Backup et ScheduledBackup
  • 2 méthodes
    • Object Storage (avec un Plugin)
    • Volume Snapshot
  • Configuration spec.backup d’un objet Cluster

Première méthode - Sauvegarde sur stockage objets

  • Méthode dépendante d’un plugin de sauvegarde
  • Nécessite un stockage objets (S3, Azure Blob…)
  • Sauvegarde à chaud, PITR
spec: # Cluster
  plugins:
  - name: barman-cloud.cloudnative-pg.io # Le plugin à utiliser
    isWALArchiver: true
    parameters:
      barmanObjectName: scaleway-store

Plugin Barman Cloud - ObjectStore

  • Installation propre
  • Nouvelle CRD ObjectStore
    • Emplacement de stockage
    • Informations de connexion
  • Stockage objet
    • Amazon S3 (ou compatible S3), Google Cloud Storage, Azure Blob Storage
  • Réutilisable
apiVersion: barmancloud.cnpg.io/v1
kind: ObjectStore
metadata:
  name: scaleway-store
spec:
  configuration:
      destinationPath: "s3://<bucket>/<folder>/"
      endpointURL: "https://s3.<region>.scw.cloud" 
      s3Credentials:
        accessKeyId:
          name: scaleway-api-secret
          key: ACCESS_KEY_ID
        secretAccessKey:
          name: scaleway-api-secret
          key: ACCESS_SECRET_KEY
        region:
          name: scaleway-api-secret
          key: ACCESS_REGION

Deuxième méthode - Volume Snapshot Kubernetes

  • Fonctionnalité Kubernetes (API)
  • spec.backup.method: volumeSnapshot
  • Dépend de
    • StorageClass
    • Container Storage Interface
  • Sauvegarde à chaud ou à froid

Ressource Backup

  • Custom Resource Definition
  • Définit l’exécution d’une sauvegarde
apiVersion: postgresql.cnpg.io/v1
kind: Backup
metadata:
  name: masauvegarde
spec:
  method: plugin # ou volumeSnapshot
  cluster:
    name: postgresql

Ressource ScheduledBackup

  • Custom Resource Definition
  • Définit la planification de sauvegardes
  • Une ressource Backup créée à chaque exécution
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
  name: masauvegardequotidienne
spec:
  schedule: "0 0 20 * * *"
  backupOwnerReference: self
  method: plugin # ou volumeSnapshot
  cluster:
    name: postgresql

Archivage

  • Activé par défaut (archive_mode à on)
  • archive_command :
    • /controller/manager wal-archive …
  • Non modifiable
  • Nécessite un stockage de type S3, object storage
  • Utilisé pour les sauvegardes PITR
  • Se repose sur le plugin (isWALArchiver)

Travaux pratiques

  • Mise en place d’une sauvegarde PITR

Restauration

  • Création d’une nouvelle instance
    • Pas de restauration In-Place
  • À partir d’une sauvegarde physique
    • spec.bootstrap.recovery
      • barmanObjectStore
      • volumeSnapshots
  • PITR supporté
  • Indiquer le plugin à utiliser

Travaux pratiques

  • Procéder à une restauration PITR

Questions

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

Quiz

Travaux pratiques

La version en ligne des solutions de ces TP est disponible sur https://dali.bo/k3_solutions.

Travaux pratiques (solutions)