Datenbank migrieren

Dieser Artikel erklärt wie Sie ältere Datenbanken auf die neue Datenbank-Engine WiredTiger umstellen können.

Falsche Änderungen können im schlimmsten Fall zu einem Datenverlust führen. Erstellen Sie unbedingt vor Änderung an der Datenbank ein vollumfängliches Backup.

Wir übernehmen KEINE Haftung für Datenverluste!

Falls Sie Docker verwenden, passen Sie die Anleitung in den relevanten Stellen bitte selbstständig an!

Welche Datenbank-Engine verwende ich?

Öffnen Sie die FE2 Administration und öffnen Sie den Reiter “Übersicht”. Hier sehen Sie die verwendete Datenbank Engine. Steht dort “mmapv1” so kann die Datenbank migriert werden.

Migration durchführen

Führen Sie ein vollständiges Backup durch um jederzeit wieder auf den alten Stand zurück gehen zu können.

Alle Pfade im Beispiel müssen ggf. an Ihr System angepasst werden.

  1. Stoppen Sie den FE2 Server Dienst

  2. Öffnen Sie eine Konsole als Administrator

  3. Navigieren Sie zu C:\Program Files\Alamos GmbH\FE2\files\scripts\

  4. Führen Sie das Skript backup.bat aus → Nun sollte eine Sicherung unter C:\ProgramData\Alamos GmbH\FE2\Backups\Aufgabenplanung erstellt worden sein

    1. Im Export-Fenster müssen mind. 129 Dateien kopiert worden sein. Falls nicht, gab es beim Export einen Fehler.

  5. Stoppen Sie nun den FE2MongoDB Dienst

  6. Öffnen Sie den Windows Explorer und navigieren Sie nach C:\ProgramData\Alamos GmbH\FE2\Config\database

  7. Löschen Sie nun alle Ordner und Dateien außer

    1. input

    2. objects

    3. relais

    4. vehicles

    5. Löschen Sie die Datei C:\ProgramData\Alamos GmbH\FE2\Backups\Aufgabenplanung\DATUM_DER_SICHERUNG\Config\db_access.aes

  8. Navigieren Sie nun mit der Kommandozeile im Admin Modus nach:

    1. C:\Program Files\Alamos GmbH\FE2\files\mongodb\bin

  9. Starten Sie die Datenbank manuell mit folgendem Befehl und schließen das Konsolenfenster NICHT:

    1. mongod.exe --port 27018 --bind_ip localhost --dbpath "C:\ProgramData\Alamos GmbH\FE2\Config\database" --journal
  10. Öffnen Sie in Windows den Ordner C:\Program Files\Alamos GmbH\FE2\files\scripts\

  11. Ändern Sie die nachfolgende Zeile in der Datei restore.bat und speichern Sie die Datei

    • Vorher: "%FE2_ROOT%FE2\files\mongodb\bin\mongorestore.exe" --username Admin --password %DBPW% --authenticationDatabase admin --drop --gzip --port=27018 %dirDatabase% Nachher: "%FE2_ROOT%FE2\files\mongodb\bin\mongorestore.exe" --drop --gzip --port=27018 %dirDatabase%
  12. Öffnen Sie eine NEUE Konsole als Administrator

  13. Navigieren Sie zu C:\Program Files\Alamos GmbH\FE2\files\scripts\

  14. Führen Sie nun in der Konsole das Skript restore.bat aus und übergeben Sie als Parameter den Ordner der vorherigen Sicherung (ersetzen Sie den Ordnernamen am Ende der Zeile durch den entsprechenden Ihres zuvor erstellten Backups). Achten Sie auf die Anführungszeichen bei der Pfadangabe!:

    • restore.bat "C:\ProgramData\Alamos GmbH\FE2\Backups\Aufgabenplanung\2021-07-16__17_30"

  15. Wenn dieser Schritt beendet ist, schließen Sie dieses Konsolenfenster

  16. Ändern Sie in der restore.bat die vorhin geänderte Zeile wieder auf den Ursprungszustand

  17. Stoppen Sie nun die vorher in Schritt 9 manuell gestartete Datenbank (Fenster schließen oder Strg+C drücken)

  18. Starten Sie anschließend den FE2 MongoDB Dienst

  19. Starten Sie anschließend den FE2 Server Dienst

  20. FE2 sollte nun wie gewohnt gestartet sein

Mögliche Fehlerursachen beim Durchführen des Backups

Vereinzelt kann es vorkommen, dass ein Export aus der bestehenden Datenbank durch das Skript abbricht. Bisher sind uns hierzu folgende Fehler bekannt:

Datensatz in Datenbanktabelle zu groß

Fehlerbild

MongoDB hat ein Limit von 16MB pro Datensatz. Ggf. kann es passieren, dass Datensätze wenige Kilobyte mehr benötigen. Dadurch ist aber ein Export nicht mehr möglich. Im Log erscheinen Meldungen, die z. B. BsonMaximumSizeExceededException beinhalten.

Lösung

Im Log des Exports bzw. in der mongolog-Datei ist die Tabelle mit dem betroffenen Datensatz ersichtlich. Hier muss dann entweder der Datensatz manuell ermittelt und gelöscht werden oder es muss abgewägt werden, ob der Inhalt der Tabelle ohne Probleme gelöscht werden kann. Wenn z. B. die Einträge des Admin-Protokolls nicht benötigt werden, kann diese Tabelle einfach geleert/gelöscht werden. Wenn es sich aber z. B. um die Alarmtabelle handelt, ist es Ermessenssache. Ggf. kann in diesem Fall auch die in der FE2-Administration vorhandene Option, Alarme älter als X Tage zu löschen, hilfreich sein.

Fehler beim Export, Gesamtzahl Datensätze in Tabelle kann nicht ermittelt werden

Fehlerbild

Dies äußert sich beim Export dadurch, dass in der Konsole die Meldung “error getting count from db” erscheint und der MongoDB-Dienst gestoppt wird. Leider wird in dieser Meldung nicht direkt ausgegeben, welche Tabelle betroffen ist. Hier kann ein Blick in die mongolog weiterhelfen.

Beispiel: Es wurde ermittelt, dass die Alarmtabelle in der Datenbank betroffen ist. Wenn Sie sich mit einem Datenbanktool, z. B. MongoDB Compass verbinden und die “alarms” Tabelle öffnen, sehen Sie oben rechts die Gesamtanzahl an Dokumenten (hier 914).

image-20240821-151124.png

Wenn Sie nun aber einen Export als JSON durchführen werden weniger Elemente angezeigt.

Dieser Unterschied führt zu dem genannten Fehler im Backup.

Lösung

  1. Löschen Sie die Datenbanktabelle, indem Sie die Tabelle “droppen”:

     

  2. Erstellen Sie anschließend die Tabelle mit gleichem Namen erneut:

     

  3. Importieren die zuvor exportierte JSON-Datei: