Inhaltsverzeichnis

Backup und Restore an der Kommandozeile (Windows) bzw. der Shell (Linux)

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 für Windows und auch pgAdmin benutzen diese Befehle.

Windows

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.

Backup der Datenbank

c:\Programme\PostgreSQL\10\bin\pg_dump.exe -U asv -Fc --schema=asv --blobs -f 2021-07-15_asv.backup asv

Erläuterung:

Bei 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/10/static/libpq-pgpass.html)

Restore der Datenbank

c:\Programme\PostgreSQL\10\bin\psql.exe -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv

Erläuterung:

Damit sind alle ASV-spezifischen Daten in der Datenbank gelöscht. Das Schema selbst ist aber wieder angelegt.

c:\Programme\PostgreSQL\10\bin\pg_restore.exe -d asv -U asv --schema=asv 2021-07-15_asv.backup

Erläuterung:

Löschen der Datenbank

Vorsicht! Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. Haben Sie ein Backup gemacht?

c:\Programme\PostgreSQL\10\bin\dropdb.exe -U postgres asv

Löschen des Datenbankbenutzers

Vorsicht! Der folgende Befehl löscht Ihren ASV-Datenbank-Benutzer. Dies sollten Sie nur machen, wenn Sie vorhaben, eine Neuinstallation der ASV durchzuführen!

c:\Programme\PostgreSQL\10\bin\dropuser.exe -i -U postgres asv

Linux

Zur Syntax der verwendeten Befehle rufen Sie pg_dump --help bzw. pg_restore --help oder die zugehörigen man-pages auf.

Backup der Datenbank

Komprimiertes Backup der Datenbank erzeugen:

pg_dump -h localhost -U asv -Fc --schema=asv --blobs -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 --schema=asv --blobs -f <dump-name>.sql asv

Der so erzeugte Dump ist eine lesbare Textdatei, die SQL-Statements und die Daten enthält. Dieser ist nicht mit pgAdmin, sondern nur mit der unten genannten Methode wieder einspielbar.

Restore der Datenbank

Restore aus einem komprimierten Backup:

psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
pg_restore -h localhost -d asv -U asv --schema=asv <backup-name>.backup

Restore aus einem unkomprimierten Dump:

psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
psql -f <postgres_dump>.sql asv

Löschen der Datenbank

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

Löschen des Datenbankbenutzers

Vorsicht! Der folgende Befehl löscht Ihren ASV-Datenbank-Benutzer. Diesen sollten Sie nur dann löschen, wenn Sie vorhaben, eine Neuinstallation der ASV durchzuführen!

dropuser -h localhost  -i -U postgres asv