Enterprise: Migration einer PostgreSQL-Datenbank

Geändert am Mi, 21 Jun, 2023 um 3:25 NACHMITTAGS

Worum geht es?

Sie haben in Ihrer CROSSCAP-Enterprise-Installation ein älteres und vom Hersteller nicht mehr unterstütztes PostgreSQL-DBMS im Einsatz (z.B. Version 9.3) und möchten dieses Produkt jetzt aktualisieren, möglichst ohne die darauf laufende CROSSCAP Enterprise Installation verändern. Im Folgenden haben wir die hierfür nötige Vorgehensweise beschrieben und durch hilfreiche Skripte/Batch-Dateien ergänzt. 


Vorbereitung:

Sicherung des aktuellen Systems und Bereitstellen der Skripte/Batch-Dateien

  • Bitte VOR allen nachfolgenden Schritten eine Sicherung des Systems durchführen, z.B.
    - ein vollständiges Back-Up des Systems erstellen, falls Ihre Installation auf dedizierter Hardware läuft.
    - vom aktuellen System einen Snapshot erstellen, falls Sie Virtualisierer (wie z.B. VM-Ware) einsetzen.
  • Bitte legen Sie auf Laufwerk C:\ ein Verzeichnis mit dem Namen "temp" an (falls nicht vorhanden).
    Laden Sie dann über diesen Link: https://my.hidrive.com/lnk/hzilE0Q2 die von uns bereit gestellten Skripte/Batch-Dateien herunter und verschieben Sie die Datei POSTGRES MIGRATION.ZIP ins Verzeichnis c:\temp. Entpacken Sie dort das Archiv, es sollten drei *.BAT und eine *.SQL-Datei zum Vorschein kommen.

 

Schritt 1:

CROSSCAP Enterprise stoppen (um weitere DB-Zugriffe zu verhindern)

  • Stoppen Sie zuerst alle angeschlossenen CROSSCAP Scan- und Multi-Clients. Stoppen sie dann den Dienst 'L1' (per Windows Dienste-Manager), typischerweise auf dem CROSSCAP Web-Server. 
  • Danach bitte die Windows IIS (d.h. den Web-Server) per Internetinformationsdienste (IIS)-Manager beenden.
  • Die verbleibenden, noch laufenden CROSSCAP-Enterprise Dienste versuchen jetzt reihum, Verbindung mit dem (abgeschalteten) Web-Server aufzunehmen. Dies kann eine sehr hohe, wiederkehrende CPU-Last verursachen, welche die Folgeschritte u.U. stark behindert. Beenden Sie in diesem Fall auch alle verbleibenden CROSSCAP-Enterprise Dienste. 


Schritt 2:

Inhalte der aktuellen CROSSCAP Enterprise Datenbank sichern

Führen Sie die Datei "Dump_Database.bat" im Verzeichnis C:\temp aus. Durch das Ausführen dieser Batchdatei erzeugen Sie eine Sicherung der CrosscapEnterprise Datenbank aus der ursprünglichen PostgreSQL-DB heraus. Direkt nach dem Start dieser Batch-Datei werden Sie nach den folgenden, zusätzlichen Angaben gefragt:

  • Versionsnummer Ihres derzeitigen PostgreSQL-DBMS (bitte nur die ersten zwei Stellen, z.B. bei Version 9.3: '9.3' oder bei Version 10.4: '10'). Sie können die hier anzugebende Nummer auch unter C:\Program Files\PostgreSQL\<Versionsnummer> (64 Bit Version) oder C:\Program Files (x86)\PostgreSQL\<Versionsnummer> (32 Bit Version) herausfinden.
  • gewünschter Dateiname für die Datenbanksicherung, z.B. CROSSCAP_BackUp. An diesen Dateinamen wird automatisch das aktuelle Datum angehängt [_TTMMJJJJ].
  • gewünschter Pfad für die Datenbanksicherung, z.B. c:\temp.
  • Anmeldename des ausführenden Datenbank-Benutzers, hier postgres (der DB-SuperUser)
  • Kennwort des ausführenden Datenbank-Benutzers (d.h. das SuperUser-Passwort).

