6
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 - asv.kultus-bw.de · PDF filePostgreSQL Sicherung im Batch Kontaktdaten SCS: Telefon: 0711 89246-0 E-Mail: [email protected] Weitere ... \Programme\PostgreSQL\9.5\bin"

  • 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 **************************************************************