DbLog - neue Version mit Support MariaDB Perl Treiber und Netzwerk-Kompression

Begonnen von DS_Starter, 12 März 2024, 18:56:35

Vorheriges Thema - Nächstes Thema

DS_Starter

Hallo zusammen,

in meinem contrib (siehe Fußtext) liegt die Version 5.10.0 mit neuen Features zunächst zum Test für interessierte User.
Ihr könnt die Datei in euer ../FHEM Verzeichnis herunterladen und danach FHEM neu starten.

Mit dieser Version kann jetzt der Perl MariaDB Treiber (DBD::MariaDB) verwendet/aktiviert werden.
Außerdem kann die Netzwerkkommunikation zwischen Client und Server (für MySQL/MariaDB) mit Kompression betrieben werden.

Dazu gibt es entsprechende Schlüssel in der .conf Datei (Infos auch in der Modulhilfe):

    ####################################################################################
    #%dbconfig= (
    #    connection => "mysql:database=fhem;host=<database host>;port=3306",
    #    # if want communication over socket-file instead of TCP/IP transport, use:
    #    # connection => "mysql:database=fhem;mysql_socket=</path/socket-file>",
    #    user => "fhemuser",
    #    password => "fhempassword",
    #    # optional enable UTF-8 support
    #    # (full UTF-8 support exists from DBD::mysql version 4.032, but installing version 4.042 is highly suggested)
    #    utf8 => 1,
    #    # optional enable communication compression between client and server
    #    compression => 1   
    #);
    ####################################################################################
    #
    ## for MariaDB
    ####################################################################################
    #%dbconfig= (
    #    connection => "MariaDB:database=fhem;host=<database host>;port=3306",
    #    # if want communication over socket-file instead of TCP/IP transport, use:
    #    # connection => "MariaDB:database=fhem;mariadb_socket=</path/socket-file>",
    #    user => "fhemuser",
    #    password => "fhempassword",
    #    # optional enable communication compression between client and server
    #    compression => 1
    #);
    ####################################################################################

Für die Benutzung des MariaDB Treibers mit Netzwerkkompression wäre bespielhaft zu setzen:

%dbconfig= (
    connection => "MariaDB:database=fhem;host=<database host>;port=3306",
    user => "fhemuser",
    password => "fhempassword",
    compression => 1
);

Ein "set ... rereadcfg" nicht vergessen!

Die aktuell eingecheckte DbRep Version 8.53.5 erkennt die in DbLog gesetzten Parameter und passt die eigene Datenbankverbindung entsprechend an.
Die Netzwerkkompression könnte bei beschränkten Netzwerkverbindungen oder den Betrieb der Datenbank bei einem Online-Provider interessant sein.

Weitere Ergänzungen sind:

- der disable Zustand ist überarbeitet (es läuft kein Timer mehr im Hintergrund)
- gesteigerte Performance der Event-Verarbeitung bei gesetztem Attr excludeDevs
- Fix Label immer vom Vortag bei delta-d (siehe https://forum.fhem.de/index.php?topic=136930.0)
- in der Detailanzeige verfügbar sind Klick-Links
  -> zur Erzeugung eines SVG Devices
  -> zur Anzeige des Configuration File Content
  -> zur Ausführung des Confiuration Check
  -> zum direkten Sprung in das Standardforum DbLog
 
- die Klick-Links sind als Icons oder Text (Attribut headerLinks) umschaltbar. Die Textsprache ist von
  der globalen Einstellung 'language' abhängig gestaltet.


Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

RalfRog

Hallo
Ans produktive System will ich nicht ran und habe mal auf dem Testsystem DbLog aktiviert (mit MariaDB). Modul muss ich noch aktualisieren.
Bin jetzt nur nicht so der Datenbanktester ;)

Zitat von: DS_Starter am 12 März 2024, 18:56:35...(Infos auch in der Modulhilfe)...
Dazu muss natürlich das Modul erstmal installiert sein (oder im Sourcetext schauen).
 
