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 (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 ralentira 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 ralentira 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 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 identifieurs des objets (OID) comme faisant partie des données de 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.

-O
--no-owner

Ne donne pas les commandes pour configurer les propriétaires des objets correspondant à 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 échoueront lorsque le script est lancé par un utilisateur ne disposant pas des droits des superutilisateurs (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 le laisser de côté 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 temps de démarrage/arrêt dans le fichier de sauvegarde et les messages de progression sur la sortie standard. Il activera 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 guillemet 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é incrémentale 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 lançées en tant que superutilisateur. Donc, vous devriez aussi spécifier un nom de superutilisateur avec -S ou, encore 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 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.