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