Upload
lyhuong
View
217
Download
0
Embed Size (px)
Citation preview
PostgreSQL Sicherung im Batch
Kontaktdaten SCS:
Telefon: 0711 89246-0
E-Mail: [email protected]
Weitere Informationsquellen:
Im Intranet: http://kvintra.kultus.bwl.de/wdb
Im Internet: www.scs.kultus-bw.de
PostgreSQL Sicherung im Batch
Stand: 15.09.2016 Seite 2 von 6
Die Datenbank PostgreSQL bietet mit dem graphischen Administrationswerkzeug pgadmin die Möglichkeit, im Dialog Backups von Datenbanken zu erstellen und auch wiederherzustellen. Ohne das pgadmin-Tool stehen die Programme pg_dump und pg_restore zur Verfügung, die Backuperstellung und Wiederherstellung von der Kommasndozeile ermöglichen. Die beiden Batch-Prozeduren BackupASV.bat und RestoreASV.bat unterstützen die konsistente Sicherung und Wiederherstellung der Postgres Datenbanken, die von ASV (Bewerbermodul) bzw. SVPBW erstellt und genutzt werden.
BackupPostgresBatch.doc (dieses Dokument)
BackupASV.bat
RestoreASV.bat
Die Postgres-Datenbank muss installiert sein, der Programmpfad, in dem sich die Programme pg_dump.exe und pg_restore.exe befinden, muss bekannt sein. Ebenso müssen die Datenbankparameter und ein mit den entsprechenden Rechten ausgestatteter Postgres-Benutzer und Kennwort vorhanden sein.
Öffnen Sie die Datei backupASV.bat in einem Texteditor und passen Sie die Variablen ihrem Umfeld an. Tun Sie dasselbe mit der Datei restoreASV.bat.
Starten Sie die Kommandozeile mit [Ausführen] cmd [Enter]
Starten Sie die Prozedur von der Kommandozeile aus.
Bei fehlerhaften Angaben in der Prozedur bricht diese mit einer Fehlermeldung ab. Korrigieren Sie in diesem Fall die entsprechenden Parameter und starten dann die Prozedur erneut.
Im folgenden sehen Sie die Prozeduren. Die von Ihnen anzupassenden Einträge sind gelb markiert, andere Einträge müssen Sie i. a. nicht anpassen. Bitte beachten: Die Fehlermeldungen beim Ausführen der Restore-Prozedur, die aus dem Versuch stammen, nicht vorhandene Tabellen zu löschen, werden bewusst in Kauf genommen.
Postgres Datenbanksicherung und Wiederherstellung
Inhalt des Pakets
Voraussetzungen/Bedingungen
Vorbereitung
Vorbereitung
PostgreSQL Sicherung im Batch
Stand: 15.09.2016 Seite 3 von 6
rem **************************************************************
rem ** **
rem ** B A C K U P A S V . B A T **
rem ** **
rem ** Script zum Erzeugen eines Backups **
rem ** von ASV bzw. SVP im Batch **
rem ** Die Parametervariablen muessen an die eigenen **
rem ** Beduerfnisse angepasst werden. **
rem ** **
rem ** Kommentare werden durch rem eingeleitet **
rem ** Die Ruecksicherung in eine beliebige Postgres-Datenbank **
rem ** wird mit der Prozedur RestoreASV.bat durchgefuehrt **
rem ** **
rem **************************************************************
echo OFF
rem **----------------------------------------------------------**
rem ** Pfad zu den pgadmin-Tools (normalerweise bin-Verzeichnis **
rem ** der Datenbank, abhaengig von Betriebssystemversion) **
rem **----------------------------------------------------------**
set DIR_CMD="C:\Programme\PostgreSQL\9.5\bin"
rem **----------------------------------------------------------**
rem ** S E R V E R (symbolischer Name oder IP-Adresse) **
rem **----------------------------------------------------------**
set PGHOST=localhost
rem **----------------------------------------------------------**
rem ** D A T E N B A N K A N G A B E N **
rem ** Die Quelldatenbank, in der sich die ASV-Tabellen **
rem ** befinden **
rem **----------------------------------------------------------**
rem ** PGDATABASE: z.B. svpbw10db, asv, beliebige andere... **
rem **----------------------------------------------------------**
set PGDATABASE=asv
rem **----------------------------------------------------------**
rem ** PGUSER: Inhaber des Datenbankservices (postgres) **
rem ** oder der Datenbankinhaber (z. B. ms4 oder asv) **
rem ** PGPASSWORT das zugehoerige Passwort (SdW..., asv, ...) **
rem **----------------------------------------------------------**
set PGUSER=postgres
set PGPASSWORD=SdW?vRZit1aB
set PGPORT=5432
rem **----------------------------------------------------------**
rem ** B A C K U P - F I L E und Pfad **
rem **----------------------------------------------------------**
set DST_PATH=C:\Temp\Backup
set DST_FILE=ASV_JHJJMMTT.backup
rem **----------------------------------------------------------**
rem ** Programmnamen der D A T E N B A N K T O O L S **
rem **----------------------------------------------------------**
set CMD_DUMP=%DIR_CMD%\pg_dump.exe
set CMD_REST=%DIR_CMD%\pg_restore.exe
set CMD_DUMP_ALL=%DIR_CMD%\pg_dumpall.exe
rem **----------------------------------------------------------**
rem ** Ab hier muss im allgemeinen keine Anpassung mehr **
rem ** vorgenommen, die Variablen sind alle gefuellt **
Backup Prozedur
PostgreSQL Sicherung im Batch
Stand: 15.09.2016 Seite 4 von 6
rem **----------------------------------------------------------**
IF NOT exist %CMD_DUMP% (
echo *************************************************************
echo ** F E H L E R!!! **
echo *************************************************************
echo Sicherungsprogramm nicht gefunden
echo %CMD_DUMP% existiert nicht
GOTO ENDE
)
rem **----------------------------------------------------------**
rem ** Ausfuehren des Backups **
rem **----------------------------------------------------------**
IF exist %DST_PATH% (
%CMD_DUMP% -i -h %PGHOST% -p %PGPORT% -U %PGUSER% -F c -b -v -f
%DST_PATH%\%DST_FILE% %PGDATABASE%
) ELSE (
echo *************************************************************
echo ** F E H L E R!!! **
echo *************************************************************
echo %DST_PATH% existiert nicht
echo Abbruch Backup
GOTO ENDE
)
rem **----------------------------------------------------------**
echo ** P R O T O K O L L **
rem **----------------------------------------------------------**
echo.Database: %PGDATABASE%
echo Servername: %PGHOST%
echo.Backup read: %DST_FILE%
echo Backup Directory: %DST_PATH%
echo **************************************************************
:ENDE
echo Backup-Prozedur endet
echo **************************************************************
PostgreSQL Sicherung im Batch
Stand: 15.09.2016 Seite 5 von 6
echo OFF
rem **************************************************************
rem ** **
rem ** **
rem ** R E S T O R E A S V . B A T Version 2.0 **
rem ** **
rem ** Script zum Einlesen eines Backups **
rem ** nach ASV bzw. SVP im Batch **
rem ** **
rem ** Die Parametervariablen muessen an die eigenen **
rem ** Bedürfnisse angepasst werden. **
rem ** **
rem ** Neu in Version 2.0: Die Schemata asv und public werden **
rem ** vor dem Restore geloescht. **
rem ** **
rem ** H I N W E I S : rem am Zeilenanfang macht die Zeile **
rem ** zum Kommentar! **
rem **************************************************************
rem **----------------------------------------------------------**
rem ** Pfad zu den pgadmin-Tools (normalerweise bin-Verzeichnis **
rem ** der Datenbank, abhaengig von Betriebssystemversion) **
rem **----------------------------------------------------------**
set DIR_CMD="C:\Programme\PostgreSQL\9.5\bin"
rem **----------------------------------------------------------**
rem ** S E R V E R (symbolischer Name oder IP-Adresse) **
rem **----------------------------------------------------------**
set PGHOST=localhost
rem **----------------------------------------------------------**
rem ** D A T E N B A N K A N G A B E N **
rem ** Die Zieldatenbank kann durchaus einen anderen Namen als **
rem ** die Ursprungsdatenbank haben **
rem **----------------------------------------------------------**
rem ** PGDATABASE: z. B. svpbw10db, asv, andere... **
set PGDATABASE=asv
rem ** PGUSER: Inhaber des Datenbankservices (postgres) **
rem ** oder der Datenbankinhaber (z. B. ms4 oder asv) **
rem ** PGPASSWORT das zugehoerige Passwort (SdW..., asv ...) **
set PGUSER=postgres
set PGPASSWORD=SdW?vRZit1aB
set PGPORT=5432
rem **----------------------------------------------------------**
rem ** B A C K U P - F I L E und Pfad **
rem **----------------------------------------------------------**
set DST_PATH=C:\Temp\Backup
set DST_FILE= ASV_JHJJMMTT.backup
rem **----------------------------------------------------------**
rem ** Programmnamen der D A T E N B A N K T O O L S **
rem **----------------------------------------------------------**
set CMD_DUMP=%DIR_CMD%\pg_dump.exe
set CMD_REST=%DIR_CMD%\pg_restore.exe
set CMD_SQL=%DIR_CMD%\psql.exe
set CMD_DUMP_ALL=%DIR_CMD%\pg_dumpall.exe
rem **************************************************************
Restore Prozedur
PostgreSQL Sicherung im Batch
Stand: 15.09.2016 Seite 6 von 6
rem ** Ab hier muss im allgemeinen keine Anpassung mehr **
rem ** vorgenommen, die Variablen sind alle gefuellt **
rem **************************************************************
IF NOT exist %CMD_SQL% (
echo **************************************************************
echo ** F E H L E R!!! **
echo **************************************************************
echo PSQL nicht gefunden
echo %CMD_SQL% existiert nicht
GOTO ENDE
)
IF NOT exist %CMD_REST% (
echo **************************************************************
echo ** F E H L E R!!! **
echo **************************************************************
echo Sicherungsprogramm nicht gefunden
echo %CMD_REST% existiert nicht
GOTO ENDE
)
rem **------------------------------------------------------------**
rem ** **
rem ** pg_restore --clean funktioniert wegen der Abhängigkeiten **
rem ** nicht. Zunächst die Schemata asv und public löschen **
rem ** **
rem ** Ausfuehren des Restore **
rem ** H I N W E I S : Beim Restore muss der --clean Parameter **
rem ** gesetzt werden. Andernfalls kann das **
rem ** Schema public nicht erzeugt werden **
rem ** Die daraus resultierenden Fehlermeldungen **
rem ** beim Loeschversuch der Tabellen muessen **
rem ** dafuer in Kauf genommen werden **
rem **------------------------------------------------------------**
IF exist %DST_PATH%\%DST_FILE% (
%CMD_SQL% -c "DROP SCHEMA IF EXISTS asv, public CASCADE;" --host %PGHOST% --
port %PGPORT% --username %PGUSER% %PGDATABASE%
%CMD_REST% --clean --verbose --host=%PGHOST% --port=%PGPORT% --
username=%PGUSER% --dbname=%PGDATABASE% %DST_PATH%\%DST_FILE%
) ELSE (
echo **************************************************************
echo ** F E H L E R!!! **
echo **************************************************************
echo %DST_PATH%\%DST_FILE% existiert nicht
echo Abbruch Restore
GOTO ENDE
)
echo **************************************************************
echo ** P R O T O K O L L **
echo **************************************************************
echo.Database: %PGDATABASE%
echo Servername: %PGHOST%
echo.Backup read: %DST_FILE%
echo Backup Directory: %DST_PATH%
echo **************************************************************
:ENDE
echo Restoreprozedur endet
echo **************************************************************