Wie kann ich eine PostgreSQL-Datenbank aus einer .tar-Datei wiederherstellen?


20

Ich habe alle PostgreSQL-Datenbanken während inkrementeller Sicherungen mit WHM gesichert, wodurch ein $ dbName erstellt wird. TAR- Datei.

Daten werden in diesen .tar-Dateien gespeichert, aber ich weiß nicht, wie ich sie über SSH in die einzelnen Datenbanken zurückspeichern kann. Insbesondere der Dateispeicherort.

Ich habe verwendet:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

die den Fehler generiert "Eingabedatei konnte nicht geöffnet werden: Berechtigung verweigert"

Jede Hilfe dankbar.


Hat der Benutzer, mit dem Sie diesen Befehl ausführen, Zugriff auf diese Datei?
Mat

Hallo Mat, du denkst schon (läuft als root), hast aber gerade das Problem nach vielen, vielen Kombinationen gelöst und die rohe .tar-Datei nach tmp verschoben .... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W Das -W am Ende war der Haupttrick, der die erforderliche Passworteingabe erzwang, wodurch alles wieder zusammengesetzt werden konnte.
Stephen

Antworten:


24

Habe die richtige Code-Zeichenfolge gefunden, falls jemand anderes diesen Thread findet.

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

Die Aufschlüsselung war von http://www.postgresql.org/docs/7.3/static/app-pgrestore.html und ein bisschen Versuch und Irrtum.

Im Wesentlichen...

-c to clean the database
-i to ignore any database version checks
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

Hoffe, dass das oben genannte jemand anderem hilft.


Wie geht das mit tar.gz?
Eri

2

Bei Verwendung von PgAdmin III für die Wiederherstellung funktionierte es einwandfrei, indem der folgende Befehl verwendet wurde, den es selbst erstellte:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

Um Warnungen zu vermeiden, ist es ratsam, die Rolle des Besitzers von Objekten in der Sicherungsdatei zu übernehmen, die bereits auf dem Zielserver vorhanden ist. Außerdem sollte die Ziel-DB bereits erstellt sein und dieser Rolle gehören.


1

Ich bin nicht sicher, ob eine .tar-Datei importiert werden kann. Ich würde ein tun

tar -zxvf client03.tar 

um zu extrahieren, was sich in der Datei befand, und pg_restore erneut zu versuchen. Ich weiß, dass pg_restore funktioniert, da wir dieselbe Wiederherstellungsmethode wie bei Bare-Metal-Wiederherstellungen verwenden.


1
Hallo Stephen, anscheinend kann ich das. Ich habe nur eine Weile gebraucht, um den richtigen Code zu finden und die Datei in einen Ordner zu verschieben, auf den zugegriffen werden darf :)
Stephen

Das "-z" würde einen Fehler zurückgeben, da es nur ein Teer ist, der nicht mit gzip komprimiert wurde.
Alex

Alex ist zu 100% korrekt.
Stephen Thompson

0

Das Folgende wurde für mich aus pgAdmin iii generiert, indem Sie auf die Datenbank klicken und mit der rechten Maustaste klicken und "Wiederherstellen" auswählen. Ich habe zu der .tar-Datei navigiert, die ich hatte, und sie hat es alleine gemacht.

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

0

Führen Sie für Version 9.5 in der Befehlszeile Folgendes aus

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"


0

GNU / LINUX-KONSOLE:

pg_restore -h 127.0.0.1 -p 5432 -U "postgres" -d "dvdrental_tpl" -v "/var/backups/dvdrental.tar";

- Detailhilfe

pg_restore --help

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.