Aktionen
Programme (pg_dump, pg_dumpall, createdb, psql
) erreichbar unter ..\PostgreSQL\pg9.6\pg96\bin
- Inhaltsverzeichnis
- 0. implicit-casts in template 1
- 1. Umzug einer Datenbank (pg_dump)
- 2. Kopie innerhalb des Clusters
- 3. Umzug des kompletten Clusters (pg_dumpall)
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*'
- Erläuterungen
- 2. search-path in Dump-Datei korrigieren, siehe #9521:
- https://sourceforge.net/projects/fart-it/
fart.exe -c dump_DB.sql "SELECT pg_catalog.set_config('search_path', '', false);" "SELECT pg_catalog.set_config('search_path', 'public, TSystem, prodat_languages, z_99_deprecated', false);"
- Potentielle Alternative - Powershell Script
- 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 davoroder danachauf 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¶
- Beachte Script zum Erstellen einer TestDatenbank unter Prodat\Administration! Das Vorgehen hier ist nur noch in ausnahmefällen durchzuführen, da es auch erfordert alle Nutzer rauszuwerfen!
- Verbindungen abwürgen und CREATE WITH TEMPLATE
- Hinweis: Besser unten das Batch-Bsp für dump und Kopie, damit werden keine aktiven Nutzer gekickt.
- Beachte Abschalten EDI usw. in TestDatenbanken: https://redmine.prodat-sql.de/projects/prodat-v-x/wiki/600_Prodat_TEST-Datenbanken
- 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)¶
Administration\DB_Admin_BackUp_TestDB\ DB_Move_DB_Cluster__too.bat Verwenden! > fasst alle Einzelschritte hier zusammen. Nur die Connectdaten in dem Batch ändern!
Backup¶
- Alle Rollen werden geschrieben
- Alle Datenbanken werden mit CREATE und CONNECT ins Skript geschrieben.
Hinweis: auch noch mit PG13 notwendig¶
- einzelschritte zu gehen da sonst immer (alle Kombinationen probiert) die implicit casts knallen. Auch ein ändern der template 1 nutzt nichts, da folgendes dennoch immer fehlt und somit doppelte casts vorliegen.
DELETE FROM pg_operator WHERE oprcode = 'anytextcat'::regproc; DELETE FROM pg_operator WHERE oprcode = 'textanycat'::regproc;
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\PostgreSQL\pgdump\dumpall_schema.sql --disable-triggers --clean
Daten : pg_dumpall -h localhost -p 5432 -U postgres -O -a -f E:\ProdatERP\BackUp\PostgreSQL\pgdump\dumpall_daten.sql --disable-triggers
- Schema und Daten getrennt, damit implicit-casts eingespielt werden können.
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 in Einzelschritten¶
- 1. Strukturen anlegen:
psql -h localhost -p 5432 -U postgres -f E:\ProdatERP\BackUp\PostgreSQL\pgdump\dumpall_schema.sql -q -o E:\ProdatERP\BackUp\PostgreSQL\pgdump\msglog_schema.txt 2> E:\ProdatERP\BackUp\PostgreSQL\pgdump\errorlog_schema.txt
- 2. implicit-casts erzeugen:
- implicit-casts werden nicht mit importiert:
..\PSQL\0050 System\0 0 pg83-implicit-casts.sql
muss davoroder danachauf allen DBs ausgeführt werden.
- 3. Daten wiederherstellen:
psql -h localhost -p 5432 -U postgres -f E:\ProdatERP\BackUp\PostgreSQL\PostgreSQL\pgdump\dumpall_daten.sql -q -o E:\ProdatERP\BackUp\PostgreSQL\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.¶
- Beachte Abschalten EDI usw. in TestDatenbanken: https://redmine.prodat-sql.de/projects/prodat-v-x/wiki/600_Prodat_TEST-Datenbanken
Von [E] Axel S vor mehr als 2 Jahren aktualisiert · 93 Revisionen