it-swarm.com.de

So erhalten Sie eine funktionierende und vollständige Sicherung und einen vollständigen Test von PostgreSQL DB

Ich hatte gehofft, ich könnte eine klare Antwort darauf erhalten, wie ich sicherstellen kann, dass ein vollständiges Postgres-Backup erstellt wird, wie Sie es mit MS SQL Server erhalten würden, und mich dann um verwaiste Benutzer kümmern kann.

Nach dem, was ich gelesen habe und es könnte falsch sein, war es eine Herausforderung, einen guten PostgreSQL-Blog zu finden. Bitte empfehlen Sie mir einige. Ich muss herausfinden, wie diese App funktioniert, damit ich meinen Backups und Slony vertrauen kann Reproduzieren. Ich ließ einen Entwickler ein Backup wiederherstellen, das ich von PgadminIII über die Formate custom, directory und tar erstellt hatte, während er OIDs auswählte, aber er sagte, zwei von ihnen taten es nicht. t load, tar tat es, aber es war nur das Verzeichnis, nicht die Daten. Ich bin jetzt wirklich verwirrt.

  1. Ich verwende PGAdminIII, es hat die Optionen pg_dump Und pg_dumpall. Ich möchte alles sichern, dass ich testen muss, um diese Datenbank irgendwo wiederherzustellen und zu überprüfen, ob ja, alle Daten, die wir benötigen, und unser Backup ist gut. Schließlich möchte ich ein Skript zur automatischen Wiederherstellung schreiben, aber jeden Tag.

pg_dumpall Hat anscheinend eine -globals Option, die alles sichern soll, aber die Hilfe für pg_dumpall Zeigt eine -g, --globals-only dump only global objects, no databases, Keine --globals Option .

Ich dachte, pg_dumpall Würde zumindest Fremdschlüssel sichern, aber selbst das scheint eine 'Option' zu sein. Laut Dokumentation muss ich mir selbst mit pg_dumpall Eine Option -o Verwenden, um Fremdschlüssel zu sichern. Ich kann mir nicht wirklich vorstellen, wann ich nicht möchte Fremdschlüssel sichern und dies wäre als Standardoption sinnvoller.

  1. Wie würde ich mich um verwaiste Benutzer kümmern und überprüfen, ob ich alles habe? Ich möchte meine Sicherungsdatei tatsächlich auf einem anderen Server wiederherstellen und überprüfen, ob alles funktioniert. Wenn jemand Vorschläge hat, wie man ein echtes Backup in PostgreSQL erstellt und wiederherstellt, wäre ich sehr dankbar.

Ich hatte einen PostgreSQL-Server, kann aber immer noch nicht verstehen, warum die App nicht standardmäßig OIDs sichern würde! Es scheint, als würden Sie 99,9% der Zeit das wollen.

UPDATE 1 :

In Postgres Dokumentation wird erwähnt, dass die von mir gesuchte Option globals eine Standardoption für diese Version zu sein scheint, aber weiterhin die Option -o Benötigt. Wenn jemand einen Beispielbefehl überprüfen oder mir geben kann, um eine einzelne Datenbank an anderer Stelle mit allem, was sie benötigt, wiederherzustellen, würde ich es begrüßen.

Bearbeiten: Wird von der Site gebeten, die Einzigartigkeit dieser Frage durch Bearbeiten meiner Frage zu zeigen. Diese Frage wirft das Problem auf und verdeutlicht die OIDs in Sicherungen, den Unterschied zwischen globalen und nicht globalen Daten sowie das Testen von Wiederherstellungsempfehlungen, um sicherzustellen, dass die Sicherung gut ist und nicht nur eine Sicherung. Aufgrund der Antworten konnte ich Backups erstellen, Globals/Oids herausfinden und jeden Abend einen Testwiederherstellungsprozess auf Postgres mit Cron-Jobs starten. Danke für die Hilfe!

49
Ali Razeghi

Sie können den gesamten PostgreSQL-Cluster mit pg_dumpall sichern. Das sind alle Datenbanken und alle globalen Daten für einen einzelnen Cluster. Über die Befehlszeile auf dem Server würde ich so etwas tun. (Mine überwacht Port 5433, nicht den Standardport.) Möglicherweise benötigen Sie die Option --clean.

$ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql

Dies umfasst die globalen Informationen zu Benutzern und Gruppen, Tabellenbereichen usw.

Wenn ich eine einzelne Datenbank sichern und auf einen Scratch-Server verschieben würde , würde ich die Datenbank mit pg_dump sichern und die Globals mit beiden sichern

  • pg_dumpall --globals-only Oder
  • pg_dumpall --roles-only (Wenn Sie nur Rollen benötigen)

so was.

$ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql

Ausgaben sind nur Textdateien.

Nachdem Sie diese Dateien auf einen anderen Server verschoben haben, laden Sie zuerst die globalen Daten und dann den Datenbankspeicherauszug.

$ psql -U postgres -h localhost -p 5433 < globals.sql
$ psql -U postgres -h localhost -p 5433 < sandbox.sql

Ich dachte, pg_dumpall würde zumindest Fremdschlüssel sichern, aber selbst das scheint eine 'Option' zu sein. Laut: http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html Auch mit pg_dumpall muss ich eine Option -o verwenden, um Fremdschlüssel zu sichern

Nein, in dieser Referenz steht "Verwenden Sie diese Option, wenn Ihre Anwendung auf irgendeine Weise auf die Spalten OID verweist (z. B. in einer Fremdschlüsseleinschränkung). Andernfalls sollte diese Option nicht verwendet werden. " (Hervorhebung hinzugefügt.) Ich halte es für unwahrscheinlich, dass Ihre Anwendung auf die Spalten OID verweist. Sie müssen diese Option nicht verwenden, um "Fremdschlüssel zu sichern". (Lesen Sie die Dump-Datei in Ihrem Editor oder File Viewer.)