====== 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