Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Info

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

...

Hinweis

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!

Ein Upgrade ist nicht zwingend notwendig wenn das System ohne Probleme läuft. Ziehen Sie ein Upgrade nur in Betracht, wenn Sie erhebliche Performanceprobleme oder anderweitige Datenbankprobleme feststellen.

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

Inhalt
stylenone

Welche Datenbank-Engine verwende ich?

Sollten Sie im Verzeichnis Config\database eine Datei namens WiredTiger finden, so nutzen Sie bereits die aktuellste Engine und müssen nichts tun. Sollten Sie diese Datei nicht finden, arbeitet Ihr System noch mit der alten Engine und ein Upgrade auf die neue wäre möglich.

Ö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

Hinweis

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

...

  1. 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.

  2. Stoppen Sie nun den FE2MongoDB Dienst

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

  4. 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

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

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

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

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

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

    • Codeblock
      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% 
      
  5. Öffnen Sie eine NEUE Konsole als Administrator

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

  7. 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"

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

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

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

  11. Starten Sie anschließend den FE2 MongoDB Dienst

  12. Starten Sie anschließend den FE2 Server Dienst

  13. FE2 sollte nun wie gewohnt gestartet sein

Tipp

Nun wurde Ihre Datenbank auf die neue WiredTiger-Engine migriert!

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).

...

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”:

    image-20240821-151452.pngImage Added

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

    image-20240821-151526.pngImage Addedimage-20240821-151604.pngImage Added

  3. Importieren die zuvor exportierte JSON-Datei:

    image-20240821-151838.pngImage Addedimage-20240821-151924.pngImage Added