pg_dumpall

Nom

pg_dumpall -- extrait un groupe de bases de données PostgreSQL dans un fichier script

Synopsis

pg_dumpall [option...]

Description

pg_dumpall est un outil pour écrire (<< sauvegarder >>) toutes les bases de données PostgreSQL d'un groupe dans un fichier script. Celui-ci contient les commandes SQL pouvant être utilisées pour restaurer les bases de données avec psql. Il fait ceci en appelant pg_dump pour chaque base de données du groupe. pg_dumpall sauvegarde aussi les objets globaux, communs à toutes les bases de données. (pg_dump ne sauvegarde pas ces objets.) Cela inclut aussi les informations concernant les utilisateurs et groupes de la base de données ainsi que les droits d'accès s'appliquant aux bases de données.

Du coup, pg_dumpall est une solution intégrée pour sauvegarder vos bases de données. Mais, notez une limitation : il ne peut pas sauvegarder les << objets larges >>, car pg_dump ne peut pas sauvegarder de tels objets dans des fichiers texte. Si vous disposez de bases de données contenant des objets larges, elles devront être sauvegardées en utilisant un des modes de sorties non textuelles de pg_dump.

Comme pg_dumpall lit les tables à partir de toutes les bases de données, vous vous connecterez plutôt en tant que superutilisateur d'une base de données pour avoir une sauvegarde complète. De plus, vous aurez besoin des droits superutilisateur pour produire une sauvegarde complète. Enfin, vous aurez besoin des droits superutilisateurs pour ajouter utilisateurs et groupes et pour créer des bases de données.

Le script SQL écrira sur la sortie standard. Les opérateurs shell devront être utilisés pour la rediriger dans un fichier.

pg_dumpall a besoin de se connecter plusieurs fois au serveur PostgreSQL et pourrait avoir besoin de demander un mot de passe à chaque fois. Il est intéressant d'avoir un fichier $HOME/.pgpass dans de tels cas.

Options

Les options suivantes en ligne de commande sont utilisées pour contrôler le contenu et le format de la sortie.

-a
--data-only

Sauvegarde seulement les données, pas le schéma (définition des données).

-c
--clean

Inclut les commandes SQL pour nettoyer (supprimer) les bases de données avant de les recréer.

-d
--inserts

Sauvegarde les données en tant que commandes INSERT (plutôt que des COPY). Ceci ralentira la restauration mais rendra la sortie plus portable vers les autres systèmes de gestion de bases de données SQL.

-D
--column-inserts
--attribute-inserts

Sauvegarde les données en tant que commandes INSERT avec les noms de colonnes explicites (INSERT INTO table (colonne, ...) VALUES ...). Ceci ralentira la restauration mais est nécessaire si vous souhaitez arranger l'ordre des colonnes.

-g
--globals-only

Sauvegarde seulement les objets globaux (utilisateurs et groupes), pas les bases de données.

-i
--ignore-version

Ignore la différence de version entre pg_dumpall et le serveur de bases de données.

pg_dumpall peut gérer des bases de données à partir des versions précédentes de PostgreSQL, mais les très anciennes versions ne sont plus supportées (avant la 7.0). Utilisez cette option si vous avez besoin de surcharger la vérification de la version (et si pg_dumpall échoue, ne dites pas que vous n'avez pas été prévenu).

-o
--oids

Sauvegarde les identifiants des objets (OID) pour chaque table. Utilisez cette option si votre application référence les colonnes d'une certaine façon (par exemple, dans une contrainte de clé étrangère). Sinon, cette option ne devrait pas être utilisée.

-s
--schema-only

Sauvegarde seulement le schéma (définition des données), pas les données.

-v
--verbose

Spécifie le mode verbeux. Ceci fait que pg_dumpall affiche des messages de progression sur la sortie standard des erreurs.

-x
--no-privileges
--no-acl

Empêche la sauvegarde des droits d'accès (commandes grant/revoke).

Les options suivantes en ligne de commande contrôlent les paramètres de connexion à la base de données.

-h hôte

Spécifie le nom de l'hôte de la machine où le serveur de bases de données est en cours d'exécution. Si la valeur commence avec un slash, elle est utilisée comme répertoire du socket de domaine Unix. La valeur par défaut est prise à partir de la variable d'environnement PGHOST, si elle est initialisée, sinon une connexion socket de domaine Unix est tentée.

-p port

Spécifie le port TCP ou l'extension du fichier socket de domaine Unix local où le serveur est en écoute des connexions. La valeur par défaut est la variable d'environnement PGPORT, si elle est initialisée, ou la valeur compilée.

-U nomutilisateur

Se connecter en tant que cet utilisateur.

-W

Force une demande de mot de passe. Ceci devrait arriver automatiquement si le serveur réclame une authentification par mot de passe.

Environnement

PGHOST
PGPORT
PGUSER

Paramètres de connexion par défaut

Notes

Comme pg_dumpall appelle pg_dump en interne, certains messages de diagnostique se réfèrent en fait à pg_dump.

Une fois restauré, il est conseillé de lancer ANALYZE sur chaque base de données, de façon à ce que l'optimiseur dispose de statistiques utiles. Vous pouvez aussi lancer vacuumdb -a -z pour analyser toutes les bases de données.

Exemples

Pour sauvegarder toutes les bases de données :

$ pg_dumpall > db.out

Pour recharger cette base de données, utilisez par exemple :

$ psql -f db.out template1

(La base de données à laquelle vous vous connectez n'a pas d'importance ici car le fichier de script créé par pg_dumpall contiendra les commandes appropriées pour se créer et se connecter aux bases de données sauvegardées.)

Voir aussi

pg_dump. Vérifiez ici les détails sur les conditions d'erreurs possibles.