Skip to content

Sauvegarde et restauration

Introduction

La sauvegarde et la restauration font référence aux technologies et pratiques permettant de réaliser des copies périodiques de données et d'applications sur un périphérique secondaire distinct, puis d'utiliser ces copies pour récupérer les données et les applications, ainsi que les opérations commerciales dont elles dépendent.

La sauvegarde et la restauration sont utilisées si les données et les applications d'origine sont perdues ou endommagées en raison d'une panne de courant, d'une cyberattaque, d'une erreur humaine, d'une catastrophe ou de tout autre événement imprévu.

Sous PostgreSQL

Sous PostgreSQL par défaut il existe 3 type de sauvegarde.

  • Sauvegarde de type SQL (Dump)
  • Sauvegarde au niveau du système de fichier
  • Sauvegarde en archivage continue

Sauvegarde

La sauvegarde SQL (également appelé Dump) se réalise avec le programme founit en standard pg_dump.

Restauration

la restauration de cette sauvegarde se fera avec le programme pg_restore

pg_dump – Sauvegarde de bases PostgreSQL

Description

pg_dump est un outil en ligne de commande qui permet de sauvegarder une base de données PostgreSQL.

Avantages :

  • Ne bloque pas les autres connexions.
  • Plusieurs formats de sortie possibles.
  • Permet de sauvegarder tout ou partie d’une base.

Formats de sorties

FormatDescriptionExtension
SQLScript SQL lisible et portable..sql
CustomFormat binaire optimisé pour pg_restore..dump
DirectoryUn fichier par table, idéal pour les grosses BDD./dir/
TarFormat binaire compressé, compatible avec tar..tar

Options courantes

OptionDescription
-U utilisateurNom de l’utilisateur PostgreSQL
-h hôteAdresse du serveur PostgreSQL
-p portPort de connexion (par défaut : 5432)
-d baseNom de la base à sauvegarder
-F formatFormat de sortie (p, c, d, t)
-f fichierFichier de sortie
-WDemande le mot de passe
--cleanNettoie les objets avant recréation
--if-existsUtilise IF EXISTS pour éviter les erreurs

Exemples d’utilisation

Sauvegarde complète en SQL

shell
pg_dump -U mon_user -h localhost -p 5432 -d ma_base -F p -f sauvegarde.sql

Sauvegarde en format custom (binaire)

shell
pg_dump -U mon_user -d ma_base -F c -f sauvegarde.dump

Sauvegarde en format directory

shell
pg_dump -U mon_user -d ma_base -F d -f sauvegarde_dir/

Sauvegarde avec compression

shell
pg_dump -U mon_user -d ma_base -F c -f - | gzip > sauvegarde.dump.gz

Sauvegarde d’un schéma spécifique

shell
pg_dump -U mon_user -d ma_base -n mon_schema -f schema.sql

Sauvegarde des données uniquement

shell
pg_dump -U mon_user -d ma_base -a -f données.sql

pg_restore – Restauration de bases PostgreSQL

Description

pg_restore permet de restaurer une base de données PostgreSQL à partir d’un fichier créé par pg_dump (surtout en formats custom, directory ou tar).

Avantages :

  • Restauration sélective (tables, schémas, etc.).
  • Contrôle fin sur les options de restauration.
  • Optimisé pour les gros volumes.

Formats supportés

FormatDescription
CustomFormat binaire optimisé pour pg_restore
DirectoryUn fichier par table, idéal pour les grosses BDD
TarFormat binaire compressé, compatible avec tar

WARNING

Ne fonctionne pas avec les sauvegardes en format SQL pur (.sql)

utiliser la commande psql dans ce cas

Options courantes

OptionDescription
-U utilisateurNom de l’utilisateur PostgreSQL
-h hôteAdresse du serveur PostgreSQL
-p portPort de connexion (par défaut : 5432)
-d baseBase cible pour la restauration
-F formatFormat de la sauvegarde (c, d, t)
-j nombreNombre de jobs parallèles (accélère la restauration)
--cleanNettoie les objets avant recréation
--if-existsUtilise IF EXISTS pour éviter les erreurs
--no-ownerIgnore les propriétaires des objets
--no-privilegesNe restaure pas les permissions
-vMode verbeux
-lListe le contenu de la sauvegarde

