Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
alle:technik:backup:cmd [15.11.2018 10:04] – [Backup und Restore an der Kommandozeile (Windows) bzw. der Shell (Linux)] florian.langenecker | alle:technik:backup:cmd [04.11.2021 13:54] (aktuell) – [Backup der Datenbank] mauker |
---|
<wrap tip>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.</wrap> | <wrap tip>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.</wrap> |
==== Backup der Datenbank ==== | ==== Backup der Datenbank ==== |
c:\Programme\PostgreSQL\9.2\bin\pg_dump.exe -U asv -Fc -f 2013-07-15_asv.backup asv | c:\Programme\PostgreSQL\10\bin\pg_dump.exe -U asv -Fc --schema=asv --blobs -f 2021-07-15_asv.backup asv |
Erläuterung: | Erläuterung: |
* ''pg_dump.exe'' ist das von postgreSQL mitgebrachte Tool zum Sichern von Datenbanken | * ''pg_dump.exe'' ist das von postgreSQL mitgebrachte Tool zum Sichern von Datenbanken |
* ''-U asv'': Aktion als Datenbankbenutzer //asv// durchführen | * ''-U asv'': Aktion als Datenbankbenutzer //asv// durchführen |
* ''-Fc'': Komprimiertes Format für die Datensicherung auswählen (c = compressed) | * ''-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) | * ''-f <Dateiname>'' Ausgabe in Datei (f = file) |
* ''asv'' Datenbank, die gesichert wird | * ''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. | 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: | Die Datei pgpass.conf hat den folgenden Inhalt: |
pg_dump wertet diese Datei automatisch aus und übernimmt das Passwort. | pg_dump wertet diese Datei automatisch aus und übernimmt das Passwort. |
| |
(Siehe auch: http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html) | (Siehe auch: http://www.postgresql.org/docs/10/static/libpq-pgpass.html) |
==== Restore der Datenbank ==== | ==== Restore der Datenbank ==== |
c:\Programme\PostgreSQL\9.2\bin\pg_restore.exe -d asv -U asv -c 2013-07-15_asv.backup | 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: | Erläuterung: |
* ''pg_restore.exe'' ist das von postgreSQL mitgebrachte Tool zum Wiederherstellen von Datenbanken | * ''pg_restore.exe'' ist das von postgreSQL mitgebrachte Tool zum Wiederherstellen von Datenbanken |
* ''-d asv'': Wiederherstellung in die Datenbank asv (d = database) | * ''-d asv'': Wiederherstellung in die Datenbank asv (d = database) |
* ''-U asv'': Aktion als Datenbankbenutzer //asv// durchführen | * ''-U asv'': Aktion als Datenbankbenutzer //asv// durchführen |
* ''-c '': Datenbankobjekte vor dem Wiederherstellen löschen | * ''--schema=asv'': Nur die Objekte und Daten im Schema ''asv'' innerhalb der Datenbank ''asv'' wiederherstellen |
* ''<dateiname>'': aus dieser Datei wiederherstellen | * ''<dateiname>'': aus dieser Datei wiederherstellen |
| |
==== Löschen der Datenbank ==== | ==== Löschen der Datenbank ==== |
<wrap important> **Vorsicht!** Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. **Haben Sie ein Backup gemacht?**</wrap> | <wrap important> **Vorsicht!** Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. **Haben Sie ein Backup gemacht?**</wrap> |
c:\Programme\PostgreSQL\9.2\bin\dropdb.exe -U postgres asv | c:\Programme\PostgreSQL\10\bin\dropdb.exe -U postgres asv |
| |
==== Löschen des Datenbankbenutzers ==== | ==== Löschen des Datenbankbenutzers ==== |
<wrap important> **Vorsicht! Der folgende Befehl löscht Ihre ASV-Benutzer. dies sollten Sie nur machen, wenn Sie vorhaben, eine Komplettinstallation der ASV durchzuführen!**</wrap> | <wrap important> **Vorsicht! Der folgende Befehl löscht Ihren ASV-Datenbank-Benutzer. Dies sollten Sie nur machen, wenn Sie vorhaben, eine Neuinstallation der ASV durchzuführen!**</wrap> |
c:\Programme\PostgreSQL\9.2\bin\dropuser.exe -i -U postgres asv | 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. | Zur Syntax der verwendeten Befehle rufen Sie ''pg_dump %%--%%help'' bzw. ''pg_restore %%--%%help'' oder die zugehörigen man-pages auf. |
==== Backup der Datenbank ==== | ==== Backup der Datenbank ==== |
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) | 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 |
| |
Unkomprimierten Dump der Datenbank erzeugen (als root):\\ | 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. |
''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 der Datenbank ==== | ==== Restore der Datenbank ==== |
Restore aus einem komprimierten Backup:\\ ''pg_restore -h localhost -d asv -U asv -c <backup-name>.backup'' | 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: | Restore aus einem unkomprimierten Dump: |
- Folgende Befehle als user postgres ausführen: ''root@asv-server:/tmp# su postgres'' | psql -c 'DROP SCHEMA asv CASCADE;' -c 'CREATE SCHEMA asv AUTHORIZATION asv;' asv asv |
- Gegebenenfalls vorhandenden Datenbank löschen: ''postgres@asv-server:/tmp$ dropdb asv'' | psql -f <postgres_dump>.sql asv |
- Leere Datenbank mit Datenbankbenutzer asv neu anlegen: ''postgres@asv-server:/tmp$ createdb -h localhost -U asv -O asv asv'' | |
- Datenbank aus Dump füllen: ''postgres@asv-server:/tmp$ psql -d asv -f <postgres_dump>.sql'' | |
- Wieder root werden: ''postgres@asv-server:/tmp$ exit'' | |
| |
| |
==== Löschen der Datenbank ==== | ==== Löschen der Datenbank ==== |
<wrap important> **Vorsicht!** Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. **Haben Sie ein Backup gemacht?**</wrap> | <wrap important> **Vorsicht!** Der folgende Befehl löscht Ihre ASV-Datenbank. Damit sind Ihre Daten unwiederbringlich verloren. **Haben Sie ein Backup gemacht?**</wrap> |
dropdb -h localhost -U asv asv | dropdb -h localhost -U asv asv |
| |
==== Löschen des Datenbankbenutzers ==== | ==== Löschen des Datenbankbenutzers ==== |
<wrap important> **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!**</wrap> | <wrap important> **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!**</wrap> |
dropuser -h localhost -i -U postgres asv | dropuser -h localhost -i -U postgres asv |