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 ​

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

Sauvegarde en format custom (binaire) ​

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

Sauvegarde en format directory ​

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

Sauvegarde avec compression ​

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

Sauvegarde d’un schéma spécifique ​

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

Sauvegarde des données uniquement ​

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) ​

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

Restauration avec jobs parallèles (4 jobs) ​

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

Restauration sélective (une seule table) ​

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

Restauration en mode "clean" (nettoyage avant) ​

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

Lister le contenu d’une sauvegarde ​

pg_restore -l -F c sauvegarde.dump

Restauration depuis un format directory ​

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

Depuis un script SQL ​

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

sudo apt-get install pgbackrest

Sur RHEL/CentOS

sudo yum install pgbackrest

Configuration minimale ​

[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 ​

pgbackrest --stanza=ma_stanza stanza-create

Sauvegarde complète ​

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

Sauvegarde incrémentielle ​

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

Vérifier l’état des sauvegardes ​

pgbackrest info

Restauration complète ​

pgbackrest --stanza=ma_stanza restore

Restauration PITR (Point-In-Time Recovery) ​

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

Exemples avancés ​

Sauvegarde avec compression et chiffrement ​

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

Sauvegarde vers un repository distant (S3) ​

[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 ​

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.