Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @echo off
- setlocal
- REM Passen Sie diese Daten an Ihr System an.
- set solutio_path=C:\Solutio
- set pg13_path=%solutio_path%\Server\PostgreSQL13
- set pg13_bin_path=%pg13_path%\bin
- set db_dump_dir=%solutio_path%
- set pg16_path=%solutio_path%\Server\PostgreSQL16
- set pg16_superuser_password=#post.2000!
- set pg_port=5432
- REM Alles Weitere muss normalerweise nicht, kann aber angepasst werden. Der Download-Link beschreibt die File-ID des neuesten
- REM Postgres-Installers aus dem 16er-Zweig. Er wandelt sich zur exe-Datei im installer_path.
- set db_dump_path=%db_dump_dir%\dump13.sql
- set "pg13_data_path=%solutio_path%\Server\PostgreSQL13\data"
- set download_url=https://sbp.enterprisedb.com/getfile.jsp?fileid=1258698
- set installer_path=%solutio_path%\newest-postgresql-hopefully-windows-x64.exe
- REM Nicht veraendern!
- set pg_service_name=Solutio_PostgreSQL16
- set old_pg_version=13
- set acd_path=%solutio_path%\Server\ncjs
- set start_step=%~2
- if "%~1"=="-s" (
- if "%~2"=="" (
- echo Es wurde kein Schritt angegeben.
- exit /b 1
- )
- )
- if "%start_step%"=="2" goto step2
- if "%start_step%"=="3" goto step3
- if "%start_step%"=="4" goto step4
- if "%start_step%"=="5" goto step5
- if "%start_step%"=="6" goto step6
- if "%start_step%"=="7" goto step7
- echo Dieses Skript sollte nur verwendet werden, wenn in Ihrer Datenbank AUSSCHLIESSLICH Solutio Datenbanken existieren und nie etwas an der Installation geaendert wurde.
- echo Falls dies nicht der Fall ist, oder Sie sich nicht sicher sind, verwenden Sie bitte migrate_solutio.bat
- echo ""
- echo Folgende Werte werden verwendet. Bitte pruefen Sie, ob diese zu Ihrem System passen:
- echo solutio_path=%solutio_path%
- echo pg13_path=%pg13_path%
- echo db_dump_dir=%db_dump_dir%
- echo pg16_path=%pg16_path%
- echo pg_port=%pg_port%
- echo Haben Sie alle Werte ueberprueft? Soll die Migration zu Postgres 16 durchgefuehrt werden?
- choice /c JN
- if errorlevel 2 (
- echo Die Migration wird nicht gestartet. Bitte passen Sie die Werte direkt Im oberen Teil des Skriptes an.
- exit /b 1
- )
- set "size=0"
- for /R "%pg13_path%\data\base" %%F in (*) do (
- set /A "size+=%%~zF"
- )
- set /A "folder_size_mb=(size / 1024 / 1024) + 200"
- echo Benoetigter Speicherplatz in %db_dump_dir%: %folder_size_mb% MB
- echo Benoetigter Speicherplatz in %pg16_path%: %folder_size_mb% MB
- echo Haben Sie ueberprueft, ob in den Pfaden jeweils ausreichend Specicherplatz vorhanden ist?
- choice /c JN
- if errorlevel 2 (
- echo Die Migration wird nicht gestartet.
- exit /b 1
- )
- call :get_pg_version %pg13_bin_path%
- if %old_pg_version% gtr 14 (
- echo Sie versuchen, von PosgreSQL Version %old_pg_version% zu migrieren. Dies ist nicht moeglich. Haben Sie die Migration schon einmal ausgefuehrt?
- exit /b 1
- )
- echo Alle Services stoppen
- call %acd_path%\acd.bat stopall
- :step1
- echo.### Step 1: Erzeugen der Datenbank Sicherung aus PostgreSQL 13 (dies wird eine Weile dauern...)
- call "%pg13_path%\bin\pg_dumpall.exe" -U postgres -p %pg_port% -f "%db_dump_path%"
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Erstellen der Datenbank Sicherung mit PostgreSQL 13.
- exit /b 1
- )
- :step2
- echo.### Step 2: Alten PostgreSQL Service stoppen
- call "%pg13_path%\bin\pg_ctl.exe" stop -D "%pg13_path%\data" -m fast
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Stoppen des PostgreSQL 13 Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 2 aus
- exit /b 1
- )
- sc config Solutio_PostgreSQL start=demand
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Deaktivieren des PostgreSQL 9 Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 2 aus
- exit /b 1
- )
- :step3
- echo.### Step 3: PostgreSQL 16 herunterladen
- @echo on
- call powershell Start-BitsTransfer -Source %download_url% %installer_path%
- @echo off
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Herunterladen des PostgreSQL 16 Installers. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 3 aus
- exit /b 1
- )
- :step4
- echo.### Step 4: PostgreSQL 16 installieren
- @echo on
- call "%installer_path%" --superaccount postgres16 --superpassword %pg16_superuser_password% --prefix "%pg16_path%" --datadir "%pg16_path%\data" --servicename %pg_service_name% --enable_acledit 1 --disable-components pgAdmin,stackbuilder --mode unattended --unattendedmodeui minimalWithDialogs
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Installieren von PostgreSQL 16. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 4 aus
- exit /b 1
- )
- @echo off
- call "%pg16_path%\bin\pg_ctl.exe" stop -D "%pg16_path%\data" -m f
- call copy /y "%pg13_path%\data\pg_hba.conf" "%pg16_path%\data\pg_hba.conf"
- :step5
- echo.### Step 5: PostgreSQL 16 starten
- call net start %pg_service_name%
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Starten von PostgreSQL 16. Bitte pruefen Sie die Datei pg_hba.conf. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 5 aus
- call notepad.exe "%pg16_path%\data\pg_hba.conf"
- exit /b 1
- )
- :step6
- echo.### Step 6: Einspielen der Datenbank Sicherung in PostgreSQL 16 (dies wird eine Weile dauern...)
- call "%pg16_path%\bin\psql.exe" -U postgres16 -d postgres -p %pg_port% -f "%db_dump_path%" -c "SELECT '%pg16_superuser_password%';" >NUL
- if %ERRORLEVEL% NEQ 0 (
- echo Fehler beim Einspielen der Daten in die PostgreSQL 16 Datenbanken. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 6 aus
- exit /b 1
- )
- :step7
- echo.### Step 7: Konfiguration der Solutio services
- @echo off
- set KEY_NAME=HKLM\Software\Solutio\Charly\PostgreSQL
- set KEY_NAME_WOW=HKLM\Software\Wow6432Node\Solutio\Charly\PostgreSQL
- set VALUE_NAME=Path
- set VALUE_VERSION=Version
- set NEW_NAME=%pg16_path%
- set NEW_VERSION=16.0
- call reg.exe add "%KEY_NAME%" /v "%VALUE_NAME%" /t REG_SZ /d "%NEW_NAME%" /f
- call reg.exe add "%KEY_NAME_WOW%" /v "%VALUE_NAME%" /t REG_SZ /d "%NEW_NAME%" /f
- call reg.exe add "%KEY_NAME%" /v "%VALUE_VERSION%" /t REG_SZ /d "%NEW_VERSION%" /f
- call reg.exe add "%KEY_NAME_WOW%" /v "%VALUE_VERSION%" /t REG_SZ /d "%NEW_VERSION%" /f
- rem call net stop ppg
- rem if %ERRORLEVEL% NEQ 0 (
- rem echo Fehler beim Stoppen des PPG Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 7 aus
- rem exit /b 1
- rem )
- REM rename old H2 database from ppg service, then it will be recreated with the new postgres db values
- rename "%solutio_path%\Server\ncjs\database\ppg-service\persistence.mv.db" "persistence_alt.mv.db"
- set "persistence_trace_path=%solutio_path%\Server\ncjs\database\ppg-service\persistence.trace.db"
- if exist "%persistence_trace_path%" (
- rename "%persistence_trace_path%" "persistence_alt.trace.db"
- )
- set "file_path=%solutio_path%\Server\ncjs\conf\ppg\application.yml"
- set "old_line=de.solutio.ncjs.ppg.service.initialization.customToolsPath: %pg13_path%"
- set "new_line=de.solutio.ncjs.ppg.service.initialization.customToolsPath: %pg16_path%"
- call :replace "%file_path%" "%old_line%" "%new_line%"
- set "file_path2=%solutio_path%\Server\ncjs\conf2\ppg\application.yml"
- if exist "%file_path2%" (
- call :replace "%file_path2%" "%old_line%" "%new_line%"
- )
- rem call net start ppg
- rem if %ERRORLEVEL% NEQ 0 (
- rem echo Fehler beim Starten des PPG Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 7 aus
- rem exit /b 1
- rem )
- echo Alle Services starten
- call %acd_path%\acd.bat startall
- echo "Database migration completed successfully."
- pause
- exit /b
- :replace
- set "filepath=%~1"
- set "oldline=%~2"
- set "newline=%~3"
- set "temp_file=%TEMP%\temp_file.tmp"
- (for /F "usebackq delims=" %%a in ("%filepath%") do (
- if "%%a"=="%oldline%" (
- echo %newline%
- ) else (
- echo %%a
- )
- )) >"%temp_file%"
- move /y "%temp_file%" "%filepath%"
- exit /b
- :get_pg_version
- set "pg_bin_path=%~1"
- for /f "usebackq tokens=2 delims=. " %%G in (`"%pg_bin_path%\pg_config.exe" --version`) do (
- set "old_pg_version=%%G"
- exit /b
- )
- exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement