524 Stimmen

Wiederherstellung einer Postgres-Sicherungsdatei über die Befehlszeile?

Ich bin neu in Postgresql, und lokal verwende ich pgadmin3. Auf dem Remote-Server habe ich diesen Luxus jedoch nicht.

Ich habe bereits eine Sicherungskopie der Datenbank erstellt und diese kopiert, aber gibt es eine Möglichkeit, eine Sicherungskopie über die Befehlszeile wiederherzustellen? Ich sehe nur Dinge, die sich auf die GUI oder auf pg_dumps beziehen. Wenn mir also jemand sagen kann, wie man das macht, wäre das großartig!

649voto

Steven Schlansker Punkte 35955

Je nachdem, wie Sie die Dump-Datei erstellt haben, gibt es zwei Werkzeuge, die Sie sich ansehen sollten.

Ihre erste Referenzquelle sollte die Manpage sein pg_dump(1) denn dadurch wird der Speicherauszug selbst erstellt. Hier steht:

Dumps können in einem Skript ausgegeben werden oder Archivdateiformaten ausgegeben werden. Skript-Dumps sind Klartextdateien, die die SQL Befehle, die zur Rekonstruktion der die Datenbank in den Zustand zu versetzen, in dem sie zum Zeitpunkt des Speicherns. Um aus einem solchen Skript wiederherzustellen, füttern Sie es mit psql(1). Skriptdateien können verwendet werden die Datenbank auch auf anderen Rechnern auf anderen Maschinen und anderen Architekturen; mit einigen Änderungen auch auf anderen SQL-Datenbankprodukten.

Die alternativen Archivdateiformate müssen mit pg_restore(1) verwendet werden, um die Datenbank wiederherzustellen. Sie erlauben pg_restore, selektiv zu sein, was wiederhergestellt wird, oder sogar die Reihenfolge der Elemente vor der Wiederherstellung. Das Archivdateiformate sind so konzipiert, dass sie über Architekturen hinweg portabel zu sein.

Es hängt also davon ab, wie es entsorgt wurde. Sie können es wahrscheinlich herausfinden, indem Sie das ausgezeichnete file(1) Kommando - wenn es ASCII-Text und/oder SQL erwähnt, sollte es wiederhergestellt werden mit psql ansonsten sollten Sie wahrscheinlich pg_restore

Die Wiederherstellung ist ziemlich einfach:

psql -U username -d dbname < filename.sql

-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql

または

pg_restore -U username -d dbname -1 filename.dump

Schauen Sie sich die jeweiligen Manpages an - es gibt eine ganze Reihe von Optionen, die die Wiederherstellung beeinflussen. Je nachdem, wie die Dumps generiert wurden, müssen Sie vor der Wiederherstellung möglicherweise Ihre "Live"-Datenbanken löschen oder sie von Vorlage0 neu erstellen (wie in einem Kommentar erwähnt).

315voto

Alex Deemann Punkte 3256

Backup erstellen

pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f 
"/usr/local/backup/10.70.0.61.backup" old_db

-F c es benutzerdefiniertes Format (komprimiert und in der Lage, parallel zu tun mit -j N ) -b es einschließlich Klecksen , -v es Ausführlich , -f ist die Name der Sicherungsdatei .

Wiederherstellung aus der Sicherung

pg_restore -h localhost -p 5432 -U postgres -d old_db -v 
"/usr/local/backup/10.70.0.61.backup"

wichtig zu setzen -h localhost - Option

138voto

Tombart Punkte 27954

Möglicherweise müssen Sie angemeldet sein als postgres um volle Zugriffsrechte auf Datenbanken zu erhalten.

su - postgres
psql -l                      # will list all databases on Postgres cluster

pg_dump/pg_restore

  pg_dump -U username -f backup.dump database_name -Fc 

Schalter -F Format der Sicherungsdatei angeben:

  • c verwendet ein benutzerdefiniertes PostgreSQL-Format, das komprimiert ist und die kleinste Sicherungsdatei ergibt
  • d für ein Verzeichnis, in dem jede Datei eine Tabelle ist
  • t für TAR-Archive (größer als das benutzerdefinierte Format)
  • -h / --host Gibt den Hostnamen des Rechners an, auf dem der Server läuft
  • -W / --password Kraft pg_dump zur Abfrage eines Passworts vor der Verbindung mit einer Datenbank

Sicherung wiederherstellen:

   pg_restore -d database_name -U username -C backup.dump

Parameter -C vor dem Importieren von Daten eine Datenbank erstellen sollte. Wenn das nicht funktioniert, können Sie immer eine Datenbank erstellen, z. B. mit dem Befehl (als Benutzer postgres oder ein anderes Konto, das Rechte zum Erstellen von Datenbanken hat) createdb db_name -O owner

pg_dump/psql

Für den Fall, dass Sie das Argument nicht angegeben haben -F Standard-SQL-Format im Klartext verwendet wurde (oder mit -F p ). Dann können Sie nicht mit pg_restore . Sie können Daten importieren mit psql .

Sicherung:

pg_dump -U username -f backup.sql database_name

wiederherstellen:

psql -d database_name -f backup.sql

79voto

Natan Medeiros Punkte 1121

POSTGRESQL 9.1.12

DUMP:

pg_dump -U user db_name > archive_name.sql

geben Sie das Benutzerpasswort ein und drücken Sie die Eingabetaste.

RESTORE:

psql -U user db_name < /directory/archive.sql

geben Sie das Benutzerpasswort ein und drücken Sie die Eingabetaste.

42voto

Yahor M Punkte 549

Im Folgenden finden Sie meine Version von pg_dump die ich zur Wiederherstellung der Datenbank verwende:

pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup

oder verwenden psql :

psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup

wobei -h Gastgeber, -p Hafen, -u Login-Benutzername, -d Name der Datenbank

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X