Dump avec pg_dump

pg_dump est l’utilitaire qui permet de faire des backups d’une base de données PostgreSQL. Il permet de garantir l’intégrité des backups et de ne pas bloquer les utilisateurs (en lecture comme en écriture) lors du dump.

Il propose plusieurs formats :

  • –format=plain format texte. La base est sauvegardée comme une suite d’instructions SQL. C’est le format par défaut, mais le moins flexible car il ne permet pas d’être sélectif lors de la restauration. Par contre, il n’est pas compressé et peut être importer avec quelques modifications dans d’autres types de base de données (Oracle)

  • –format=tar format TAR. Comme le format texte, il n’est pas compressé et ne permet pas de réordonner les infos à la restauration, mais il peut être manipuler avec des outils standards comme TAR.

  • –format=custom format custom. C’est le format spécifique de PostgreSQL : il est compressé par défaut, permet de sélectionner, lors de son import, l’ordre des éléments et même de sélectionner quels éléments doivent être restaurés.

Réaliser un backup au format custom

pg_dump --format=custom --file [mon_fichier.dump] [nom_de_la_base]

Réaliser un backup au format text avec les instructions de creation de la base

pg_dump --format=plain--file --create [mon_fichier.sql] [nom_de_la_base]

Restauration avec psql (format texte)

Les dumps réalisés avec le format texte sont de simples fichiers contenant une suite de commandes SQL. Ils sont donc directement utilisables avec la commande psql :

psql --file [mon_fichier.sql] [nom_de_la_base]

Restauration avec pg_restore (autres formats)

Pour restaurer un dump réaliser en mode tar ou custom on doit utiliser la commande pg_restore. Elle notamment de faire un DROP des objets existants avant de les réinsérer ou encore de choisir dans un dump global quelle base doit être restaurée.

Voir le contenu d’un dump (tables, index, contraintes) :

pg_restore --list [mon_fichier.dump]

Restaurer une base dumpée avec le format custom :

pg_restore --clean --dbname [nom_de_la_base_de_destination] [mon_fichier.dump]