Danach wird die Sicherung ausgeführt, dies kann längere Zeit dauern. Es wird eine Datei [<Dateiname>_<TTMMJJJJ>.sql] mit dem von Ihnen vergebenen Namen in dem von Ihnen angegebenen Verzeichnis erzeugt. Überprüfen Sie vor dem Fortfahren bitte, dass die Sicherungsdatei tatsächlich erzeugt wurde und dass sie plausible Daten enthält (Dateigröße > 100kB, Öffnen der Sicherungsdatei mit einem Text-Editor und kurze Sichtüberprüfung des Inhaltes).


Schritt 3:

Bisherige PostgreSQL-DB deinstallieren (optional)

Wenn Sie die bisherige PostgreSQL-DB bereits zu diesem Zeitpunkt deinstallieren, wir der im nächsten Schritt ausgeführte PostgreSQL-Installer die neue Version der Datenbank mit "Werkseinstellungen" installieren. Dies stellt sicher, dass alle neuen Bestandteile und Konfigurationsoptionen (d.h. alle neuen Datenbank-"Features") unweigerlich aktiviert werden. Der Nachteil dabei ist, dass u.U. einige Einstellungen aus der aktuellen Datenbank (insbesondere die Netzwerk-Vorgaben in der Datei pg_hba.conf, siehe Schritt 7) händisch in die Konfigurationsdateien der "neuen" Datenbank übertragen werden müssen.


Wenn Sie die bisherige PostgreSQL-DB zu diesem Zeitpunkt nicht deinstallieren, wird der im nächsten Schritt ausgeführte Installer wesentliche Einstellungen der aktuellen DB-Konfiguration (insbesondere die Einstellungen in den Dateien pg_hba.conf und postgresql.conf, siehe weiter unten) übernehmen oder berücksichtigen - was hilfreich sein kann. 

Der Nachteil dabei ist, dass u.U. nicht alle neuen Bestandteile bzw. Konfigurationsoptionen der "neuen" Datenbank verwendet werden. Zudem geht der PostgreSQL-Installer davon aus, dass beide Datenbank-Installationen parallel betrieben werden sollen und weist daher der neu hinzu kommenden Installation einen anderen als den standard-Port zu.


Deinstallieren Sie das "alte" PostgreSQL-DBMS vollständig durch Ausführen der Datei C:\Program Files\PostgreSQL\<Version>\uninstall-postgresql.exe (64 Bit Version) oder C:\Program Files (x86)\PostgreSQL\<Version>\uninstall-postgresql.exe (32 Bit Version).

Der PostgreSQL De-Installer löscht das Datenverzeichnis nicht (z.B. C:\Program Files\PostgreSQL\<Version>\data). Dieses Verzeichnis bitte zum jetzigen Zeitpunkt auch nicht händisch löschen, es wird in Schritt 7 benötigt.


Schritt 4:

Installation der neuen PostgreSQL Version

Installieren Sie ein "neues" PostgreSQL-DBMS in der von Ihnen gewünschten Version. Auf der PostgreSQL Download-Seite werden Ihnen Windows-Installer angeboten, wir empfehlen die Verwendung der letzten verfügbaren (stabilen) Version. 

  • Der während der Installation als Komponente angebotene Stack Builder kann abgewählt werden, er wird von CROSSCAP Enterprise nicht benötigt. 
  • Bitte notieren Sie das vom Installer abgefragte SuperUser Kennwort (für den Benutzer postgres). Der Einfachheit halber können Sie natürlich auch das bisher verwendete Kennwort erneut verwenden.

Sollten Sie die bisherige PostgreSQL-DB bereits gelöscht haben (siehe Schritt 3), dann akzeptieren Sie bitte den während der Installation vorgeschlagenen standard Kommunikations-Port 5432. In Bezug hierauf gibt es im weiteren Verlauf Nichts weiter zu tun.

Sollten Sie die bisherige PostgreSQL-DB noch nicht gelöscht haben (siehe Schritt 3), dann akzeptieren Sie sich bitte den während der Installation vorgeschlagenen, alternativen Kommunikations-Port. Dieser Port wird zu einem späteren Zeitpunkt auf den standard Kommunikations-Port 5432 zurückgestellt werden.


