Schulverwaltung Baden-Württemberg Betreuung und Unterstützung PostgreSQL Sicherung im Batch Unterrichtsorganisation Kapitel xx Schulverwaltung Baden-Württemberg Postgres Datenbanksicherung und Wiederherstellung 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. Inhalt des Pakets • • • BackupPostgresBatch.doc (dieses Dokument) BackupASV.bat RestoreASV.bat Voraussetzungen/Bedingungen 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. Vorbereitung • • • • Ö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. Vorbereitung 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. Stand: 2011-06-30 Seite 2 von 6 Unterrichtsorganisation Kapitel xx Schulverwaltung Baden-Württemberg Backup Prozedur 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\8.4\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=asv2 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=D:\Backup set DST_FILE=bewerber_20120220_BatchAsv2.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 ** rem **----------------------------------------------------------** Stand: 2011-06-30 Seite 3 von 6 Unterrichtsorganisation Kapitel xx Schulverwaltung Baden-Württemberg 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 ************************************************************** Stand: 2011-06-30 Seite 4 von 6 Unterrichtsorganisation Kapitel xx Schulverwaltung Baden-Württemberg Restore Prozedur 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\8.4\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=asv2 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=D:\Backup set DST_FILE=bewerber20120220.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 ************************************************************** rem ** Ab hier muss im allgemeinen keine Anpassung mehr ** Stand: 2011-06-30 Seite 5 von 6 Unterrichtsorganisation Kapitel xx Schulverwaltung Baden-Württemberg 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 ************************************************************** Stand: 2011-06-30 Seite 6 von 6