Autor Thema: mySQL - mehrere Datenbanken  (Gelesen 348 mal)

Offline Omega

  • Full Member
  • ***
  • Beiträge: 430
mySQL - mehrere Datenbanken
« am: 19 März 2017, 22:02:02 »
Ich möchte 2 mySQL-DBs verwenden:
-    eine als Kurzzeit-DB, in der – fast – alles geloggt wird und in der automatisch Sätze älter als  xx Tage gelöscht werden
-   eine Langzeit-DB, in der ganz gezielt geloggt wird.

Die Verbindung zwischen FHEM und mySQL läuft ja über die db.conf. Für 2 DBs verwende ich sinnvollerweise auch 2 unterschiedliche dbconf.db wegen der unterschiedlichen DB-Namen.
Bleibt es bei beiden DBs beim Port 3306 oder muss ich da auch eine Anpassung machen? Oder muss ich bei einer solchen Konstellation noch weitere Punkte beachten?

Gleich noch eine Frage zur db.conf: wann verwende ich localhost und wann die IP des FHEM-Rechners? Hintergrund: ich möchte auch von einem anderen Rechner auf die DB zugreifen können.

LG
Holger
« Letzte Änderung: 19 März 2017, 22:09:53 von Omega »
Cubietruck: FHEM 5.8, NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, MySensors, ESPEasy
ZWave

Online Otto123

  • Hero Member
  • *****
  • Beiträge: 6810
    • Otto's Technik Blog
Antw:mySQL - mehrere Datenbanken
« Antwort #1 am: 20 März 2017, 23:49:47 »
Hallo Holger,

Gleich noch eine Frage zur db.conf: wann verwende ich localhost und wann die IP des FHEM-Rechners? Hintergrund: ich möchte auch von einem anderen Rechner auf die DB zugreifen können.
Du musst zum einen den mySql Server so konfigurieren, dass er auch "aufs Netz lauscht" normal tut er das nämlich nur auf localhost (127.0.0.1)
Wenn er auf alles lauscht (bind-address = 127.0.0.1 auskommentiert) ist es egal ob Du lokal localhost oder die IP nimmst. Remote musst Du natürlich die IP nehmen.  Ich würde es dann einheitlich machen.

Das Port kannst Du meiner Meinung nach lassen wie es ist, da brauchst Du keine weiteren.

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi,HMLAN,HMUART,Homematic,Fritz!Box 7490,Sonos,ET9200,Arduino nano,ESP8266

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1100
Antw:mySQL - mehrere Datenbanken
« Antwort #2 am: 21 März 2017, 09:18:49 »
Also rein prinzipiell benötigt man keine 2 DBs für dein Vorhaben.
Dazu gibt es Funktionen wie reduceLog, die ältere oder nicht mehr benötigte Datensätze löschen können...
Da das schreiben von 2 DBs auch mehr Leistung benötigt, würde ich über den anderen Ansatz (das löschen kann man besser zeitlich steuern)
auch mal nachdenken... Zusätzlich gint es Module wie DbRep, indem man Werte zusammenfassen und Stunden oder Tageswerte
bilden kann. Dieses Modul kann ebenfalls nicht mehr benötigte Zwischenergebnisse löschen...
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Offline Omega

  • Full Member
  • ***
  • Beiträge: 430
Antw:mySQL - mehrere Datenbanken
« Antwort #3 am: 21 März 2017, 14:36:38 »
@Otto: Danke, dass bringt mich doch schon mal weiter…

@JoeALLb: momentan teste ich gerade mit 2 SQLite-DBs – bin aber nicht so ganz zufrieden.
Heute nacht hatte ich z.B. folgende Fehlermeldung im Log:
DbRep rep.myDbLog.Size - DBD::SQLite::db selectrow_array failed: database disk image is malformed at ./FHEM/93_DbRep.pm line 1329
.
Habe die DB mit “ pragma integrity_check;“ geprüft – war wohl doch alles i.O. Aber Vertrauen schafft das nicht.

Performancemäßig habe ich keine Probleme (FHEM läuft in einer VM auf einem NUC).

Ich experimentiere gerade mit dem Modul ElectricityCalculator. Das hat Readings ohne Ende. Zum Testen lasse ich erst mal alle Readings ungefiltert in die Standard-DB laufen – bei der dann gnadenlos nach x Tagen gelöscht wird. So kann ich mir in Ruhe anschauen, welche Readings mir denn überhaupt auf Dauer wichtig sind. Die übernehme ich dann gezielt in die Langzeit-DB.
Reducelog ist eingeplant z.B. für meine vielen Temperaturwerte (die auch in der Langzeit-DB landen).

Theoretisch kann ich das alles auch mit einer DB machen, befürchte aber, dann mehr Verwaltungsaufwand reinstecken zu müssen.

LG
Holger
Cubietruck: FHEM 5.8, NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, MySensors, ESPEasy
ZWave

Offline JoeALLb

  • Hero Member
  • *****
  • Beiträge: 1100
Antw:mySQL - mehrere Datenbanken
« Antwort #4 am: 21 März 2017, 15:19:23 »
Theoretisch kann ich das alles auch mit einer DB machen, befürchte aber, dann mehr Verwaltungsaufwand reinstecken zu müssen.

Noch eine Idee aus meinen Installationen: Ich habe bei einzelnen Installationen hinten eine Spalte "longterm" angehängt, die standardmäßig 0 abspeichert.
Einträge, die ich dauerhaft behalten möchte aktualisiere ich schon beim Einfügen oder auch nachträglich mit Longterm=1.
Von zeit zu zeit lösche ich dann alle Einträge in der Art:
delete from history where longterm=0;
Oder auch
delete from history where longterm=0 limit 5000;wenn ich die Datenbank weniger Lange blockieren will. Dies kann man zB über einen MySQL-Scheduler regelmäßig(zB ab Mitternacht alle 5 Minuten) ausführen..
FHEM-Server auf IntelAtom+Debian (12 Watt),
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270