Schritt 5:

Anlegen der CROSSCAP-Enterprise Datenbank (im neuen PostgreSQL-DBMS)

Durch Ausführen der Batchdatei Crosscap_Datenbank_anlegen.bat legen Sie eine neue, aber noch leere CROSSCAP-Enterprise Datenbank im der "neuen" PostgreSQL-DB an. Direkt nach dem Start der Batch-Datei werden Sie nach den folgenden, zusätzlichen Angaben gefragt:

  • Versionsnummer des neu installierten PostgreSQL-DBMS (bitte nur die ersten zwei Stellen, z.B. bei Version 13.6: '13').
  • Anmeldename des ausführenden Datenbank-Benutzers, hier postgres. Dieser Datenbank-Benutzer muss Schreib- und Leserechte im gesamten PostgreSQL DBMS besitzen, also der sog. SuperUser sein. 
  • Kennwort des ausführenden Datenbank-Benutzers (d.h. das aktuelle SuperUser-Passwort).


Schritt 6:

Einspielen der Daten aus der in Schritt 2 erzeugten Sicherungs-Datei

Zum Einspielen der Datenbanksicherung (aus Schritt 2) in Ihr neues PostgreSQL-DBMS starten Sie die Datei "PG_Restore_Single.bat". Diese fragt Sie nach dem Start nach:

  • der Versionsnummer Ihrer "neuen" PostgreSQL-DB (bitte nur die ersten zwei Stellen, z.B. bei Version 13.6: '13').
  • dem Namen des SuperUsers der aktuellen PostgreSQL-DB (hier postgres).
  • dem vollständigen Pfad und Dateinamen der einzuspielenden DB-Sicherungsdatei (z.B. c:\temp\CROSSCAP_BackUp_01012022.sql).
  • dem Kennwort des SuperUsers Ihrer "neuen" PostgreSQL-DB.


Schritt 7:

Anpassen der Konfigurations-Optionen

Ist der CROSSCAP Enterprise Web-Server auf dem gleichen PC bzw. auf der gleichen VM installiert wie das PostgreSQL-DBMS, dann gibt es bezüglich der Netzwerk-Konfiguration (in der Datei pg_hba.conf) Nichts zu tun: Der Web-Server kann ohne weitere Änderungen mit der Datenbank Verbindung aufnehmen, denn die pg_hba.conf ermöglicht grundsätzlich die Kommunikation per localhost

