PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

pg_dump gegen pg_dumpall? Welches soll man für Datenbanksicherungen verwenden?

Der übliche Ablauf ist:

  • pg_dumpall --globals-only um Benutzer/Rollen/etc zu erhalten
  • pg_dump -Fc für jede Datenbank, um einen schönen komprimierten Dump zu erhalten, der für die Verwendung mit pg_restore geeignet ist .

Ja, diese Art ist scheiße. Ich würde wirklich gerne pg_dump unterrichten um pg_dumpall einzubetten Ausgabe in -Fc Dumps, aber im Moment weiß es leider nicht wie, also musst du es selbst machen.

Bis PostgreSQL 11 gab es bei diesem Ansatz auch einen hässlichen Vorbehalt:Weder pg_dump , noch pg_dumpall in --globals-only Modus würde den Benutzerzugriff GRANT ablegen s auf DATABASE s. Sie mussten sie also praktisch aus den Katalogen extrahieren oder einen pg_dumpall filtern . Dies wurde in PostgreSQL 11 behoben; siehe Versionshinweise .

Sie sollten auch über physische Backups Bescheid wissen - pg_basebackup , PgBarman- und WAL-Archivierung, PITR usw. Diese bieten eine viel "feiner granulierte" Wiederherstellung bis hin zur Minute oder einzelnen Transaktion. Der Nachteil ist, dass sie mehr Speicherplatz beanspruchen, nur auf dieselbe PostgreSQL-Version auf derselben Plattform wiederhergestellt werden können und alle Tabellen in allen Datenbanken sichern, ohne dass irgendetwas ausgeschlossen werden kann.