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 extraire (<< 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 de toutes les bases de données, il est en pratique nécessaire d'avoir les droits de superutilisateur des bases de données pour avoir une sauvegarde complète. De plus, il faut des droits de superutilisateur à l'exécution du script produit, pour avoir le droit de créer des utilisateurs et des groupes et de créer des bases de données.

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

pg_dumpall a besoin de se connecter plusieurs fois au serveur PostgreSQL (une fois par base de données). Si vous utilisez l'authentification par mot de passe, il pourrait avoir besoin de demander un mot de passe à chaque fois. Il est intéressant d'avoir un fichier ~/.pgpass dans de tels cas. Voir Section 27.12 pour plus d'informations.

Options

Les options suivantes en ligne de commande contrôlent 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 ralentit la restauration ; c'est principalement utile pour créer des sauvegardes qui peuvent être chargées dans des bases de données autres que PostgreSQL. Notez que la restauration pourrait aussi échouer si vous avez modifié l'ordre des colonnes. L'option -D est plus sûre, bien que plus lente.

-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 ralentit la restauration ; c'est principalement utile pour créer des sauvegardes qui peuvent être chargées dans des bases de données autres que PostgreSQL.

-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 sauvegarder des bases de données de 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) comme faisant partie des données de chaque table. Utilisez cette option si votre application référence les colonnes OID (par exemple, dans une contrainte de clé étrangère). Sinon, cette option ne doit pas être utilisée.

-O
--no-owner

Ne produit pas les commandes pour mettre les propriétaires des objets à ceux de la base de données originale. Par défaut, pg_dumpall lance les instructions ALTER OWNER ou SET SESSION AUTHORIZATION pour configurer le propriétaire des éléments créés. Ces instructions échouent lorsque le script est lancé par un utilisateur ne disposant pas des droits de superutilisateur (ou ne possédant pas les droits du propriétaire de tous les objets compris dans ce script). Pour que ce script puisse être restauré par n'importe quel utilisateur mais donne la propriété des objets à l'utilisateur l'exécutant, spécifiez -O.

-s
--schema-only

Sauvegarde seulement les définitions des objets (schéma), pas les données.

-S username
--superuser=username

Spécifie le nom du superutilisateur à utiliser lors de la désactivation des déclencheurs. Ceci est seulement pris en compte si --disable-triggers est utilisé. (Habituellement, il est mieux de ne pas utiliser cette option et de lancer à la place le script résultant en tant que superutilisateur.)

-v
--verbose

Spécifie le mode verbeux. Ceci fait que pg_dumpall affiche les heures de démarrage/arrêt dans le fichier de sauvegarde et les messages de progression sur la sortie standard. Il active aussi la sortie verbeuse dans pg_dump.

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

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

-X disable-dollar-quoting
--disable-dollar-quoting

Cette option désactive l'utilisation du dollar comme guillemet pour les corps des fonctions et le force à être entre guillemets en utilisant la syntaxe standard du SQL.

-X disable-triggers
--disable-triggers

Cette option est utile uniquement lors de la création d'une sauvegarde des données seules. Elle indique à pg_dumpall d'inclure les commandes pour désactiver temporairement les déclencheurs sur les tables cibles alors que les données sont rechargées. Utilisez ceci si vous avez des vérifications d'intégrité référencielle ou d'autres déclencheurs sur les tables que vous ne voulez pas appeler lors du rechargement des données.

Actuellement, les commandes émises pour --disable-triggers doivent être lancées en tant que superutilisateur. Donc, vous devez aussi spécifier un nom de superutilisateur avec -S ou, mieux, lancer le script résultant en tant que superutilisateur.

-X use-set-session-authorization
--use-set-session-authorization

Affiche les commandes SET SESSION AUTHORIZATION du standard SQL à la place des commandes OWNER TO. Ceci rend la sauvegarde plus compatible avec les standards mais, suivant l'historique des objets dans la sauvegarde, pourrait ne pas être restauré proprement.

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

-h hôte

Spécifie le nom d'hôte de la machine sur laquelle 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 sur lequel 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 la restauration effectuée, 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 contient les commandes appropriées pour créer et se connecter aux bases de données sauvegardées.)

Voir aussi

pg_dump. Vous trouverez ici les détails sur les messages d'erreurs possibles.