Aktionen
Programme (pg_dump, pg_dumpall, createdb, psql) erreichbar unter ..\PostgreSQL\pg9.6\pg96\bin
- Inhaltsverzeichnis
- 1. Umzug einer Datenbank (pg_dump)
- 2. Kopie innerhalb des Clusters
- 3. Umzug des kompletten Clusters (pg_dumpall)
PUNKT 3 IST STANDARD FÜR UPDATE POSTGRESQL
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);" "ALTER DATABASE ""<database name>"" SET search_path TO '$user', public, tsystem, prodat_languages, z_99_deprecated;"- 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.sqlmuss 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)¶
Für den Umzug eines kompletten Clusters kann die Datei Administration\DB_Admin_BackUp_TestDB\ *DB_Move_DB_Cluster__too.bat verwendet werden. Diese fasst alle Einzelschritte zusammen. Nur die Connectdaten in dem Batch ändern (IP-Adresse, ggf. Port). Es ist dabei zu beachten:
- Die pg_hba.conf sowohl im Source-als auch im Target-System müssen entsprechend aufgesetzt sein, insbesondere muss der User postgres auf trust gesetzt sein - sowohl für Verbindungen innerhalb des neuen Systems, als auch für Verbindungen aus dem neuen ins alte System.
- Der Befehl psql -h host postgres postgres muss ohne Passwort funktionieren für host=localhost sowie host=ip_des_alten_servers.
- Auf dem Altsystem ist zu prüfen, dass nicht zu viele Backups/Sicherungen existieren - da jede einzelne Sicherung auf das neue System mitübertragen wird (alle Datenbanken des Clusters) und im neuen System nochmal angefasst werden muss.
- Implicit Casts müssen nach der Migration noch per Hand eingespielt werden.
Neben allen Datenbanken legt das Skript auch alle User und Rollen korrekt an, und kümmert sich um alle weiteren Nebenschritte, außer die oben erwähnten.
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 --cleanDaten : 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.sqlmuss 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 [X] Christoph Wellm vor 10 Tagen aktualisiert · 99 Revisionen