On avait vu comment sauvegarder une base PostgreSQL avec l’outil graphique pgAdmin, voici la version en ligne de commande. Une alternative efficace et plus adaptée aux traitements réguliers, par exemple utilisés par un développeur d’application, un administrateur système et bien sûr un DBA (administrateur de bases de données). Les DBA de production et DBA de développement PostgreSQL doivent déjà connaitre tous ces paramètres.

Ce tutoriel explique comment sauvegarder (exporter) et restaurer (importer) une base de données sur un serveur PostgreSQL avec les commandes pg_dump et pg_dumpall (dump all). Une méthode simple et conseillée par le SGBD pour créer des dumps en quelques actions. On peut aussi scripter cette opération pour l’automatiser afin de créer des sauvegardes automatiques des bases PG SQL.

La principale différence entre pg_dump et pg_dumpall est la suivante : pg_dump sauvegarde une base, pg_dumpall fait une sauvegarde complète de l’instance avec la BDD, les objets, etc.

 

Options de sauvegarde pg_dump et pg_dumpall pour PostgreSQL

pg_dump -F p | t | c | d : choisir le format entre :

  • p : plain, SQL
  • t : tar
  • c : custom (format spécifique PGSQL)
  • d : directory

pg_dump -f : spécifie le fichier où sera créée la sauvegarde (sans -f, pgdump utilise le dossier standard de sortie)

pg_dump -s (pour –schema-only) : exporte uniquement la structure de la base

pg_dump -a (pour –data-only) : sauvegarde uniquement les données de la BDD

pg_dump -n <schema> : sélectionne uniquement le schéma

pg_dump -N <schema> : prend tous les schémas sauf celui indiqué

pg_dump -C : intègre la commande pour créer la base lors de la restauration

pg_dump -t <table> : sauvegarde juste cette table

pg_dump -T <table> : sauvegarde toutes les tables sauf celle indiquée

pg_dump -j <nombre> : parallélisation du job, indiquer un nombre de threads

pg_dump -O : ignorer le propriétaire

pg_dump -x : ignorer les droits

pg_dump –no-role-passwords : ne sauvegarde pas les mots de passe

pg_dump –no-tablespaces : ignorer les tablespaces

pg_dump –inserts : remplace COPY par INSERT

pg_dump -v : voir la progression de l’action

 

Exemples de commandes pg_dump et pg_dumpall

1. Ouvrir un Invite de commandes (cmd).

2. Aller dans le dossier \bin de PGSQL : cd D:\pgsql\bin ou cd /opt/pgsql/bin

Ou, en Linux, indiquer la variable dans le PATH : export PATH=/usr/local/pgsql/bin:$PATH

3. Exemples de commandes Windows. Pour Linux, retirer le « .exe » :

pg_dumpall.exe -U username > D:\Backup\dumpall

–> Va sauvegarder toutes les bases et tous les objets (utilisateurs, tablespaces…) dans le fichier dumpall.

pg_dump.exe -U username -C -F c -f D:\Backup\NomBase.dump NomBase

–> Va sauvegarder la base NomBase dans le dossier D:\Backup dans le format propriétaire PGSQL (bien compressé et rapide à exécuter).