Aller au contenu

pg_dump

pg_dump est l’outil standard de sauvegarde des bases de données PostgreSQL.

Note

Pour le serveur PostgreSQL, pg_dump est un client comme les autres. Si vous avez activé les statistiques, les parcours séquentiels réalisés par pg_dump seront comptabilisés. Néanmoins, il vous est possible de supprimer ce comportement avec les options track_counts (pour les versions 8.3 et ultérieures), et avec les options stats_block_level et stats_row_level (pour les versions antérieures à la 8.3).

Sauvegarde complète d’une instance

pg_dump permet d’exporter une base de données à la fois, et il est conseillé d’utiliser le format custom ou directory pour faciliter les restaurations partielles :

pg_dump -U postgres -Fc -f fichier.dump la_base
pg_dump -U postgres -Fd -j5 -f repertoire_dump.d la_base

Pour sauvegarder les rôles et tablespaces globaux :

pg_dumpall -U postgres -g -f roles_tblspc.sql

Pour restaurer partiellement les données, par exemple, uniquement la structure dans une base préalablement créée :

pg_restore -U postgres -s -d la_base2 fichier.dump

L’aide de pg_restore (--help) donne des options pour la restauration partielle. Utilisez -l pour sauvegarder la table des matières du dump dans un fichier, puis éditez ce fichier pour sélectionner ce qui doit être restauré et utilisez -L pour appliquer cette liste à pg_restore.

Pour automatiser la sauvegarde de toutes les bases, vous pouvez utiliser un script, tel que :

Exemple de script pg_back

Exemples

Déplacer une base de données

Assurez-vous que les utilisateurs existent sur le nouveau serveur, sauf si vous ne souhaitez pas conserver les droits sur les objets.

Configurer l’ancien serveur pour autoriser les connexions depuis le nouveau serveur pour l’utilisateur monuser et la base mabase.

Sur le nouveau serveur, exécutez :

su - postgres
pg_dump -h ancien.serveur -U monuser -C mabase | psql

Cela utilise les possibilités de connexion des commandes Unix entre elles pour transférer les données.