====== 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 [[alle:technik:backup:batch|hier vorgestellte Batch-Skript]] für Windows und auch [[alle:technik:backup:pgadmin|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:
* ''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 '' 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)
==== 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:
* ''psql.exe'' ist das von postgreSQL mitgebrachte Tool zum Ausführen von SQL-Befehlen in einer Datenbank
* ''-c ...'': SQL-Befehl, der ausgeführt werden soll
* ''asv'': Datenbank, in der der Befehl ausgeführt werden soll
* ''asv'': Datenbankbenutzer, mit dem der Befehl ausgeführt werden soll
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:
* ''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
* '''': aus dieser Datei wiederherstellen
==== 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 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 .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
Restore aus einem unkomprimierten Dump:
psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv
psql -f .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