MariaDB:   sudo apt-get install [mariadb-server] mariadb-client libdbd-mariadb-perlDie "libdbd-mariadb-perl" musste ich nicht installieren - sie war schon da. Vermutlich bei der Installation der MariaDB? Die hat man ja schon installiert da man sie nutzt.
  • kleiner Vorabhinweis auf die erforderliche "libdbd-mariadb-perl" wäre ggfs. praktisch (ok kann man sich auch denken...).

Beim check der db.conf ist mir aufgefallen, dass die Version der "db.conf" im contrib/dblog recht alt ist und auch nicht dem aktuellen Text/Inhalt in der Hilfe entspricht.
  • Vielleicht magst du mal eine aktualisierte Version hochladen (wenn das Modul fertig ist).

=> Welche Vorteile bringt die Nutzung des DBD::MariaDB Treibers statt mySQL?
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

RalfRog

Hi
Hab das Modul aus dem Contrib geladen (Blöderweise hab ich DbRep nicht aktualisiert, macht aber vermutlich für den Fehler nichts).
Wenn ich mySQL in der db.conf wieder aktiviere gehts ("set ... rereadcfg").

im LOG
024.03.15 19:19:05.359 2: DBLogging - ERROR: DBI connect('database=fhem;host=localhost;port=3306','fhemuser',...) failed: Connection error: port cannot be specified when host is localhost or embedded at ./FHEM/93_DbLog.pm line 2558.
    hier die db.conf zurück geändert
2024.03.15 19:22:32.505 3: DBLogging - Rereadcfg requested.
2024.03.15 19:22:32.515 3: DBLogging - new DB connection parameters are transmitted ...
2024.03.15 19:22:32.721 3: DBLogging - Database disconnected by request. Stored DB params in SubProcess were deleted.
2024.03.15 19:22:32.763 3: DBLogging - DB connection parameters are stored in SubProcess
2024.03.15 19:22:32.768 3: DBLogging - DB connection parameters are initialized in the SubProcess
2024.03.15 19:24:02.156 3: DBLogging - Rereadcfg requested.
2024.03.15 19:24:52.050 3: DBLogging - Rereadcfg requested.
2024.03.15 19:24:52.057 3: DBLogging - new DB connection parameters are transmitted ...
2024.03.15 19:24:52.132 3: DBLogging - Database disconnected by request. Stored DB params in SubProcess were deleted.
2024.03.15 19:24:52.185 3: DBLogging - DB connection parameters are stored in SubProcess
2024.03.15 19:24:52.222 3: DBLogging - DB connection parameters are initialized in the SubProcess

Schau mal der Screenshot - soll das so?  => control_hamburger_s@grey



FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

betateilchen

Zitat# connection => "MariaDB:database=fhem;mariadb_socket=</patch/socket-file>",

Vermutlich müsste es /path/socket-file heißen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

ZitatVermutlich müsste es /path/socket-file heißen.
Ja klar ... Schreibfehler.

ZitatSchau mal der Screenshot - soll das so?  => control_hamburger_s@grey
Nein, da gibt es normal ein Icon. Schau ich nochmal ob es das in den ausgelieferten Icons evtl. nicht gibt.


ZitatBeim check der db.conf ist mir aufgefallen, dass die Version der "db.conf" im contrib/dblog recht alt ist und auch nicht dem aktuellen Text/Inhalt in der Hilfe entspricht.

    Vielleicht magst du mal eine aktualisierte Version hochladen (wenn das Modul fertig ist).
Ja, sobald ich in den checkin gehe, aktualisiere ich auch die Vorlage(n) im contrib.

