FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: MarcoEig am 03 August 2016, 11:22:54

Titel: dblog mit MySQL - Partitionierung
Beitrag von: MarcoEig am 03 August 2016, 11:22:54
Hallo zusammen,

ich habe zwar hier im Forum gesucht, aber nichts gefunden.
Evtl bin ich der Einzige mit diesem "Problem", oder ich habe einfach falsch gesucht.

Ich habe jetzt seit einigen Wochen dblog laufen.
Per Hochrechnung lande ich irgendwo bei 20+Mio Einträge pro Jahr.
Meine Überlegung ist, dass es vermutlich irgendwann etwas zäh wird die Daten dort für Plots/Auswertungen wieder rauszuholen.
Deshalb habe ich überlegt, ob es nicht sinnvoll sein könnte die History-Tabelle nach Monaten zu partitionieren.
Hat damit jemand Erfahrungen bzw bei dieser Größenordnung von Einträgen auch ohne Partitionierung keine Probleme mit der Abfrage der Daten?

Danke für eure Erfahrungen ;)

Grüße,
Marco
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: marvin78 am 03 August 2016, 11:27:30
Anfangen solltest du damit, das Logging so einzuschränken, dass nur noch das geloggt wird, was du wirklich benötigst. Alles zu loggen ist in der Regel weder hilfreich noch nötig. Ich habe über 500 Devices, komme aber nicht einmal annähernd an solche Logzahlen heran.

Das Log ausdünnen ist eine weitere Möglichkeit, das Datenaufkommen zu reduzieren.

Ich persönlich betreibe mehrere Datenbanken und dementsprechend mehrere DbLog Instanzen. In eine DB logge ich z.B. Daten, die mich auch nächstes Jahr oder auch darüber hinaus noch interessieren, in eine andere solche, die ich nach 10 Tagen weg werfen kann, weil sie mir zur Analyse von möglichen Problemen dann ohnehin nicht mehr helfen würden und ich sie auch anderweitig nicht benötige.
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: Tedious am 03 August 2016, 11:31:57
Das mag eleganter gehen, aber ich mache das händisch zum Monatsbeginn...

select *from fhem.history where Timestamp between '2016-07-01' and '2016-07-31'

Das Resultat exportiere ich in eine sql-Datei, denn

delete from fhem.history where Timestamp between '2016-07-01' and '2016-07-31'

Somit habe ich jeden Monat als sql-Datei verfügbar und kann die Daten bei bedarf wieder einladen.

Natürlich, wie genannt - nur das loggen was wichtig/interessant ist und einschränken. Zudem läuft jede Nacht um 4.00 Uhr automatisch ein optimize auf die DB.

optimize table fhem.history
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: MarcoEig am 03 August 2016, 11:51:45
Danke für diese Hinweise und Erfahrungen.

Der Ansatz mit den mehreren Instanzen gefällt mir gut, das werde ich wohl auch bei mir umsetzen.
Zusätzlich gefällt mir der "Backup"-Ansatz per Export (evtl mit anschließender Komprimierung) auch ganz gut.

Tatsächlich wird bei mir aktuell .*:.* geloggt, mit einzelnen Ausnahmen.
Den Ansatz werde ich wohl überdenken :)

Langzeitdaten interessieren mich natürlich auch nur für so Dinge wie Systeminfos, Wetterdaten, Heizungsdaten.. Ob jetzt ein Licht vor 2 Jahren an war, oder welchen Stand damals die Batterie hatte, ist da weniger interessant.

Danke nochmal :)
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 23 Februar 2017, 21:44:46
Hallo alle miteinander,

@marvin78,

ZitatIch persönlich betreibe mehrere Datenbanken und dementsprechend mehrere DbLog Instanzen
,

das habe ich auch vor, scheitere aber an der Einrichtung in Fhem. Wenn ich mehere Datenbanken bedienen will, muss ich doch entsprechend viele .conf Dateien anlegen, doch 93_DbLog.pm lässt doch nur die db.conf zu (zumindest bei mir ist das so). ?
Wie realisiere ich das dann ?

Gruß Rainer
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: marvin78 am 23 Februar 2017, 22:55:37
Mit mehreren dblog Devices.
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 23 Februar 2017, 23:06:15
Hallo marvin78,

das ist mir schon klar, doch wie stelle ich es an, das ich in verschiedene Datenbanken logge, das habe ich schon versucht, doch das DbLog-Device nimmt immer die gleiche .conf Datei. Wie sage ich es dem System, das ich verschiedene Datenbanken loggen möchte ?

Gruß Rainer
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: vbs am 24 Februar 2017, 00:18:15
Beim definieren des devices ein anderes Config File angeben?

Gesendet von meinem SM-T800 mit Tapatalk

Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 24 Februar 2017, 06:58:48
ZitatBeim definieren des devices ein anderes Config File angeben?
so hatte ich es gemacht und es funktioniert nicht.

ich erkläre kurz, was ich mir vorstelle.

define dblog1 DbLog /opt/fhem/db.conf .*:.* loggt alles in die fhem-Datenbank (db.conf: Host=Datenbankrechner, database=fhem) - funktioniert

define dblog2 DbLog /opt/fhem/dbmesswerte.conf (Messwerte) loggt alle Messwerte in die fhem-Messwerte-Datenbank (dbmesswerte
.conf: Host=Datenbankrechner, database=fhemmesswerte) - funktioniert nicht.

Wie kann ich denn anders eine zweite/dritte Datenbank angeben ?

Gruß Rainer
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 24 Februar 2017, 21:14:46
Kann mir keiner verraten, wie ich mehrere DbLog-Instanzen anlege, die in verschiedene Datenbanken schreiben/lesen ?
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: budy am 24 Februar 2017, 21:22:06
Moin Rainer,

na ja, das ist ja nicht soo schwierig. Du legst zunächst mal die nötigen config files im FHEM Verteichnis an und dann erzeugst du die entsprechenden DBs in MySQL. Anscghließend legst du die entsprechenden, neuen dblog-Instanzen in FHEM an. So habe ich das mit allen 5 gemacht, die ich benutze.

Gruß,
Stephan

Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 24 Februar 2017, 21:30:09
Hallo Stephan,

genau so habe ich es gemacht und das funktioniert bei mir nicht, es kommt immer  die Fehlermeldung "Error on reading xxx.conf from Database".

Die conf-Datei und die entsprechende Datenbank ist angelegt.
Aber wenn du sagst, das es so funktionieren muss, liegt der Fehler ja in meinem System, dann muss ich mal suchen.

Gruß Rainer
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: budy am 25 Februar 2017, 09:22:13
Moin Rainer,

ahh so... du hast auch schon configdb... ja, dann musst du das in der DB anlegen, denn dann liest FHEM ja gar nicht mehr von der Platte, sondern erwartet alle seine Files in der DB. Am besten duplizierst du einen entsprechenden Eintrag.

Gruß,
Stephan
Titel: Antw:dblog mit MySQL - Partitionierung
Beitrag von: rsteinkuhl am 25 Februar 2017, 11:29:53
Hallo Stephan,

es funktioniert jetzt. Der entsprechende Hinweis "configDB" deinerseits brachte mir die Lösung.
Ich muss die *.conf-Files in die configDB importieren, dann funktioniert es.

DANKE !!!

Gruß Rainer