Folgende Änderungen sind darüber hinaus nötig:

  • Wurde die "alte" PostgreSQL-DB in Schritt 3 nicht gelöscht, verwendet die pg_hba.conf die Verschlüsselungsart der "alten" Datenbank weiter (hier: MD5). Sie können entweder bei dieser Verschlüsselungsart bleiben (nicht empfohlen, sie ist veraltet) oder auf scram-sha-256 wechseln (empfohlen). Die Vorgehensweise hierfür wird an anderer Stelle in diesem Portal beschrieben. 
    Bevor mit Schritt 8 fortgefahren werden kann, müssen noch die Zugriffs-Ports der beiden parallel laufenden PostgreSQl-DBs angepasst werden. Hierzu öffnen Sie bitte zuerst die Datei postgresql.conf der "alten" Datenbank (z.B. in C:\Program Files\PostgreSQL\9.3\data) und ändern unter # CONNECTIONS AND AUTHENTICATION die Zeile 
       port = 5432     # (change requires restart) 
    auf z.B. (es muss sich um einen anderweitig ungenutzten Port handeln) 
        port = 5431     # (change requires restart)
    Öffnen Sie danach bitte die Datei postgresql.conf der "neuen" Datenbank (z.B. in C:\Program Files\PostgreSQL\13.6\data) und ändern im gleichen Abschnitt die Zeile 
       port = 5433     # (change requires restart) 
    auf (es handelt sich hierbei um den PostgreSQL standard- / Default-Port) 
        port = 5432     # (change requires restart)

    Speichern Sie beide Dateien ab  und starten Sie dann, über den Windows-Dienste-Manager, die beiden für die "alte" und die "neue" PostgreSQL-Datenbank zuständigen Dienste neu.
  • Wurde die "alte" PostgreSQL-DB in Schritt 3 gelöscht, verwendet die pg_hba.conf die für diese Version gültige standard-Verschlüsselungsart scram-sha-256. Das Kennwort des PostgreSQL-eigenen Datenbank-SuperUsers wurde zwar bereits mit dieser Verschlüsselungsart angelegt (und funktioniert demzufolge), aber das in Schritt 6 importierte Kennwort des CROSSCAP-eigenen Benutzers CrosscapUser ist zu diesem Zeitpunkt noch mit MD5 verschlüsselt - und kann daher noch nicht verwendet werden. 
    Um das Kennwort zu aktualisieren, öffnen Sie bitte die POstgreSQl Administrations-Konsole  und geben das Kennwort für die Rolle CrosscapUser erneut (und jetzt mit scram-sha-256 verschlüsselt) ein. 
    Navigieren Sie hierzu im Programm PGAdmin in die Einstellungen der neu installierten Datenbank:
    Servers > PostgreSQL 1X > Login/Group Roles > CrosscapUser > Rechte Maustaste > Properties

    Unter dem Reiter Definition gibt es hier die Möglichkeit, das Benutzer-Kennwort neu zu vergeben:
    Das Kennwort für die Rolle CrosscapUser wird unter Verschluss gehalten und kann bei Bedarf per E-Mail beim CROSSCAP Support (support@srz.de) abgefragt werden.

