web-dev-qa-db-fra.com

pg_dump vs pg_dumpall? lequel utiliser pour les sauvegardes de bases de données?

J'ai essayé pg_dump puis sur une machine séparée, j'ai essayé d'importer le sql et de remplir la base de données, je vois

CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
CREATE TABLE
ERROR:  role "prod" does not exist
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
ALTER TABLE
WARNING:  no privileges could be revoked for "public"
REVOKE
ERROR:  role "postgres" does not exist
ERROR:  role "postgres" does not exist
WARNING:  no privileges were granted for "public"
GRANT

ce qui signifie que mes informations user et roles et grant ne sont pas dans pg_dump

D'un autre côté, nous avons pg_dumpall, J'ai lu conversation , et cela ne me mène nulle part?

Question
- Lequel dois-je utiliser pour les sauvegardes de bases de données? pg_dump ou pg_dumpall?
- l'exigence est que je puisse prendre la sauvegarde et que je puisse importer sur n'importe quelle machine et cela devrait très bien fonctionner.

32
daydreamer

Le processus habituel est:

  • pg_dumpall --globals-only pour obtenir les utilisateurs/rôles/etc
  • pg_dump -Fc pour chaque base de données pour obtenir un joli fichier compressé adapté à une utilisation avec pg_restore.

Oui, ce genre de suce. J'aimerais vraiment enseigner pg_dump à intégrer pg_dumpall sortie dans -Fc vidages, mais pour l'instant, malheureusement, il ne sait pas comment vous devez le faire vous-même.

Au moment de la rédaction (9.4), il y a aussi une mise en garde désagréable avec cette approche: Ni pg_dump, ni pg_dumpall dans --globals-only mode, videra l'accès utilisateur GRANTs sur DATABASEs.


Vous devez également connaître les sauvegardes physiques - pg_basebackup, Archivage PgBarman et WAL, PITR, etc. Ils offrent une récupération beaucoup plus fine, jusqu'à la minute ou la transaction individuelle. L'inconvénient est qu'ils occupent plus d'espace, ne peuvent être restaurés que sur la même version de PostgreSQL sur la même plate-forme et sauvegardent toutes les tables de toutes les bases de données sans possibilité d'exclure quoi que ce soit.

52
Craig Ringer