Pg dump

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Commandes pg_dump / pg_restore / createdb
Type de sauvegarde logique (export/réimport de données)
Format recommandé -Fc (custom, compressé)
Voir aussi Psql · PostgreSQL install

pg_dump et pg_restore sont les outils standard de PostgreSQL pour la sauvegarde et la restauration logiques (export des données/structure sous forme de requêtes ou de format binaire propriétaire, par opposition à une sauvegarde physique des fichiers de PGDATA).

Sauvegarde

pg_dump -Fc db_name -f db_name.dump

Le format -Fc (custom) est compressé par défaut et permet une restauration sélective (table par table) avec pg_restore — c'est le format à privilégier pour une sauvegarde d'exploitation. Autres formats disponibles :

  • -Fp (plain) — script SQL texte brut, rejouable avec psql directement ;
 pratique pour inspecter le contenu ou le versionner, mais pas compressé ;
  • -Ft (tar) — archive tar, restaurable sélectivement comme -Fc ;
  • -Fd (directory) — un fichier par table dans un répertoire, seul format permettant
 la parallélisation de la sauvegarde (-j N).

pg_dump ne sauvegarde qu'une seule base. Les objets globaux au cluster (rôles, tablespaces) ne sont pas inclus — il faut les sauvegarder séparément :

pg_dumpall -g -f globals.sql

Restauration

createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump
  • -T template0 — crée la base à partir du template minimal template0
 plutôt que template1, pour éviter d'hériter d'objets ajoutés entretemps dans
 template1 sur l'instance de destination ;
  • --role=owner2 — rejoue la restauration en réattribuant la propriété des objets
 au rôle indiqué (utile quand on restaure sur une instance où le propriétaire d'origine
 n'existe pas ou doit changer).

Bonnes pratiques

  • automatiser la sauvegarde (cron/systemd timer) avec rotation des fichiers dans le temps ;
  • tester régulièrement la restauration sur un environnement séparé — une sauvegarde
 jamais restaurée n'est pas une sauvegarde fiable ;
  • penser à pg_dumpall -g en complément si les rôles/tablespaces doivent être
 reconstitués sur une nouvelle instance ;
  • pour de gros volumes, comparer -Fd avec parallélisation (-j) au
 format -Fc mono-thread.

Voir aussi