~~NOTOC~~ ===== H2-to-Postgres-Konvertierung ====== ==== Historische Hintergründe ==== In einer Zeit, als die Hardware-Voraussetzungen an den Schulen noch anders ausgesehen haben, als es heute der Fall ist, hatte man sich entschieden, zwei Installationsvarianten für ASV die Datenbank betreffend anzubieten: * ASV Server School (mit einer H2-Embedded-Datenbank; hier werden alle Daten in einer einzigen großen Datei vorgehalten); * ASV Server Enterprise (mit einer "ausgewachsenen" Postgres-Datenbank, die deutlich robuster gegenüber Unregelmäßigkeiten im Betrieb ist). Aus heutiger Sicht kann im Prinzip //jede// Schule (bzw. ASV-Installation) einen ASV Server Enterprise betreiben, weil * zum einen die Hardware vor Ort an den Schulen erheblich leistungsfähiger geworden ist; * zum anderen die Installation und der Betrieb des Postgres-Datenbanksystems eine weniger große Herausforderung mehr darstellt. Vor diesem Hintergrund kann man dazu raten, vom ASV Server School auf die Enterprise-Variante umzustellen. Nach der Umstellung ergeben sich ausschließlich Vorteile in Bezug auf einen stabileren und erheblich performanteren Betrieb. ==== Empfehlung ==== Bestehen Ihrerseits Zweifel bzw. Unklarheiten betreffend das erforderliche und hier beschriebene Vorgehen, zögern Sie bitte nicht, die für Ihre Schule(n) zuständige Multiplikatorin bzw. den zuständigen Multiplikator zu Rate zu ziehen, der den Systembetreuer der Schule oder Dienstleister für die IT unterstützen kann. ==== Beschreibung ==== Im StMUK wurde im April 2022 ein Standalone-Java-Tool geschaffen, mit dem eine bestehende H2-Datenbank (ASV Server School) vollständig in eine (anfänglich leere) Postgres-Datenbank übertragen werden kann. Dabei werden die Datensätze 1:1 geklont. Die graphische Oberfläche stellt sich wie folgt dar: {{:alle:technik:h2topostgres_maske.png|}} ==== Was dieses Tool nicht kann (bzw. nicht können kann) ==== Wenn es darum geht, dass die sich bisher in einer H2-Datenbank befindlichen Schulen A und B in eine bereits produktive Postgres-Instanz "einziehen" sollen (d. h. dort arbeiten bereits die Schulen C, D und E), so ist dies mit dem hier beschriebenen Verfahren **nicht** möglich. In diesen Fällen muss (auch weiterhin) der Weg über die schulscharfe Sicherung (und deren Einspielen in den schon produktiv genutzten Ziel-DSS) beschritten werden. ==== Voraussetzungen ==== Auf der **Quellseite** (H2, ASV Server School) **muss** im Vorfeld der DSS(-Dienst) **angehalten** werden, da sonst kein Zugriff auf die H2-Datenbank möglich ist. Dort muss auch das Tool ausgeführt werden. Auf der **Zielseite** (Postgres, ASV Server Enterprise) muss zunächst Postgres aufgesetzt und anschließend ein "frischer" DSS (ASV Server) mit dem Voll-Installer installiert werden. **Der Postgres-Dienst muss laufen, der DSS sollte angehalten sein**. Der Postgres-Dienst auf der Zielseite muss netzwerktechnisch von der "abgebenden" Quellseite aus erreichbar sein, damit die Daten "durchgepumpt" werden können. Sofern Ziel- und Quellseite auf der //gleichen// Maschine liegen, ist das bereits mit den Standardeinstellungen kein Problem. Sollten Sie die neue Installation auf der //gleichen// Maschine vornehmen, wählen Sie bei der Installation des Postgres/Enterprise-DSS bitte einen von der H2/School-Quellseite **abweichenden** Installationsort, z. B. ''C:\ASV_PG\Server''. Falls Postgres/die Zielseite dagegen auf einer //anderen// Maschine als die Quellseite läuft, müssen die folgenden zwei Ergänzungen/Veränderungen an Postgres-Konfigurationsdateien (im ''data''-Verzeichnis von Postgres, in der Regel unter ''C:\Program Files\PostgreSQL\\data'' zu finden) vorgenommen werden, damit das auf Quellseite laufende Tool berechtigt ist, auf die Postgres-Datenbank zuzugreifen und sie zu befüllen. Ergänzen Sie in der Datei ''pg_hba.conf'' am Ende die folgende Zeile: {{:alle:technik:h2topostgres_pghbaconf.png|}} Nehmen Sie in der Datei ''postgresql.conf'' folgende Anpassung vor: {{:alle:technik:h2topostgres_postgresqlconf.png|}} Starten Sie nun den PostgreSQL-Dienst neu, damit die Änderungen aktiv werden. Erst dann darf die Quell-Maschine (vorübergehend) auf die "entfernte" Postgres-Datenbank zugreifen. Nach erfolgter Migration werden wir diese temporär erforderliche Ausweitung der Zugriffsberechtigung wieder rückgängig machen (s. u.). ==== Vorgehensweise ==== Das Tool muss auf derjenigen Maschine ausgeführt werden, wo der abzulösende ASV Server School läuft (bzw. **lief**, denn er muss ja abgeschaltet sein, s. o.). Der Grund ist, dass die Zugangsdaten zur H2-Datenbank aus der ''config.ini'' des Quell-DSS gelesen werden müssen. Als Erstes ist der //Pfad zur DSS-Installation// des **Quellsystems** anzugeben. Falls der Quell-DSS in ''C:\ASV\Server'' installiert ist, erkennt das Tool dies automatisch. In allen anderen Fällen klicken Sie bitte auf //Durchsuchen...// und navigieren in den Basisordner des Quell-DSS. Anschließend wird die Angabe der korrekten Zugangsdaten für die **Zieldatenbank** (Postgres) erforderlich (mittlerer Bereich im obigen Screenshot). Nach Klick auf die Schaltfläche //Konvertiervorgang starten// (dieser Knopf wird erst aktiv, wenn alle notwendigen Daten eingetragen sind) beginnt der Prozess mit seiner Arbeit. Falls er auf der Zielseite ein bereits **vorhandenes** Schema ''asv'' vorfindet, erfolgt eine Sicherheitsnachfrage. {{:alle:technik:h2topostgres_sicherheitsnachfrage.png|}} Wenn Sie den Ziel-DSS gerade frisch installiert haben, wird angegeben, dass das Schema 0 (null) Schulen enthält. In diesem Fall können Sie der Löschfrage bedenkenlos zustimmen. **In allen anderen Fällen (d. h. wenn eine oder mehrere Schulnummern aufgeführt werden) ist Misstrauen geboten, da die Gefahr besteht, durch Verwechslung o. ä. eine andere, noch benötigte Postgres-Instanz zu überschreiben.** In der //dbctl-Konsole// werden Sie über den Fortgang informiert: {{:alle:technik:h2topostgres_dbctl_konsole_laufend.png|}} In Abhängigkeit von der Anzahl, Größe und Komplexität der in der H2-Instanz enthaltenen Schulen wird der gesamte Prozess einige Minuten in Anspruch nehmen. Bitte warten Sie, bis Ihnen durch ein Dialogfeld die Beendigung des Prozesses signalisiert wird (das kann auch dann noch ein wenig dauern, wenn gerade keine Ausgaben mehr in der //dbctl-Konsole// erfolgen): {{:alle:technik:h2topostgres_pruefe_dbctl_konsole.png|}} Prüfen Sie anschließend die Ausgaben in der //dbctl-Konsole//. Wurden in der //dbctl-Konsole// Fehler ausgegeben, so konnte der Klon-Vorgang nicht oder nicht vollumfänglich durchgeführt werden. Bitte prüfen Sie als Erstes die Korrektheit der eingegebenen Datenbank-Zugangsdaten. Sollte an der Stelle jedoch keine Fehleingabe vorliegen (was sehr unwahrscheinlich ist), erstellen Sie bitte ein Support-Ticket.\\ Tipp: Die Meldungen in der Konsole können markiert und in die Zwischenablage übernommen werden. Abschließend beenden Sie das Werkzeug durch Klick auf //Tool beenden//. ==== Abschluss / erneute Absicherung des Postgres-DB-Servers ==== Machen Sie die beiden oben unter "Voraussetzungen" beschriebenen Änderungen an der Postgres-Konfiguration wieder rückgängig: * Entfernen Sie die besagte Zeile ("samenet") aus der Datei ''pg_hba.conf'' wieder und speichern Sie die Datei ab; * Tragen Sie in der Datei ''postgresql.conf'' bei ''listen_addresses = ...'' statt des Sternchens ''*'' wieder ''localhost'' ein und speichern Sie die Datei ab. Starten Sie nun bitte den PostgreSQL-Dienst erneut, damit die Änderungen wirksam werden. **Bitte achten Sie unbedingt darauf, dass das Quellsystem (H2/Server School) __nie mehr wieder__ in Betrieb geht/gehen kann.** Anderenfalls bestünde die Gefahr, dass das schulische Personal auf zwei verschiedenen ASV-Installationen arbeitet! Falls der neue Postgres-DSS auf einer //anderen// Maschine als der alte H2-DSS läuft, müssen Sie beim ASV-Client (bzw. den ASV-Clients) in der Datei ''config.ini'' die Zeile ''server.url=...'' auf die neue IP-Adresse anpassen. Nun können Sie den Postgres-DSS starten und die Schulen werden in der Lage sein, mit dem 1:1 übertragenen Datenbestand sofort weiterzuarbeiten. ==== Automatische Datensicherung ==== Als (ehemaliger) Betreiber einer ASV-School-Instanz waren Sie auch bisher schon für die regelmäßige Datensicherung auf ein externes (Offline-)Medium verantwortlich, um im Ernstfall (Havarie, Befall durch Schadsoftware, ...) gewappnet zu sein. Wie Sie zukünftig Ihrer Pflicht zur Sicherung der Daten Ihrer frischgebackenen PostgreSQL-Installation nachkommen, erfahren Sie [[alle:technik:backup:start|hier]]. ==== Download ==== Sie können das Tool {{:alle:technik:h2topostgres.zip|hier}} herunterladen. ==== Falls Sie Fragen haben... ==== Sollten Sie hinsichtlich der Durchführung bzw. des konkreten Ablaufs Fragen haben bzw. Unterstützung benötigen, wenden Sie sich bitte an Ihre zuständige Multiplikatorin bzw. Ihren zuständigen Multiplikator. Bei technischen Fragen zum Tool als solchem (**nicht aber** zur Durchführung der Umstellung!) können Sie sich an wenden.