Zitat=> Welche Vorteile bringt die Nutzung des DBD::MariaDB Treibers statt mySQL?
Nichts direkt. Wir haben aber letztens hier festgestellt, dass die Unterstützung von MySQL in den Linux Distributionen zurückgeht und MariaDB zunehmend ausgeliefert wird.
Weiterhin scheint der Treiber (https://metacpan.org/pod/DBD::MariaDB) aktiv weiterentwickelt zu werden. Ist recht neu von Sept. 2023 der letzte Stand.

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Das Icon control_hamburger_s gibt es im aktuellen Auslieferungsstand von FHEM nicht.
Eine gleichnamige SVG Datei habe ich mir zwar aus dem Internet geholt, da funktioniert aber das Füllen mit grau noch nicht wie gewünscht.

Ich habe gerade meine bestehende mysql Verbindung an einen externen Server bei AWS umgestellt.
Dazu habe ich lediglich die 93_DbLog.pm aus dem contrib nach ./FHEM verlinkt, die Konfigurationszeile entsprechend von mysql auf mariadb geändert und FHEM neu gestartet.

Hat auf Anhieb fehlerfrei funktioniert und scheint auch zu laufen. Zumindest werden fleißig Werte in die Datenbank geschrieben und können auch von SVG verwendet werden, hier ein Auszug aus dem preprocessed input eines SVG plots.

2024-03-15_20:10:02 146000
Die Datenbank wird übrigens von zwei FHEM Installationen parallel benutzt - eine benutzt jetzt mariadb (zum Schreiben und Lesen), die andere (nur zum Lesen) arbeitet mit mysql.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 15 März 2024, 20:15:29Die Datenbank wird übrigens von zwei FHEM Installationen parallel benutzt - eine benutzt jetzt mariadb (zum Schreiben und Lesen), die andere (nur zum Lesen) arbeitet mit mysql.

Inzwischen greifen beide FHEM Installationen parallel mit MariaDB auf die Datenbank zu.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Nighthawk

Hallo Heiko,

danke, das Problem mit den falschen Werten im Label (vom Vortag) sind damit behoben.

Gruß
Alex

DS_Starter

@RalfRog,

hier meine cfg zum Vergleich

%dbconfig= (
    connection => "MariaDB:database=fhemtest1;host=192.168.2.44;port=3306",
    user => "xxxxx",
    password => "xxxxxx",
    compression => 1
);
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

ZitatERROR: DBI connect('database=fhem;host=localhost;port=3306','fhemuser',...) failed: Connection error: port cannot be specified when host is localhost or embedded

Das ist ein uraltes Problem in mysql Umgebungen. Mach mal bitte ein

select user,host from mysql.user where user='fhemuser' or user='';
und poste die Ausgabe.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: betateilchen am 15 März 2024, 20:24:10Inzwischen greifen beide FHEM Installationen parallel mit MariaDB auf die Datenbank zu.

Funktioniert auch mit der socket-Verbindung, darauf hatte ich jetzt noch eine der Installationen umgestellt.

Und das icon hab ich jetzt auch  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Ich werde Wuppi mal bitten das Icon einzuchecken. Das pass eigentlich sehr gut für den Zweck.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Ich wünsche mir, diese icons auf Wunsch abschalten zu können und stattdessen Text-Links zu bekommen.
Diese icons durchbrechen an dieser Stelle meines Erachtens jeglichen vorhandenen Standard.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

ZitatIch wünsche mir, diese icons auf Wunsch abschalten zu können und stattdessen Text-Links zu bekommen.
Mach ich.

ZitatDiese icons durchbrechen an dieser Stelle meines Erachtens jeglichen vorhandenen Standard.
Naja, man kann ja auch mal ein wenig neuen Pep ins Spiel bringen ... warum auch nicht...
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Die Version im contrib ist upgedated.
Die Klick-Links sind als Icons oder Text (Attribut headerLinks) umschaltbar. Die Textsprache ist von
der globalen Einstellung 'language' abhängig gestaltet.
Die Schreibfehler in der Hilfe habe ich beseitigt.

LG,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

RalfRog

Zitat von: DS_Starter am 15 März 2024, 19:58:42Nein, da gibt es normal ein Icon. Schau ich nochmal ob es das in den ausgelieferten Icons evtl. nicht gibt.
Ok, dass das ein ICON-Name ist darauf bin ich jetzt nicht gekommen.


Da localhost mit mySQL geht aber mit MariaDB nicht:
Conf-Zeile: connection => "mysql:database=fhem;host=localhost;port=3306",
024.03.15 19:19:05.359 2: DBLogging - ERROR: DBI connect('database=fhem;host=localhost;port=3306','fhemuser',...) failed: Connection error: port cannot be specified when host is localhost or embedded at ./FHEM/93_DbLog.pm line 2558.
Daher bin ich aufgrund der Meldung und nochmal überlegen hingegangen und habe mit der Loopbackadresse versucht, damit geht es. ;D   bei beiden Connection-Typen
Conf-Zeile: connection => "mysql:database=fhem;host=127.0.0.1;port=3306",
Du hast gleich die IP drin, daher fällt es nicht auf.
Zitat von: DS_Starter am 15 März 2024, 20:33:57@RalfRog,
hier meine cfg zum Vergleich

      connection => "MariaDB:database=fhemtest1;host=192.168.2.44;port=3306",
....

Zum Hinweis:
Zitat von: betateilchen am 15 März 2024, 20:43:45
ZitatERROR: DBI connect('database=fhem;host=localhost;port=3306','fhemuser',...) failed: Connection error: port cannot be specified when host is localhost or embedded
Das ist ein uraltes Problem in mysql Umgebungen. Mach mal bitte ein
select user,host from mysql.user where user='fhemuser' or user='';und poste die Ausgabe.

In der mySQL Umgebung gab es ja kein Problem. Hier aber das Ergebnis:
MariaDB [(none)]> select user,host from mysql.user where user='fhemuser' or user='';
+----------+------+
| User     | Host |
+----------+------+
| fhemuser | %    |
+----------+------+
1 row in set (0.172 sec)
Bedeutet "%" nicht, dass der User von jedem Host zugelassen ist?
Kommando dazu in der "db_create_mysql.sql" => <CREATE USER 'fhemuser'@'%' IDENTIFIED BY 'fhempassword';>

Scheint, dass "DBD::MariaDB" etwas anders macht  ???
Ist das Thema Port vielleicht der Hinweis?
Connection error: port cannot be specified when host is localhost
Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

DS_Starter

Moin Ralf,

habe ein bisschen gegoogelt und bin inzwischen der Meinung der MariaDB Treiber setzt das richtig um und der MySQL Treiber müsste 'eigentlich' auch den Fehler bringen.

Auf der MySQL Seite https://dev.mysql.com/doc/refman/5.7/en/connecting.html findet man:

ZitatClient programs determine what type of connection to make as follows:

    * If the host is not specified or is localhost, a connection to the local host occurs:

        * On Windows, the client connects using shared memory, if the server was started with the shared_memory system variable enabled to support shared-memory connections.

        * On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs: the client connects using a Unix socket file. The --socket option or the MYSQL_UNIX_PORT environment variable may be used to specify the socket name.

    * On Windows, if host is . (period), or TCP/IP is not enabled and --socket is not specified or the host is empty, the client connects using a named pipe, if the server was started with the named_pipe system variable enabled to support named-pipe connections. If named-pipe connections are not supported or if the user making the connection is not a member of the Windows group specified by the named_pipe_full_access_group system variable, an error occurs.

    * Otherwise, the connection uses TCP/IP.

Das heißt, ist localhost angegeben, geht der Client nicht über IP Adresse und den angegebenen Port, sondern eine Socket-Verbindung wenn Linux eingesetzt wird. Der Port ist dem Fall obsolet.

Vermutlich geht es auch wenn du in der .conf den Port weglässt:

      connection => "MariaDB:database=fhemtest1;host=localhost",
....

Ich habe eine remote DB und kann das nicht probieren, wäre aber logisch.

Siehe auch: https://stackoverflow.com/questions/50160128/why-wont-mysql-client-use-the-port-i-specify

ZitatOk, dass das ein ICON-Name ist darauf bin ich jetzt nicht gekommen.
Das Icon wird heute per Update ausgeliefert.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

ZitatDas heißt, ist localhost angegeben, geht der Client nicht über IP Adresse und den angegebenen Port, sondern eine Socket-Verbindung wenn Linux eingesetzt wird. Der Port ist dem Fall obsolet.

Dann wäre es aber doch sinnvoller, gleich die Socket-Variante in der .conf anzugeben?

(An der user-Konfiguration liegt es jedenfalls nicht, da müsste das Ergebnis aus der mysql.users anders aussehen)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

ZitatDann wäre es aber doch sinnvoller, gleich die Socket-Variante in der .conf anzugeben?
Da hast du auf jeden Fall Recht.
Ich wollte an dieser Stelle nur eine Erklärung für das Verhalten finden und verifizieren ob es so zutrifft.
Wenn Ralf den Test bestätigen kann passt es m.M. nach.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: DS_Starter am 16 März 2024, 09:05:42Ich wollte an dieser Stelle nur eine Erklärung für das Verhalten finden und verifizieren ob es so zutrifft.

Hm... hier die Ausgabe aus dem Hamburger:

connection => MariaDB:database=fhem;host=localhost;port=3306
Funktioniert bei mir problemlos. Eben extra umgebaut, um Deine Theorie zu testen.



Jetzt steht da wieder

connection => MariaDB:database=fhem;mariadb_socket=/run/mysqld/mysqld.sock
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Hmmm ...

Jetzt könnte man noch die Version von DBD::MariaDB mit Ralf vergleichen. Vllt. ergeben sich daraus Unterschiede.

Und wenn wenn du ";port=3306" weglässt, funktioniert es noch?
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

connection => MariaDB:database=fhem;host=localhost
Funktioniert hier auch ohne Portangabe.

ii  libdbd-mariadb-perl               1.21-3                         amd64        Perl5 database interface to the MariaDB/MySQL databases

ii  mariadb-client                    1:10.5.23-0+deb11u1            all          MariaDB database client (metapackage depending on the latest version)
ii  mariadb-client-10.5               1:10.5.23-0+deb11u1            amd64        MariaDB database client binaries
ii  mariadb-client-core-10.5          1:10.5.23-0+deb11u1            amd64        MariaDB database core client binaries
ii  mariadb-common                    1:10.5.23-0+deb11u1            all          MariaDB common configuration files
ii  mariadb-server                    1:10.5.23-0+deb11u1            all          MariaDB database server (metapackage depending on the latest version)
ii  mariadb-server-10.5               1:10.5.23-0+deb11u1            amd64        MariaDB database server binaries
ii  mariadb-server-core-10.5          1:10.5.23-0+deb11u1            amd64        MariaDB database core server files

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3347
Server version: 10.5.23-MariaDB-0+deb11u1 Debian 11
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Danke. Das war jetzt meine Erwartung dass es damit auch funktioniert.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

RalfRog

Ok da habt ihr schon kräftig rumgetestet.

Geht jetzt auch  ::)   mit localhost statt Loopback
connection => MariaDB:database=fhem;host=localhost;port=3306
Ich hatte heute Nacht nochmal ein "update" gemacht und danach deine "neue" Testversion eingespielt.
Welche der Aktionen dazu geführt hat, dass es nun geht weiss ich nicht.

Macht es Sinn nochmal zurück zu gehen und zu suchen?
An sich würde ich sagen: geht - alles gut!

Gruß Ralf

Edit, bin in den Versionen zurück:ii  libdbd-mariadb-perl                  1.21-3                           armhf        Perl5 database interface to the MariaDB/MySQL databases
ii  libmariadb3:armhf                    1:10.5.15-0+deb11u1              armhf        MariaDB database client library
ii  mariadb-client-10.5                  1:10.5.15-0+deb11u1              armhf        MariaDB database client binaries
ii  mariadb-client-core-10.5             1:10.5.15-0+deb11u1              armhf        MariaDB database core client binaries
ii  mariadb-common                       1:10.5.15-0+deb11u1              all          MariaDB common configuration files
ii  mariadb-server                       1:10.5.15-0+deb11u1              all          MariaDB database server (metapackage depending on the latest version)
ii  mariadb-server-10.5                  1:10.5.15-0+deb11u1              armhf        MariaDB database server binaries
ii  mariadb-server-core-10.5             1:10.5.15-0+deb11u1              armhf        MariaDB database core server files

Edit2, ohne Port geht auch
connection => MariaDB:database=fhem;host=localhost
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

DS_Starter

Hallo Ralf,

vielen Dank für deinen Einsatz. :)

Das passt alles soweit ich es sehe.
Wir können das Verhalten gut einschätzen und wissen auch wie MySQL/MariaDB mit der Angabe host=localhost umgeht.
Sollten User auf diese Fehlermeldung laufen, wissen wir dass man statt localhost besser gleich mit socket arbeiten kann.

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

RalfRog

Alles klar, danke dir mal sowieso für deine Arbeit.

Es hat mir dann doch keine Ruhe gelassen ob ich nicht doch was falsch gemacht habe - mit der Testversion vom 13.

Da im Prinzip mit der Version vom 15. (23.x Uhr) alle Varianten (mit/ohne Port - mit/ohne localhost) liefen - man also quasi bei einem lokalen DB-Server aufgrund der Defaults in den Confs von /etc/mysql/ fast nix falsch machen kann habe ich die vorherige Testversion (13.) wieder aktiviert und nach "shutdown restart" LOG:
Version vom 13.
*** connection => MariaDB:database=fhem;host=127.0.0.1;port=3306
2024.03.17 17:24:28.729 3: DBLogging - DB connection parameters are stored in SubProcess
2024.03.17 17:24:28.901 3: DBLogging - DB connection parameters are initialized in the SubProcess
2024.03.17 17:24:29.826 3: DBLogging - SubProcess connected to fhem

*** connection => MariaDB:database=fhem;host=localhost;port=3306
2024.03.17 17:29:33.583 3: DBLogging - Rereadcfg requested.
2024.03.17 17:29:33.592 3: DBLogging - new DB connection parameters are transmitted ...
2024.03.17 17:29:33.855 3: DBLogging - Database disconnected by request. Stored DB params in SubProcess were deleted.
2024.03.17 17:29:33.912 3: DBLogging - DB connection parameters are stored in SubProcess
2024.03.17 17:29:33.919 3: DBLogging - DB connection parameters are initialized in the SubProcess
*** dauert eine Weile... aber dann
2024.03.17 17:39:31.610 2: DBLogging - ERROR: DBI connect('database=fhem;host=localhost;port=3306','fhemuser',...) failed: Connection error: port cannot be specified when host is localhost or embedded at ./FHEM/93_DbLog.pm line 2558.

*** connection => MariaDB:database=fhem;host=localhost
2024.03.17 17:46:17.871 3: DBLogging - Rereadcfg requested.
2024.03.17 17:46:17.880 3: DBLogging - new DB connection parameters are transmitted ...
2024.03.17 17:46:18.066 3: DBLogging - Database disconnected by request. Stored DB params in SubProcess were deleted.
2024.03.17 17:46:18.131 3: DBLogging - DB connection parameters are stored in SubProcess
2024.03.17 17:46:18.138 3: DBLogging - DB connection parameters are initialized in the SubProcess
*** geht, schreibt in DB
2024.03.17 17:55:29.475 3: DBLogging - SubProcess connected to fhem

Scheint, dass da in der Testversion (13.) etwas war...  localhost ohne Port geht / mit Port nicht
Wie gesagt jetzt klappts fast egal was man vorgibt (wenn es nichts bewusst Falsches ist)

Also alles gut jetzt  ;)

Gruß Ralf

PS:
Setzt man besser auf die Socket-Verbindung statt Host:Port - oder ist es eigentlich egal?
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

betateilchen

Zitat von: RalfRog am 17 März 2024, 18:18:26Setzt man besser auf die Socket-Verbindung statt Host:Port - oder ist es eigentlich egal?

Wenn der Server und der Client auf dem gleichen Rechner laufen, würde ich immer die socket-Verbindung nehmen.
Und wenn man der Dokumentation glauben darf, macht das ja MariaDB selbst auch so, wenn man localhost angibt.

Bei mir laufen zwei FHEM auf die gleiche Datenbank - das Produktsystem greift von zuhause aus auf den Server in Irland zu, mein FHEM-Testsystem läuft in Irland auf dem gleichen Server. Deshalb habe ich zuhause host:port angegeben (mit einer echten Domain) und auf dem Testsystem ist die Verbindung über socket konfiguriert.

"Egal" ist es m.E. nicht. Bei Angabe der Socketverbindung erspart man sich halt die Fehlersuche bei Problemen mit localhost-Angaben. Vermutlich ist es hinsichtlich des Datanbankusers auch berechtigungstechnisch einfacher.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Hallo zusammen,

danke für euren konstruktiven Input und die ganzen Tests.
Werde die Version heute noch einchecken. Sollte doch noch etwas auftreten gibt es ja immer noch die Alternative des MySQL Treibers, bzw. muß man ja ohnehin bewußt den MariaDB Treiber wählen.
Die Templates im DbLog-contrib schaue ich mir auch an damit es keine Diskrepanzen gibt.

@betateilchen, da du eine DB bei einem Hyperscaler nutzt ... Interesse halber, hast du mal die Möglichkeit der Kommunikations-Kompression genutzt und wenn ja, konntest du irgendwelche Vorteile erkennen?

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: DS_Starter am 17 März 2024, 19:11:37@betateilchen, da du eine DB bei einem Hyperscaler nutzt ... Interesse halber, hast du mal die Möglichkeit der Kommunikations-Kompression genutzt und wenn ja, konntest du irgendwelche Vorteile erkennen?

Darüber hatte ich schon nachgedacht, aber mir ist kein Weg eingefallen, wie ich mögliche Vorteile erkennen sollte. Deshalb habe ich die Kompression bisher nicht genutzt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Im Produktivsystem habe ich jetzt die Kompression aktiviert.
Funktioniert, aber ich weiß eben nicht, wo ich einen Unterschied erkennen könnte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Es müßte meiner Meinung nach einen Geschwindigkeitsvorteil geben wenn größere Datenmengen übertragen werden müssen. In unserem Umfeld vermutlich nur wenn unfangreiche SVG-Plots aufgebaut werden müssen die den Transfer von entsprechenden Datenmengen benötigen (wenn man das überhaupt als viel Daten bezeichnen kann).
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

ok, dann werde ich nie einen Unterschied merken, bei mir werden plots maximal aus Daten der letzten drei Tage generiert.

Es gibt zwar ein Langzeitlog für eine spezielle Anforderung, aber das wird monatlich aufgeräumt, sodaß pro Tag nur ein einziger Wert in der Datenbank steht. Nur der vorherige und der laufende Monat sind in einer 10-Minuten Auflösung gelogged, auch das sind also keine großen Datenmengen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zwei Kleinigkeiten sind mir gerade aufgefallen:

ZitatUsed Perl version: 5.36.0
Used DBI (Database independent interface) version: 1.643
Used DBD (Database driver) version MariaDB: 1.22
Used DbLog version: 5.10.0
Automatic check of SVN DbLog version not possible: No such file or directory
Rating:
Recommendation: Try to solve the problem that has occurred. Compare your local DbLog version with the public version manually.

