FHEM Forum

FHEM => Automatisierung => Thema gestartet von: CQuadrat am 27 August 2015, 12:09:19

Titel: DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 12:09:19
Hallo Zusammen,

ich hatte etwas mit DbLog und MySql-Server (lokal und remote) herumexperimentiert.

Dabei hatte ich versucht - was zugegebenermaßen etwas hinrissig ist - zwei Instanzen von DbLog anzulegen: eine lokal und eine remote.
Dabei hatte ich das Problem, dass ich zur remote-Datenbank keine Verbindung bekam (state blieb auf "waiting for connection"). Erst als ich das lokal angebundene DbLog entfernte konnte eine Verbindung zur remote-Datenbank hergestellt werden.

Für mich sieht das so aus, dass nur eine Instanz von DbLog angelegt werden kann (was ja auch ausreichen sollte). Damit niemand darüber stolpert daher hier der Hinweis.
Falls meine Beobachtung korrekt ist, sollte man(?) das auch in der Commandref und im Wiki vermerken. Ideal wäre es natürlich, wenn das DbLog-Modul das Anlegen einer zweiten Instanz gleich verweigern würde.



Viele Grüße

Christoph
Titel: Antw:[Hinweis] DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 27 August 2015, 13:54:19
Es kann nichts mit der Zahl der Instanzen zu tun haben, denn ich benutze mehrere davon.

Der Fehler muss woanders liegen.
Titel: Antw:[Hinweis] DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 13:57:02
auch gemischt remote und lokal angebunden?
Titel: Antw:[Hinweis] DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 27 August 2015, 14:02:57
Nein. Aber auch das wird funktionieren. Ich kann das aber auch gerne testen, wenn du magst. Du hast oben gesagt, dass mehrere Instanzen nicht möglich sind. Das ist generell schon einmal falsch.
Titel: Antw:[Hinweis] DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 27 August 2015, 14:13:28
Achso: Es kann sein, dass die externe DB einen anderen Port verwenden muss oder das ganze ist kaputt, wie vieles in DBLog.
Titel: Antw:[Hinweis] DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 14:19:03
remote angebunden funktioniert ja (zumindest alleine)

Heißt das, dass ich für lokal und remote jeweils einen anderen Port benötige trotz unterschiedlicher IP? Ich hatte nämlich beide gleichzeitig auf dem Standardport (3306).
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 27 August 2015, 14:25:57
Es wäre einen Versuch wert.

Und ich meinte, dass man vermutlich dann unterschiedliche Ports benötigt, wenn man lokal und remote auf eine DB zugreift. Ungetestet.

Generell bleibt es aber dabei: Mehrere Instanzen sind möglich.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 14:35:03
Zur Klarstellung:
Ich möchte nicht zweifach auf eine Datenbank zugreifen sondern jeweils "einfach" auf eine Datenbank, die lokal läuft und auf eine, die auf einem Remote-Server ist.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: pc1246 am 27 August 2015, 14:44:21
Hallo CQuadrat
Ich klinke mich hier mal ein. Ich haette auch gerne die SQL-Datenbank fuer DB-Log auf einem anderen Server, als dem Raspi. Leider habe ich gar nichts darueber gefunden, so dass ich am Ende froh war, dass es auf dem Raspi laeuft.
Kennst Du ein Tutorial oder etwas in der Art, welches auch von dummies wie mir ausgefuehrt werden kann?
Sorry fuer die Kaperung, aber es bot sich einfach an!
Gruss Christoph
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 14:50:13
a) DbLog auf localhost funktioniert (klar, ist der Standardfall)

b) Ausschließlich DbLog zu einem Remote-Server funktioniert. (der muss dann natürlich für Remote-Zugriff administriert sein)
Schau Dir mal das an:
http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely (http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely)

c) Nur wenn ich zweifach DbLog benutzen will (eine DbLog-Instanz zu einem lokaln mySQL-Server und eine DbLog-Instanz zu dem remote-Server), dann wird die Verbindung zur Remote-DB nicht aufgebaut.  a) und b) gleichzeitig

Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 27 August 2015, 21:38:07
Mir ist bewusst, was du meinst. Trotzdem denkt derjenige, der nur deinen ersten Beitrag hier im Thread liest (und du glaubst gar nicht, wie viele so etwas tun), dass man grundsätzlich nicht 2 mal DBLog nebeneinander betreiben kann. Das ist falsch.

Auch dass es remote gar nicht geht, glaube ich noch nicht. Wenn ich mal ganz viel Zeit habe, werde ich das auch noch testen.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 27 August 2015, 23:33:51
Zitat von: marvin78 am 27 August 2015, 21:38:07
Auch dass es remote gar nicht geht, glaube ich noch nicht. Wenn ich mal ganz viel Zeit habe, werde ich das auch noch testen.
Das habe ich jetzt nicht behauptet. Es geht (bei mir) nicht:  remote und lokal gleichzeitig.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 28 August 2015, 07:48:49
Zitat von: CQuadrat am 27 August 2015, 12:09:19
Für mich sieht das so aus, dass nur eine Instanz von DbLog angelegt werden kann (was ja auch ausreichen sollte). Damit niemand darüber stolpert daher hier der Hinweis.
Falls meine Beobachtung korrekt ist, sollte man(?) das auch in der Commandref und im Wiki vermerken. Ideal wäre es natürlich, wenn das DbLog-Modul das Anlegen einer zweiten Instanz gleich verweigern würde.

Da steht's.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: roedert am 28 August 2015, 07:54:43
Ich betreibe 2 DbLogs auf localhost (für mich auch sinnvoll, 1 DB für "historische" Daten die 30 Tage vorgehalten werden, 1 DB für "kurzzeitige" Daten (zB Luftfeuchtigkeit zur Lüftersteuerung) die nur 24h behalten werden).
Testweise habe ich gerade mal einen dritten DbLog auf einem externen Server eingerichtet - auch hier bekomme ich "waiting for connection" 

Scheint also wirklich ein Bug zu sein und du solltest dich mal an den Entwickler wenden.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 28 August 2015, 08:20:33
Zitat von: marvin78 am 28 August 2015, 07:48:49
Da steht's.

Da steht eben nicht, dass es remote nicht geht. Da steht nur dass es remote und local nicht gleichzeitig geht!

Das betätigt ja auch gerade der Vorposter.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 28 August 2015, 08:48:11
Ok @CQuadrat. Ich sehe, du kannst deinen eigenen und meinen Text nicht lesen. Mir geht es nur um die Feststellung, dass 2 und mehr Instanzen sehr wohl funktionieren. In meinem Zitat von dir steht nämlich nichts von remote und im Titel dieses Threads auch nicht. Wer das liest, kümmert sich nicht darum, ob du Probleme mit einer lokalen und einer remote-Verbindung hast. Der sieht nur "2 Instanzen gehen nicht". Und das ist falsch. Nur darum geht es mir.

Ich will das hier aber auch nicht weiter in die Länge ziehen. Das macht keinen Sinn. Ich würde an deiner Stelle lieber die Energie darauf verwenden, meinen Vorschlag mit den Ports zu probieren. Ich sehe das hier noch nicht wirklich als Bug. Das könnte ein sehr "normales" Problem mit MySQL sein.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 28 August 2015, 10:03:47
Zitat von: marvin78 am 28 August 2015, 08:48:11
(...) Ich würde an deiner Stelle lieber die Energie darauf verwenden, meinen Vorschlag mit den Ports zu probieren. Ich sehe das hier noch nicht wirklich als Bug. Das könnte ein sehr "normales" Problem mit MySQL sein.

Mit verschiedenen Ports hatte ich es auch schon erfolglos probiert.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: roedert am 28 August 2015, 10:17:33
Ein Workaround wäre auf dem FHEM-Rechner einen rinetd einzurichten, der zB Port 3307 auf Port 3306 der entfernten mysql-Db weiterleitet. Aus FHEM heraus würdest du die Remote-DB dann auch mit localhost Port 3307 ansprechen.

Der saubere Weg wäre natürlich die Ursache im DbLog zu finden und zu beheben.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: marvin78 am 28 August 2015, 10:20:22
Wie schon gesagt: DBLog ist an vielen Stellen fehlerhaft. Die Frage ist, ob sich der Aufwand lohnt, das Problem zu lösen.
Titel: Antw:DBLog: nur eine Instanz möglich
Beitrag von: CQuadrat am 28 August 2015, 11:29:52
Ich debugge das ganze gerade etwas.

DbLog steigt aus mit der Fehlermeldung:

2015.08.28 11:03:58.164 4: DbLog myDbLog_neu: Rereadcfg requested.
Can't call method "commit" on unblessed reference at ./FHEM/93_DbLog.pm line 1300.


In Zeile 1300 steht im Modul:

1298                 when ('rereadcfg') {
   1299                         Log3($name, 4, "DbLog $name: Rereadcfg requested.");
   1300                         $dbh->commit() if(! $dbh->{AutoCommit});
   1301                         $dbh->disconnect();
   1302                         $ret = _DbLog_readCfg($hash);
   1303                         return $ret if $ret;
   1304                         DbLog_Connect($hash);
   1305                         $ret = "Rereadcfg executed.";


Mit meinen beschränkten Perl-Kenntnissen interpretiere ich das so, dass eine Routine names commit() aufgerufen wird; und die scheint es nirgends zu geben  :-\