Dies ist eine alte Version des Dokuments!
Die hier beschriebene Methode erscheint im ersten Moment etwas kryptisch, hat aber den großen Vorteil, dass die Befehle skriptbar sind. Damit ist zum Beispiel eine automatische, nächtliche Sicherung realisierbar. Das hier vorgestellte Batch-Skript und auch pgAdmin benutzen diese Befehle.
Passen die Dateipfade an Ihre Gegebenheiten an! Sie können die Exe-Datei auch aus einem Explorerfenster in das Fenster der Eingabeaufforderung ziehen, so vermeiden Sie Tippfehler und die bei Leerzeichen nötigen Anführungszeichen werden automatisch gesetzt.
c:\Programme\PostgreSQL\9.2\bin\pg_dump.exe -U asv -Fc -f 2013-07-15_asv.backup asv
Erläuterung:
pg_dump.exe
ist das von postgreSQL mitgebrachte Tool zum Sichern von Datenbanken-U asv
: Aktion als Datenbankbenutzer asv durchführen-Fc
: Komprimiertes Format für die Datensicherung auswählen (c = compressed)-f <Dateiname>
Ausgabe in Datei (f = file)asv
Datenbank, die gesichert wirdBei der Ausführung des Befehls fragt pg_dump nach dem Passwort des Datenbankbenutzers asv. Um einen solchen Aufruf in eine Backup-Skript zu übernehmen, ist es nötig, dieses Passwort zu hinterlegen. Legen Sie hierzu im Verzeichnis %APPDATA%\postgresql (%APPDATA% ist das Application Data Unterverzeichnis im Userprofil) des Windows-Benutzers, der das Backup durchführt die Datei pgpass.conf an.
Die Datei pgpass.conf hat den folgenden Inhalt:
hostname:port:database:username:password
Die ersten 4 Felder können auch mit einer Wildcard (*) belegt sein.
Beispiel:
localhost:*:asv:asv:supergeheim
pg_dump wertet diese Datei automatisch aus und übernimmt das Passwort.
(Siehe auch: http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html)
c:\Programme\PostgreSQL\9.2\bin\pg_restore.exe -d asv -U asv -c 2013-07-15_asv.backup
Erläuterung:
pg_restore.exe
ist das von postgreSQL mitgebrachte Tool zum Wiederherstellen von Datenbanken-d asv
: Wiederherstellung in die Datenbank asv (d = database)-U asv
: Aktion als Datenbankbenutzer asv durchführen-c
: Datenbankobjekte vor dem Wiederherstellen löschen<dateiname>
: aus dieser Datei wiederherstellenVorsicht! Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. Haben Sie ein Backup gemacht?
c:\Programme\PostgreSQL\9.2\bin\dropdb.exe -U postgres asv
Vorsicht! Der folgende Befehl löscht Ihre ASV-Benutzer. dies sollten Sie nur machen, wenn Sie vorhaben, eine Komplettinstallation der ASV durchzuführen!
c:\Programme\PostgreSQL\9.2\bin\dropuser.exe -i -U postgres asv
Zur Syntax der verwendeten Befehle rufen Sie pg_dump --help
bzw. pg_restore --help
oder die zugehörigen man-pages auf.
Komprimiertes Backup der Datenbank erzeugen (als root):
pg_dump -h localhost -U asv -Fc -f <backup-name>.backup asv
Ein so erzeugtes Backup ist nachher auch mit pgAdmin wieder zurückspielbar (in diesem Fall ist die Dateiendung wichtig)
Unkomprimierten Dump der Datenbank erzeugen (als root):
pg_dump -h localhost -U asv -f <dump-name>.sql asv
Der so erzeugte Dump ist eine lesbare Textdatei, die SQL-Statements und die Daten enhält. Dieser ist nicht mit pgAdmin, sondern nur mit der unten genannten Methode wieder einspielbar.
Restore aus einem komprimierten Backup:
pg_restore -h localhost -d asv -U asv -c <backup-name>.backup
Restore aus einem unkomprimierten Dump:
root@asv-server:/tmp# su postgres
postgres@asv-server:/tmp$ dropdb asv
postgres@asv-server:/tmp$ createdb -h localhost -U asv -O asv asv
postgres@asv-server:/tmp$ psql -d asv -f <postgres_dump>.sql
postgres@asv-server:/tmp$ exit
Vorsicht! Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. Haben Sie ein Backup gemacht?
dropdb -h localhost -U asv asv
Vorsicht! Der folgende Befehl löscht Ihre ASV-Benutzer. Diesen sollten Sie nur dann löschen, wenn Sie vorhaben, eine Komplettinstallation der ASV durchzuführen!
dropuser -h localhost -i -U postgres asv