Wie versuchst Du eigentlich, die DbLog Version zu prüfen? Anders gefragt: welche Datei wird da nicht gefunden?

Und ich schaffe es nicht, den Index Report_Idx über DbRep anzulegen:

Can't use admin credentials for database access, see logfile !
Im Logfile steht aber gar nix...



Edit 1:

  • Den gewünschten Index habe ich jetzt manuell auf Datenbankebene angelegt.
  • Jetzt meckert der configCheck nur noch wegen der Versionsprüfung und
  • wegen fehlender plotfork Angaben in einigen FHEMWEB Instanzen (das werde ich aber nicht ändern).



Edit 2:

open (FD, "$root/FHEM/$ctrlFileName") or do { $msg = "Automatic check of SVN DbLog version not possible: $!";

Zum einen verstehe ich nicht, warum hier nicht mit FileRead() gearbeitet wird (dann käme direkt ein array als Ergebnis) und zum anderen liegt bei mir das FHEM-control_file nicht in $modpath/FHEM/ sondern in $modpath.

Das dürfte bei allen Anwendern der Fall sein, die ihr FHEM nicht über "update" aktualisieren, sondern z.B. direkt aus SVN.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Wegen dem Index:
DbRep prüft zur Anlage eines Index ob der normal verwendete DB-User die Rechte INDEX und ALTER hat, anderenfalls wird ein evtl. hinterlegter Admin-User verwendet. Problem-Hinweis kommt z.Zt. mit verbose 2.

ZitatZum einen verstehe ich nicht, warum hier nicht mit FileRead() gearbeitet wird (dann käme direkt ein array als Ergebnis) und zum anderen liegt bei mir das FHEM-control_file nicht in $modpath/FHEM/ sondern in $modpath.

Das dürfte bei allen Anwendern der Fall sein, die ihr FHEM nicht über "update" aktualisieren, sondern z.B. direkt aus SVN.
Ok. Ist natürlich ein guter Hinweis auch den $modpath als mögliche Ablage einzubeziehen.

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: betateilchen am 17 März 2024, 21:22:22zum anderen liegt bei mir das FHEM-control_file nicht in $modpath/FHEM/ sondern in $modpath.

Das dürfte bei allen Anwendern der Fall sein, die ihr FHEM nicht über "update" aktualisieren, sondern z.B. direkt aus SVN.

Inzwischen habe ich einen symbolischen Link in ./FHEM angelegt, der auf das control-file zeigt.
Jetzt bekomme ich zumindest eine andere Fehlermeldung, die aber logisch ist, weil das control-file erst morgen früh aktualisiert wird und erst dann die neue Version von 93_DbLog.pm kennt.

Bin gespannt, ob morgen früh dann diese Meldung auch noch verschwindet.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

ZitatBin gespannt, ob morgen früh dann diese Meldung auch noch verschwindet.
Davon bin ich überzeugt. ;)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Zitat von: betateilchen am 17 März 2024, 21:40:17Bin gespannt, ob morgen früh dann diese Meldung auch noch verschwindet.

Result of version check

Used Perl version: 5.36.0
Used DBI (Database independent interface) version: 1.643
Used DBD (Database driver) version MariaDB: 1.22
Used DbLog version: 5.10.0
Your local DbLog module is up to date.
Rating:
Recommendation: Update of DbLog is not needed.

Geht doch  8)

Mit der Lösung per symbolischem Link kann ich gut leben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

kask

Kurze Frage:
Ist es möglich mit addlog einen DB eintrag zu erzwingen obwohl die zu loggenden Readings im DbLogExclude sind (z.b. mit ".*") ?

Mit:
Zitat"set logdb addLog blahblubs:blahlala"

..kommt leider
Zitat"logdb - Device: "blahblubs", reading: ".*" excluded by attribute DbLogExclude from addLog !"

DS_Starter

ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

kask

Danke. Ja, wenn man es richtig macht funktioniert es. Der Fehler sitz vor dem Monitor.