Advertisement
willkommensbrief

charly 2023 datenbankmigration - migrate_all_16-ID-link

Oct 6th, 2023
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.94 KB | None | 0 0
  1. @echo off
  2. setlocal
  3.  
  4. REM Passen Sie diese Daten an Ihr System an.
  5. set solutio_path=C:\Solutio
  6. set pg13_path=%solutio_path%\Server\PostgreSQL13
  7. set pg13_bin_path=%pg13_path%\bin
  8. set db_dump_dir=%solutio_path%
  9. set pg16_path=%solutio_path%\Server\PostgreSQL16
  10. set pg16_superuser_password=#post.2000!
  11. set pg_port=5432
  12.  
  13. REM Alles Weitere muss normalerweise nicht, kann aber angepasst werden. Der Download-Link beschreibt die File-ID des neuesten
  14. REM Postgres-Installers aus dem 16er-Zweig. Er wandelt sich zur exe-Datei im installer_path.
  15. set db_dump_path=%db_dump_dir%\dump13.sql
  16. set "pg13_data_path=%solutio_path%\Server\PostgreSQL13\data"
  17. set download_url=https://sbp.enterprisedb.com/getfile.jsp?fileid=1258698
  18. set installer_path=%solutio_path%\newest-postgresql-hopefully-windows-x64.exe
  19.  
  20. REM Nicht veraendern!
  21. set pg_service_name=Solutio_PostgreSQL16
  22. set old_pg_version=13
  23. set acd_path=%solutio_path%\Server\ncjs
  24.  
  25. set start_step=%~2
  26.  
  27. if "%~1"=="-s" (
  28. if "%~2"=="" (
  29. echo Es wurde kein Schritt angegeben.
  30. exit /b 1
  31. )
  32. )
  33.  
  34. if "%start_step%"=="2" goto step2
  35. if "%start_step%"=="3" goto step3
  36. if "%start_step%"=="4" goto step4
  37. if "%start_step%"=="5" goto step5
  38. if "%start_step%"=="6" goto step6
  39. if "%start_step%"=="7" goto step7
  40.  
  41. echo Dieses Skript sollte nur verwendet werden, wenn in Ihrer Datenbank AUSSCHLIESSLICH Solutio Datenbanken existieren und nie etwas an der Installation geaendert wurde.
  42. echo Falls dies nicht der Fall ist, oder Sie sich nicht sicher sind, verwenden Sie bitte migrate_solutio.bat
  43. echo ""
  44. echo Folgende Werte werden verwendet. Bitte pruefen Sie, ob diese zu Ihrem System passen:
  45. echo solutio_path=%solutio_path%
  46. echo pg13_path=%pg13_path%
  47. echo db_dump_dir=%db_dump_dir%
  48. echo pg16_path=%pg16_path%
  49. echo pg_port=%pg_port%
  50.  
  51. echo Haben Sie alle Werte ueberprueft? Soll die Migration zu Postgres 16 durchgefuehrt werden?
  52. choice /c JN
  53.  
  54. if errorlevel 2 (
  55. echo Die Migration wird nicht gestartet. Bitte passen Sie die Werte direkt Im oberen Teil des Skriptes an.
  56. exit /b 1
  57. )
  58.  
  59. set "size=0"
  60.  
  61. for /R "%pg13_path%\data\base" %%F in (*) do (
  62. set /A "size+=%%~zF"
  63. )
  64.  
  65. set /A "folder_size_mb=(size / 1024 / 1024) + 200"
  66.  
  67. echo Benoetigter Speicherplatz in %db_dump_dir%: %folder_size_mb% MB
  68. echo Benoetigter Speicherplatz in %pg16_path%: %folder_size_mb% MB
  69. echo Haben Sie ueberprueft, ob in den Pfaden jeweils ausreichend Specicherplatz vorhanden ist?
  70. choice /c JN
  71.  
  72. if errorlevel 2 (
  73. echo Die Migration wird nicht gestartet.
  74. exit /b 1
  75. )
  76.  
  77. call :get_pg_version %pg13_bin_path%
  78.  
  79. if %old_pg_version% gtr 14 (
  80. echo Sie versuchen, von PosgreSQL Version %old_pg_version% zu migrieren. Dies ist nicht moeglich. Haben Sie die Migration schon einmal ausgefuehrt?
  81. exit /b 1
  82. )
  83.  
  84.  
  85. echo Alle Services stoppen
  86. call %acd_path%\acd.bat stopall
  87.  
  88. :step1
  89. echo.### Step 1: Erzeugen der Datenbank Sicherung aus PostgreSQL 13 (dies wird eine Weile dauern...)
  90. call "%pg13_path%\bin\pg_dumpall.exe" -U postgres -p %pg_port% -f "%db_dump_path%"
  91. if %ERRORLEVEL% NEQ 0 (
  92. echo Fehler beim Erstellen der Datenbank Sicherung mit PostgreSQL 13.
  93. exit /b 1
  94. )
  95.  
  96. :step2
  97. echo.### Step 2: Alten PostgreSQL Service stoppen
  98. call "%pg13_path%\bin\pg_ctl.exe" stop -D "%pg13_path%\data" -m fast
  99. if %ERRORLEVEL% NEQ 0 (
  100. echo Fehler beim Stoppen des PostgreSQL 13 Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 2 aus
  101. exit /b 1
  102. )
  103.  
  104. sc config Solutio_PostgreSQL start=demand
  105. if %ERRORLEVEL% NEQ 0 (
  106. echo Fehler beim Deaktivieren des PostgreSQL 9 Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 2 aus
  107. exit /b 1
  108. )
  109.  
  110. :step3
  111. echo.### Step 3: PostgreSQL 16 herunterladen
  112. @echo on
  113. call powershell Start-BitsTransfer -Source %download_url% %installer_path%
  114. @echo off
  115. if %ERRORLEVEL% NEQ 0 (
  116. echo Fehler beim Herunterladen des PostgreSQL 16 Installers. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 3 aus
  117. exit /b 1
  118. )
  119.  
  120. :step4
  121. echo.### Step 4: PostgreSQL 16 installieren
  122. @echo on
  123. 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
  124. if %ERRORLEVEL% NEQ 0 (
  125. echo Fehler beim Installieren von PostgreSQL 16. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 4 aus
  126. exit /b 1
  127. )
  128. @echo off
  129. call "%pg16_path%\bin\pg_ctl.exe" stop -D "%pg16_path%\data" -m f
  130. call copy /y "%pg13_path%\data\pg_hba.conf" "%pg16_path%\data\pg_hba.conf"
  131.  
  132. :step5
  133. echo.### Step 5: PostgreSQL 16 starten
  134. call net start %pg_service_name%
  135.  
  136. if %ERRORLEVEL% NEQ 0 (
  137. 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
  138. call notepad.exe "%pg16_path%\data\pg_hba.conf"
  139. exit /b 1
  140. )
  141.  
  142. :step6
  143. echo.### Step 6: Einspielen der Datenbank Sicherung in PostgreSQL 16 (dies wird eine Weile dauern...)
  144. call "%pg16_path%\bin\psql.exe" -U postgres16 -d postgres -p %pg_port% -f "%db_dump_path%" -c "SELECT '%pg16_superuser_password%';" >NUL
  145. if %ERRORLEVEL% NEQ 0 (
  146. 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
  147. exit /b 1
  148. )
  149.  
  150. :step7
  151. echo.### Step 7: Konfiguration der Solutio services
  152. @echo off
  153. set KEY_NAME=HKLM\Software\Solutio\Charly\PostgreSQL
  154. set KEY_NAME_WOW=HKLM\Software\Wow6432Node\Solutio\Charly\PostgreSQL
  155. set VALUE_NAME=Path
  156. set VALUE_VERSION=Version
  157. set NEW_NAME=%pg16_path%
  158. set NEW_VERSION=16.0
  159. call reg.exe add "%KEY_NAME%" /v "%VALUE_NAME%" /t REG_SZ /d "%NEW_NAME%" /f
  160. call reg.exe add "%KEY_NAME_WOW%" /v "%VALUE_NAME%" /t REG_SZ /d "%NEW_NAME%" /f
  161. call reg.exe add "%KEY_NAME%" /v "%VALUE_VERSION%" /t REG_SZ /d "%NEW_VERSION%" /f
  162. call reg.exe add "%KEY_NAME_WOW%" /v "%VALUE_VERSION%" /t REG_SZ /d "%NEW_VERSION%" /f
  163.  
  164. rem call net stop ppg
  165. rem if %ERRORLEVEL% NEQ 0 (
  166. rem echo Fehler beim Stoppen des PPG Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 7 aus
  167. rem exit /b 1
  168. rem )
  169.  
  170. REM rename old H2 database from ppg service, then it will be recreated with the new postgres db values
  171. rename "%solutio_path%\Server\ncjs\database\ppg-service\persistence.mv.db" "persistence_alt.mv.db"
  172.  
  173. set "persistence_trace_path=%solutio_path%\Server\ncjs\database\ppg-service\persistence.trace.db"
  174. if exist "%persistence_trace_path%" (
  175. rename "%persistence_trace_path%" "persistence_alt.trace.db"
  176. )
  177.  
  178. set "file_path=%solutio_path%\Server\ncjs\conf\ppg\application.yml"
  179. set "old_line=de.solutio.ncjs.ppg.service.initialization.customToolsPath: %pg13_path%"
  180. set "new_line=de.solutio.ncjs.ppg.service.initialization.customToolsPath: %pg16_path%"
  181. call :replace "%file_path%" "%old_line%" "%new_line%"
  182.  
  183. set "file_path2=%solutio_path%\Server\ncjs\conf2\ppg\application.yml"
  184. if exist "%file_path2%" (
  185. call :replace "%file_path2%" "%old_line%" "%new_line%"
  186. )
  187.  
  188. rem call net start ppg
  189. rem if %ERRORLEVEL% NEQ 0 (
  190. rem echo Fehler beim Starten des PPG Services. Um erneut bei diesem Schritt zu beginnen, fuehren Sie migrate_all.bat -s 7 aus
  191. rem exit /b 1
  192. rem )
  193.  
  194. echo Alle Services starten
  195. call %acd_path%\acd.bat startall
  196.  
  197. echo "Database migration completed successfully."
  198. pause
  199. exit /b
  200.  
  201. :replace
  202. set "filepath=%~1"
  203. set "oldline=%~2"
  204. set "newline=%~3"
  205.  
  206. set "temp_file=%TEMP%\temp_file.tmp"
  207.  
  208. (for /F "usebackq delims=" %%a in ("%filepath%") do (
  209. if "%%a"=="%oldline%" (
  210. echo %newline%
  211. ) else (
  212. echo %%a
  213. )
  214. )) >"%temp_file%"
  215.  
  216. move /y "%temp_file%" "%filepath%"
  217. exit /b
  218.  
  219.  
  220. :get_pg_version
  221. set "pg_bin_path=%~1"
  222.  
  223. for /f "usebackq tokens=2 delims=. " %%G in (`"%pg_bin_path%\pg_config.exe" --version`) do (
  224. set "old_pg_version=%%G"
  225. exit /b
  226. )
  227.  
  228. exit /b
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement