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.
Stoppen Sie den FE2 Server Dienst
Öffnen Sie eine Konsole als Administrator
Navigieren Sie zu
C:\Program Files\Alamos GmbH\FE2\files\scripts\
Führen Sie das Skript
backup.bat
aus → Nun sollte eine Sicherung unterC:\ProgramData\Alamos GmbH\FE2\Backups\Aufgabenplanung
erstellt worden seinIm Export-Fenster müssen mind. 129 Dateien kopiert worden sein. Falls nicht, gab es beim Export einen Fehler.
Stoppen Sie nun den FE2MongoDB Dienst
Öffnen Sie den Windows Explorer und navigieren Sie nach
C:\ProgramData\Alamos GmbH\FE2\Config\database
Löschen Sie nun alle Ordner und Dateien außer
input
objects
relais
vehicles
Löschen Sie die Datei
C:\ProgramData\Alamos GmbH\FE2\Backups\Aufgabenplanung\DATUM_DER_SICHERUNG\Config\db_access.aes
Navigieren Sie nun mit der Kommandozeile im Admin Modus nach:
C:\Program Files\Alamos GmbH\FE2\files\mongodb\bin
Starten Sie die Datenbank manuell mit folgendem Befehl und schließen das Konsolenfenster NICHT:
mongod.exe --port 27018 --bind_ip localhost --dbpath "C:\ProgramData\Alamos GmbH\FE2\Config\database" --journal
Öffnen Sie in Windows den Ordner
C:\Program Files\Alamos GmbH\FE2\files\scripts\
Ändern Sie die nachfolgende Zeile in der Datei
restore.bat
und speichern Sie die DateiVorher: "%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%
Öffnen Sie eine NEUE Konsole als Administrator
Navigieren Sie zu
C:\Program Files\Alamos GmbH\FE2\files\scripts\
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"
Wenn dieser Schritt beendet ist, schließen Sie dieses Konsolenfenster
Ändern Sie in der
restore.bat
die vorhin geänderte Zeile wieder auf den UrsprungszustandStoppen Sie nun die vorher in Schritt 9 manuell gestartete Datenbank (Fenster schließen oder Strg+C drücken)
Starten Sie anschließend den FE2 MongoDB Dienst
Starten Sie anschließend den FE2 Server Dienst
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).
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
Löschen Sie die Datenbanktabelle, indem Sie die Tabelle “droppen”:
Erstellen Sie anschließend die Tabelle mit gleichem Namen erneut:
Importieren die zuvor exportierte JSON-Datei: