Restoreonstartup Probleme bei MariaDB

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mothabrain
Beiträge: 25
Registriert: 19. Dez 2022 17:56
Answers: 0

Restoreonstartup Probleme bei MariaDB

Beitrag von mothabrain »

Hallo zusammen,

ich habe die Persistenz für OH bei mir per jdbc via Weboberfläche eingerichtet.
Die Daten der items werden in die MariaDB sauber geschrieben. Soweit so gut.

Allerdings werden eine paar items nach einem Neustart nicht restored und verbleiben auf NULL.
In der Datenbank werden auch diese Datenpunkte kontinuierlich fortgeschrieben, sobald ich die Werte in OH händisch wieder setze.

Meine default.persist sieht wie folgt aus

Code: Alles auswählen

Strategies {
    everyChange   : "jdbc"
    everyUpdate   : "jdbc"
    everyMinute   : "jdbc"
}

Items {
    * : strategy = everyUpdate, everyChange, restoreOnStartup
}

Meine jdbc.cfg ist komplett auskommentiert, da wie oben beschrieben, die Konfiguration per UI vorgenommen wurde.

Hat jemand eine Idee, woran es liegen könnte, dass die letzten Daten der items nicht restored werden?
OPENHAB 4.3.9 per Docker Container (x64)

Benutzeravatar
udo1toni
Beiträge: 15524
Registriert: 11. Apr 2018 18:05
Answers: 251
Wohnort: Darmstadt

Re: Restoreonstartup Probleme bei MariaDB

Beitrag von udo1toni »

Ich bin mir ziemlich sicher, dass die von Dir gezeigte Konfiguration nichts bewirkt. Eine default.persist Datei gibt es nicht.

Die Persistence wird stattdessen pro Persistence Service definiert.
Der Strategies Block dient ausschließlich dazu, spezielle zeitliche Strategies zu definieren. Ein Bezug auf die zu verwendende Persistence wird hier nicht angegeben.
Stattdessen sollte es (als xtext Konfiguration) folgendermaßen aussehen:
Dateipfad: /etc/openhab/persistence/jdbc.persist

Code: Alles auswählen

Strategies {
    everyMinute   : "0 * * * * ?" // zur vollen Minute
}
Items {
    * : strategy = everyUpdate, restoreOnStartup
}
Die Strategy everyUpdate beinhaltet auch everyChange. Der Unterschied besteht darin, dass auch bei Updates ohne Wertänderung ein neuer Datensatz geschrieben wird.
Der Strategies Block ist in der aktuellen Version (OH5.x) nicht zwingend notwendig.
Die beste Variante (wenn Du den Rest eh über die UI einrichtest) wäre es, diese Konfiguration ebenfalls über die UI zu erledigen, das hilft, Fehler zu vermeiden.

Die Default Persistence kann ebenfalls konfiguriert werden, dies betrifft aber ausschließlich den Lesezugriff z.B. aus den Charts heraus, falls die Datenquelle nicht angegeben ist, wird die gesetzte Default Persistence verwendet. Wichtig ist aber, dass dort die Daten auch tatsächlich vorliegen :)

Es gab früher mal eine default Strategy, die gibt es meines Wissens aber nicht mehr. Außerdem bezog sich diese auch wieder nur auf den durch die Datei konfigurierten Persistence Service und dort nur auf die Vorgabe, welche Strategies verwendet werden sollten, wenn bei einem Item keine Strategy angegeben war.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

mothabrain
Beiträge: 25
Registriert: 19. Dez 2022 17:56
Answers: 0

Re: Restoreonstartup Probleme bei MariaDB

Beitrag von mothabrain »

Vielen Dank, Sie haben mir soeben weitere Stunden des Fehlersuchens erspart. :D
Das war die Lösung des Problems.
Die default.persist war wohl noch ein Überbleibsel aus einem alten Backup.
OPENHAB 4.3.9 per Docker Container (x64)

mothabrain
Beiträge: 25
Registriert: 19. Dez 2022 17:56
Answers: 0

Re: Restoreonstartup Probleme bei MariaDB

Beitrag von mothabrain »

Hallo,

nun tritt ein weiteres Problem zur o.g. Thematik auf:

Die einzelnen Datenpunkte werden nicht mehr in der MainUI (Graphen) dargestellt, bzw. fortgeschrieben.
In der UI ist die jdbc als default persistence definiert.
Die auch installierte mapDB wird garnicht erst angezeigt und kann auch somit nicht selektiert werden.

Wie bekomme ich es hin in der UI hin, dass beides gleichzeitig geschrieben wird?
OPENHAB 4.3.9 per Docker Container (x64)

Benutzeravatar
udo1toni
Beiträge: 15524
Registriert: 11. Apr 2018 18:05
Answers: 251
Wohnort: Darmstadt

Re: Restoreonstartup Probleme bei MariaDB

Beitrag von udo1toni »

MapDB erzeugt pro Item nur exakt einen Datenpunkt. Deshalb ist MapDB gewöhnlich ausschließlich für restoreOnStartup und maximal noch zur Ermittlung des letzten Update/Änderungszeitpunkts nutzbar.
Für die Charts muss eine Datenbank eingerichtet sein, die Messwertreihen speichern kann. Dabei gilt es zu bedenken, dass Items, welche per everyChange gespeichert werden, eventuell auch über längere Zeiträume keinen Datenbankeintrag erzeugen. Hat ein darzustellendes Item weniger als zwei Datenpunkte innerhalb des dargestellten Zeitfensters, kann der Graph nicht erstellt werden. Es kann aber auch noch weitere Ursachen geben, die das Erstellen des Graphen verhindern. Aber selbst everyUpdate muss nicht zwingend zu mehr Datenpunkten führen.
Das ist einer der Gründe, warum rrd4j als Default Persistence angeboten wird. Man verliert über die Zeit keinen Speicherplatz (die Dateigröße bei rrd4j ist fix) und man hat keinerlei Aufwand, weil die rrd Engine direkt im Addon enthalten ist.

Ich nutze hier rrd4j, MapDB, jdbc und InfluxDB - Letzteres allerdings nur für die Grafana Anbindung. Dafür habe ich dort aber noch andere - von openHAB unabhängige Metriken hinterlegt. Zugegen, mit meinem Server ist Speicherplatz eher ein theoretisches Problem, aber tatsächlich ist die Datenmenge sehr überschaubar.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

mothabrain
Beiträge: 25
Registriert: 19. Dez 2022 17:56
Answers: 0

Re: Restoreonstartup Probleme bei MariaDB

Beitrag von mothabrain »

Danke für einen weiteren sehr hilfreichen Tipp.

Die Umstellung auf rrd4j habe ich erfolgreich hinbekommen.
Somit läuft es nun wie gewünscht, die Graphen werden wieder angezeigt.

Ich hatte bereits in Ihrer Signatur gesehen, dass Sie einiges an Daten vorhalten können ;)
OPENHAB 4.3.9 per Docker Container (x64)

Antworten