Projekt

Allgemein

Profil

Aktionen

110 Umzug einer Datenbank (pg dump backup) Schulungs Test System » Historie » Revision 74

« Zurück | Revision 74/93 (diff) | Weiter »
[X] Daniel S, 27.09.2021 09:16


Programme (pg_dump, pg_dumpall, createdb, psql) erreichbar unter ..\PostgreSQL\pg9.6\pg96\bin

0. implicit-casts in template 1

  • um zu vermeiden bei jeder größeren Aktion die implicit casts einspielen zu müssen, diese in template1 einspielen. Somit sind diese automatisch in jeder neuen Datenbank vorhanden.

1. Umzug einer Datenbank (pg_dump)

Backup

1. Dump erstellen

  • pg_dump -h localhost -p 5432 -U postgres -d DATABASE -O -f dump_DB.sql --disable-triggers
  • Hinweis: Bei Anpassungen unten das Batch-File-Bsp anpassen!
  • Minimal für Spezialfälle (Keywords fehlen, Suche geht nicht usw): pg_dump -h localhost -p 5432 -U postgres -d DATABASE -O -f dump_DB.sql --disable-triggers --exclude-table-data=tlog.auditlog --exclude-table-data=public.lagerlog --exclude-table-data=public.stvtrs --exclude-table-data=public.opreg --exclude-table-data='tcache.tformass*' --exclude-table-data=public.recnokeyword
  • Erläuterungen

2. search-path in Dump-Datei korrigieren, siehe #9521:

3. ggf. Rollen exportieren (wenn Wiederherstellung auf anderem DB-Cluster erfolgt)

  • pg_dumpall -h localhost -p 5432 -U postgres -r -f dump_roles.sql

Wiederherstellung

1. Datenbank erzeugen

  • createdb -h localhost -p 5432 -U postgres NEUE-DB

2. implicit casts erzeugen

  • implicit-casts werden nicht mit importiert: ..\PSQL\0050 System\0 0 pg83-implicit-casts.sql muss davor oder danach auf der DB ausgeführt werden.

3. ggf. Rollen importieren (wenn Wiederherstellung auf anderem DB-Cluster erfolgt)

  • psql -h localhost -p 5432 -U postgres -f dump_roles.sql -q

4. Datenbank wiederherstellen

  • psql -h localhost -p 5432 -U postgres -d NEUE-DB -f dump_DB.sql -q -o db_reload_msglog.txt 2> db_reload_errorlog.txt
  • Erläuterungen

2. Kopie innerhalb des Clusters

1. Verbindungen abwürgen
  • SQL
2. direkte Kopie erstellen
  • CREATE DATABASE "SOURCE_DB_YYYYMMDD" WITH TEMPLATE "SOURCE_DB";

3. Prodat-Dienst neu starten.


3. Umzug des kompletten Clusters (pg_dumpall)

Backup

  • Alle Rollen werden geschrieben
  • Alle Datenbanken werden mit CREATE und CONNECT ins Skript geschrieben.

Kompletten Dump erstellen, wenn implicit casts in template1 (siehe Punkt0)

pg_dumpall -h localhost -p 5432 -U postgres -O -f E:\ProdatERP\BackUp\pgdump\dumpall.sql --disable-triggers

Dumps erstellen mittels Schema und Daten getrennt für Einspielen von implicit casts

Schema: pg_dumpall -h localhost -p 5432 -U postgres -O -s -f E:\ProdatERP\BackUp\pgdump\dumpall_schema.sql --disable-triggers
Daten : pg_dumpall -h localhost -p 5432 -U postgres -O -a -f E:\ProdatERP\BackUp\pgdump\dumpall_daten.sql --disable-triggers

  • Schema und Daten getrennt, damit implicit-casts eingespielt werden können.

2. search-path in Dump-Datei korrigieren, siehe #9521:

  • https://sourceforge.net/projects/fart-it/
  • fart.exe -c dumpall_schema.sql "SELECT pg_catalog.set_config('search_path', '', false);" "SELECT pg_catalog.set_config('search_path', 'public, TSystem, prodat_languages, z_99_deprecated', false);"
  • fart.exe -c dumpall_daten.sql "SELECT pg_catalog.set_config('search_path', '', false);" "SELECT pg_catalog.set_config('search_path', 'public, TSystem, prodat_languages, z_99_deprecated', false);"

Wiederherstellen

  • Alle Rollen werden erzeugt
  • Alle Datenbanken werden erzeugt

Wiederherstellen vollständiger Dump (vorher war implicit cast in template1)

  • psql -h localhost -p 5432 -U postgres -f E:\ProdatERP\BackUp\pgdump\dumpall.sql -q -o E:\ProdatERP\BackUp\pgdump\msglog.txt 2> E:\ProdatERP\BackUp\pgdump\errorlog.txt

Wiederherstellen in Einzelschritten

1. Strukturen anlegen:

  • psql -h localhost -p 5432 -U postgres -f E:\ProdatERP\BackUp\pgdump\dumpall_schema.sql -q -o E:\ProdatERP\BackUp\pgdump\msglog_schema.txt 2> E:\ProdatERP\BackUp\pgdump\errorlog_schema.txt

2. implicit-casts erzeugen:

  • implicit-casts werden nicht mit importiert: ..\PSQL\0050 System\0 0 pg83-implicit-casts.sql muss davor oder danach auf allen DBs ausgeführt werden.

3. Daten wiederherstellen:

  • psql -h localhost -p 5432 -U postgres -f E:\ProdatERP\BackUp\pgdump\dumpall_daten.sql -q -o E:\ProdatERP\BackUp\pgdump\msglog_daten.txt 2> E:\ProdatERP\BackUp\pgdump\errorlog_daten.txt

4. Batch-File-Bsp: Dump und Kopie wieder einspielen. TestSystem im laufenden Betrieb.

Hier müssen nur noch die Pfade und die Namen der Datenbanken eingetragen werden.

Von [X] Daniel S vor mehr als 2 Jahren aktualisiert · 74 Revisionen