Exemples d’utilisation

Restauration complète (format custom)

shell
pg_restore -U mon_user -d ma_base -F c sauvegarde.dump

Restauration avec jobs parallèles (4 jobs)

shell
pg_restore -U mon_user -d ma_base -j 4 -F c sauvegarde.dump

Restauration sélective (une seule table)

shell
pg_restore -U mon_user -d ma_base -t ma_table -F c sauvegarde.dump

Restauration en mode "clean" (nettoyage avant)

shell
pg_restore -U mon_user -d ma_base --clean --if-exists -F c sauvegarde.dump

Lister le contenu d’une sauvegarde

shell
pg_restore -l -F c sauvegarde.dump

Restauration depuis un format directory

shell
pg_restore -U mon_user -d ma_base -F d sauvegarde_dir/

Depuis un script SQL

shell
psql -U mon_user -d ma_base -f sauvegarde.sql

WARNING

Dans cet exemple on utilise psql au lieu de pg_restore

pgBackRest – Sauvegarde et Restauration PostgreSQL

Description

pgBackRest est un outil open source conçu pour gérer les sauvegardes fiables, performantes et automatisées des bases de données PostgreSQL.

Avantages :

  • Sauvegardes incrémentielles et différentielles.
  • Compression et chiffrement natifs.
  • Restauration rapide et flexible (PITR, tablespaces, etc.).
  • Intégration facile avec les environnements de production.
  • Support des clusters et réplications.

Concepts clés

ConceptDescription
Full BackupSauvegarde complète de la base
Incremental BackupSauvegarde uniquement les changements depuis la dernière sauvegarde
Differential BackupSauvegarde les changements depuis la dernière sauvegarde complète
PITRRestauration à un point précis dans le temps (Point-In-Time Recovery)
StanzaConfiguration logique d’une base ou d’un cluster à sauvegarder
RepositoryEmplacement de stockage des sauvegardes (local, S3, SFTP, etc.)

Installation

Sur Debian/Ubuntu

shell
sudo apt-get install pgbackrest

Sur RHEL/CentOS

shell
sudo yum install pgbackrest

Configuration minimale

ini
[global]
repo1-path=/var/lib/pgbackrest
repo1-retention-full=2
log-level-console=info

[ma_stanza]
pg1-path=/var/lib/postgresql/17/main

Commandes de base

Initialiser une stanza

shell
pgbackrest --stanza=ma_stanza stanza-create

Sauvegarde complète

shell
pgbackrest --stanza=ma_stanza --type=full backup

Sauvegarde incrémentielle

shell
pgbackrest --stanza=ma_stanza --type=incr backup

Vérifier l’état des sauvegardes

shell
pgbackrest info

Restauration complète

shell
pgbackrest --stanza=ma_stanza restore

Restauration PITR (Point-In-Time Recovery)

shell
pgbackrest --stanza=ma_stanza --type=time --target="2025-09-13 12:00:00+00" restore

Exemples avancés

Sauvegarde avec compression et chiffrement

ini
[global]
repo1-cipher-type=aes-256-cbc
repo1-cipher-pass=mon_mot_de_passe
compress-level=3

Sauvegarde vers un repository distant (S3)

ini
[global]
repo1-type=s3
repo1-s3-bucket=mon-bucket-pgbackrest
repo1-s3-endpoint=s3.eu-west-3.amazonaws.com
repo1-s3-region=eu-west-3
repo1-s3-key=ma_clé
repo1-s3-key-secret=ma_clé_secrète

Restauration vers un nouvel emplacement

shell
pgbackrest --stanza=ma_stanza --pg1-path=/nouveau/chemin/data restore

Documentation officielle

Articles divers

Sauvegarde

Restauration

Mise à jour le:

Publier sous CC BY-SA 4.0.