Ist der CROSSCAP Enterprise Web-Server auf einem anderen PC bzw. auf einer anderen VM installiert als die PostgreSQL-Datenbank, dann muss auch die Netzwerk-Konfiguration der neu installierten PostgreSQL-DB angepasst werden. Die nötigen Änderungen sind im Einzelnen:

  • Wurde die "alte" PostgreSQL-DB in Schritt 3 nicht gelöscht, verwendet die pg_hba.conf die Verschlüsselungsart der "alten" Datenbank weiter (hier: MD5). Sie können entweder bei dieser Verschlüsselungsart bleiben (nicht empfohlen, sie ist veraltet) oder auf scram-sha-256 wechseln (empfohlen). Die Vorgehensweise hierfür wird an anderer Stelle in diesem Portal beschrieben.
    Bevor mit Schritt 8 fortgefahren werden kann, müssen zusätzlich die Zugriffs-Ports der beiden parallel laufenden PostgreSQl-DBs angepasst werden:
    Hierzu öffnen Sie bitte zuerst die Datei postgresql.conf der "alten" Datenbank (z.B. in C:\Program Files\PostgreSQL\9.3\data) und ändern unter # CONNECTIONS AND AUTHENTICATION die Zeile 
       port = 5432     # (change requires restart) 
    auf z.B. (es muss sich um einen anderweitig ungenutzten Port handeln) 
        port = 5431     # (change requires restart)
    Öffnen Sie danach bitte die Datei postgresql.conf der "neuen" Datenbank (z.B. in C:\Program Files\PostgreSQL\13.6\data) und ändern im gleichen Abschnitt die Zeile 
       port = 5433     # (change requires restart) 
    auf (es handelt sich hierbei um den PostgreSQL standard- / Default-Port) 
        port = 5432     # (change requires restart)

    Speichern Sie beide Dateien ab  und starten Sie dann, über den Windows-Dienste-Manager, die beiden für die "alte" und die "neue" PostgreSQL-Datenbank zuständigen Dienste neu.
  • Wurde die "alte" PostgreSQL-DB in Schritt 3 gelöscht, dann muss auch die Netzwerk-Konfiguration der neu installierten PostgreSQL-DB angepasst werden. Hierzu öffnen Sie bitte die ursprüngliche Datei pg_hba.conf (z.B. in C:\Program Files\PostgreSQL\9.3\data) und vergleichen diese mit der neuen Datei pg_hba.conf (hier z.B. in C:\Program Files\PostgreSQL\13.6\data):
    Im Abschnitt # IPv4 local connections: müsste in der ursprünglichen Datei zusätzlich zur Zeile für localhost-Zugriff (z.B. host all all 127.0.0.1/32 md5) ein zusätzlicher Eintrag für den zuständigen CROSSCAP Enterprise Web-Server zu finden sein (z.B. host all all 192.168.0.0/16 md5. Dieser Eintrag ermöglicht den Zugriff durch alle Netzwerk-Adressen im IP-Bereich 192.168.0.1 bis 192.168.255.254):


        # IPv4 local connections:
        host all all 127.0.0.1/32 md5
        host all all 192.168.0.0/16 md5


    Übernehmen Sie bitte den ersten Teil der zusätzlichen Zeile (hier also host all all 192.168.0.0/16) als neue Zeile in die aktuelle pg_hba.conf und ergänzen Sie diese Zeile um den dort verwendeten Verschlüsselungs-Algorithmus (in PostgreSQL 9.3 kommt noch md5 zum Einsatz, in späteren Versionen typischerweise scram-sha-256). Der veränderte Abschnitt würde dann beispielsweise so aussehen:

        # IPv4 local connections:
        host all all 127.0.0.1/32 scram-sha-256
        host all all 192.168.0.0/16 scram-sha-256

    Speichern Sie die veränderte Datei pg_hba.conf ab und starten Sie dann den Datenbank-Dienst (hier z.B. postgresql-X64-13) neu. Die Veränderungen werden damit vom PostgreSQL DBMS übernommen.


    Die "neue" PostgreSQl-Datenbank verwendet die für diese Version gültige Verschlüsselungsart scram-sha-256. Das Kennwort des PostgreSQL-eigenen Datenbank-SuperUsers wurde zwar bereits mit dieser Verschlüsselungsart angelegt (und funktioniert demzufolge), aber das in Schritt 6 importierte Kennwort des CROSSCAP-eigenen Benutzers CrosscapUser ist zu diesem Zeitpunkt noch mit MD5 verschlüsselt - und kann daher noch nicht verwendet werden. 
    Um das Kennwort zu aktualisieren, öffnen Sie bitte die POstgreSQl Administrations-Konsole  und geben das Kennwort für die Rolle CrosscapUser erneut (und jetzt mit scram-sha-256 verschlüsselt) ein. 
    Navigieren Sie hierzu im Programm PGAdmin in die Einstellungen der neu installierten Datenbank:
    Servers > PostgreSQL 1X > Login/Group Roles > CrosscapUser > Rechte Maustaste > Properties

    Unter dem Reiter Definition gibt es hier die Möglichkeit, das Benutzer-Kennwort neu zu vergeben:
    Das Kennwort für die Rolle CrosscapUser wird unter Verschluss gehalten und kann bei Bedarf per E-Mail beim CROSSCAP Support (support@srz.de) abgefragt werden.


Schritt 8:

Starten der CROSSCAP Enterprise Dienste
Abschließend müssen die IIS und alle CROSSCAP-Dienste wieder gestartet werden, damit die Kommunikation zwischen CROSSCAP und PostgreSQL wiederhergestellt wird. 

Dies können Sie erreichen, indem Sie entweder 

  • den Rechner / die VM neu starten (beim Re-Boot werden die IIS und alle CROSSCAP Enterprise Dienste automatisch gestartet) oder 
  • die IIS (den Web-Server) manuell starten, dann den CROSSCAP Enterprise Dienst L1 manuell starten und danach alle verbleibenden CROSSCAP Enterprise Dienste manuell starten (falls deren Anzahl überschaubar ist). 

An dieser Stelle sollte die CROSSCAP Enterprise Web-Administration bereits aufrufbar sein, bitte überprüfen Sie also, dass alle Einstellungen, Benutzer, Rollen und Projektvorlagen vollständig und genau so vorliegen wie vor der Migration. Ist Alles wie erwartet, können Sie den CROSSCAP Enterprise Server jetzt wieder in Betrieb nehmen.

War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren