Hallo zusammen,
ich habe mittels cronjob einen pg_dump meiner Datenbank erstellt. Der Versuch diesen mittels pg_restore wiederherzustellen schlägt leider fehl.
Fehler:Code:$ /usr/local/pgsql/bin/pg_restore -d newdb /dbbackups/olddb-20080806.gz
Ok. Es wurde schon darauf verwiesen, dass die wiederherzustellende Datei "in one of the non-plain text format" vorliegen muss.Code:pg_restore: [archiver] input file does not appear to be a valid archive
Aber wie kann ich das denn überprüfen bzw. beeinflussen? Beim pg_dump gebe ich ja kein Dateiformat an. Die Meldung kommt sowohl bei Angabe des Archives (dump.gz) als auch der entpackten Datei (dump), die übrigens keine Endung hat.
Es liegt also definitiv nicht am Inhalt der Datei?! Muss ich am pg_dump Befehl etwas ändern, z.B. explizite Angabe eines Formats?
Christian
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
ok. Habe die Datei mal per sql-Import eingelesen und das hat funktioniert.
Wie nutze ich dann aber pg_restore korrekt?
Dies offenbart die man-page:
AndreasCode:DESCRIPTION pg_restore is a utility for restoring a PostgreSQL database from an archive created by pg_dump(1) in one of the non-plain-text formats. It will issue the commands necessary to reconstruct the database to the state it was in at the time it was saved. The archive files also allow pg_restore to be selective about what is restored, or even to reorder the items prior to being restored. The archive files are designed to be portable across architectures.
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Nachdem ja jetzt schon alles funktioniert:
Man testet ein Backup bzw. die gesamte Backup-Prozedur, wenn man das Backup einrichtet. Nicht erst, wenn man das Backup benötigt.
Daher hoffe ich jetzt mal, du hattest zwar schon einen Cronjob eingerichtet aber das war jetzt der erste Test, ob das Backup auch funktioniert![]()
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Richtig.
Ja. Soweit ganz nett...
Ich habe das mal so verstanden: pg_dump > alteDB sichert meine Daten und das Pendant pg_restore -d neueDB -f alteDB stellt sie wieder her.
Wenn also pg_dump eine Datei erzeugt, warum meckert dann pg_restore, dass das keine gültige Datei ist?! (vorher natürlich create neueDB)
Meine Frage daher: Müssen bei den Befehlen weitere Parameter angegeben werden, damit sie ihren Zweck erfüllen?
Oder warum kann pg_restore mit der Datei, die pg_dump erzeugt nixchts anfangen?
Grüße
pg_dump erzeugt, wie von akretschmer schon erwähnt, ein Klartextfile. Dieses kannst du mit psql oder z.B. pgadminIII wieder einlesen.
pg_restore ist nur für das PostgreSQL-spezifische Datenformat gedacht.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Ok. Manchaml reicht es eben nicht, nur kurz ins Manual zu schauen
Aus dem postgreSQL Manual:
pg_restore -- restore a PostgreSQL database from an archive file created by pg_dump
Viel weiter unten steht ja auch, dass man bei Verwendung von pg_restore beim Aufruf von pg_dump den Zusatz -Fc (Custom archiv format) angeben muss. Bei archiv file habe ich da eher an eine gepackte Variante gedacht...
Nochmals Danke.
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen