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.
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\10\bin\pg_dump.exe -U asv -Fc --schema=asv --blobs -f 2021-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)–schema=asv
: Nur die Datenbankobjekte im Schema asv
werden gesichert.–blobs
: Die BLOBs sind nicht im Schema asv
und müssen deshalb extra inkludiert werden.-f <Dateiname>
Ausgabe in Datei (f = file)asv
Datenbank, die gesichert wird
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)
c:\Programme\PostgreSQL\10\bin\psql.exe -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
Erläuterung:
psql.exe
ist das von postgreSQL mitgebrachte Tool zum Ausführen von SQL-Befehlen in einer Datenbank-c …
: SQL-Befehl, der ausgeführt werden sollasv
: Datenbank, in der der Befehl ausgeführt werden sollasv
: Datenbankbenutzer, mit dem der Befehl ausgeführt werden sollDamit 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:
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–schema=asv
: Nur die Objekte und Daten im Schema asv
innerhalb der Datenbank asv
wiederherstellen<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\10\bin\dropdb.exe -U postgres asv
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
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:
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 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
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 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