FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: thburkhart am 11 Dezember 2022, 11:38:16

Titel: [gelöst]DbLog steigt nach ein paar Sekunden aus
Beitrag von: thburkhart am 11 Dezember 2022, 11:38:16
Nach einiger Zeit läuft meine MariaDB endlich wieder.
Beim Config-Check ist alles ok

In FHEM kommt allerdings nach ein paar Sekunden die Fehlermeldung

DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
das finde ich im logfile x mal.

Starte ich FHEM neu ist es wieder für ein paar Minuten ok.

das ist das dblog Listing:
nternals
COLUMNS
field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION
./configDB.conf
DEF
./configDB.conf .*:(temperature|humidity).*
FUUID
6395a74c-f33f-fd5f-bf68-e3ca20a9e2cee3df
FVERSION
93_DbLog.pm:v4.13.3-s26750/2022-11-26
MODE
asynchronous
MODEL
MYSQL
NAME
dblog_THB
NR
244
NTFY_ORDER
50-dblog_THB
PID
27535
REGEXP
.*:.*
STATE
DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
TYPE
DbLog
UTF8
0
dbconn
mysql:database=fhem;host=localhost;port=3306
dbuser
fhemuser
eventCount
89
Readings
CacheOverflowLastNum
0
2022-12-11 11:33:23
CacheOverflowLastState
normal
2022-12-10 23:54:09
CacheUsage
46463
2022-12-11 11:33:23
NextSync
2022-12-11 11:32:53 or if CacheUsage 5000000 reached
2022-12-11 11:32:23
state
DBD::mysql::st execute failed: Lost connection to MySQL server during query at ./FHEM/93_DbLog.pm line 2698.
2022-12-11 11:32:23
dblog_THB
room
xDBLog
Attributes
DbLogType
History,frontend
deleteattr
alias
dblog_THB
deleteattr
asyncMode
1
deleteattr
bulkInsert
1
deleteattr
cacheLimit
5000000
deleteattr
event-min-interval
state:600
deleteattr
room
xDBLog
deleteattr
syncInterval
30
deleteattr
verbose
2
deleteattr
Probably associated with




wie kann ich denn die dblog neu initialisieren?

vielen Dank für Hilfe

Thomas

Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: CoolTux am 11 Dezember 2022, 12:12:52
Dü hast ./configDB.conf als Konfigfile für dblog angegeben.
Du solltest vielleicht eine dblog Konfig wählen.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: DS_Starter am 11 Dezember 2022, 12:22:21
Hallo Thomas,

neuinitialiseren geht einfach per "set ... reopen" oder FHEM Restart.

Aber ... das ist nicht dein Problem.
Wahrscheinlich ist es ein Folgefehler. Der MySQL-Server baut die Verbindung während der Operation ab.
Das wiederum könnte mit der Menge der übertragenenen Daten zusammenhängen, du überträgst immerhin einen Cache mit 46463 Einträgen.

Es gibt einen Serverparameter max_allowed_packet welcher in der my.cnf angepasst werden kann:
https://mariadb.com/docs/server/ref/mdb/system-variables/max_allowed_packet/

Wo findet man die my.cnf ? -> https://stackoverflow.com/questions/2482234/how-do-i-find-the-mysql-my-cnf-location

Weiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.
Du könntest das Attr "commitMode=ac:on_ta:off" und das Attr bulkInsert=0 setzen.

Schau dir auch gerne die neue DbLog Version 5.X an die bald ausgerollt wird. -> https://forum.fhem.de/index.php/topic,130588.0.html

LG und einen schönen 3. Advent,
Heiko

PS: einen schönen Gruß an CoolTux  :)
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: betateilchen am 11 Dezember 2022, 12:41:21
Zitat von: CoolTux am 11 Dezember 2022, 12:12:52
Dü hast ./configDB.conf als Konfigfile für dblog angegeben.
Du solltest vielleicht eine dblog Konfig wählen.

Solange die in der Konfigurationsdatei enthaltenen Verbindungsparameter korrekt sind, darf die Datei für DbLog heißen, wie sie möchte. Prinzipiell also auch "guenther.conf" oder "freitag.wochenende"
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: betateilchen am 11 Dezember 2022, 12:46:18
Zitat von: DS_Starter am 11 Dezember 2022, 12:22:21
Weiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.

Vielleicht...

cacheLimit 5000000

...würde es auch schon helfen, das cacheLimit auf einen vernünftigen Wert zu reduzieren?
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 12:50:57
Lieber Heiko,

erst mal danke für deine ausführlichen Hinweise.

Zitat
neuinitialiseren geht einfach per "set ... reopen" oder FHEM Restart.

Ich meinte, wie man die DbLog leert.

ZitatEs gibt einen Serverparameter max_allowed_packet welcher in der my.cnf angepasst werden kann:
https://mariadb.com/docs/server/ref/mdb/system-variables/max_allowed_packet/

in meiner my.cnf
steht bislang folgendes:
#
# This group is read both by the client and the server
# use it for options that affect everything
#
[client-server]
# Port or socket location where to connect
# port = 3306
socket = /run/mysqld/mysqld.sock

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

wie passe ich an?

ZitatWeiterhin ist es ungewöhnllich dass sich in so kurzer Zeit der Cache derart aufbaut. Es scheint Daten zu geben die den Insert verhindern.
Du könntest das Attr "commitMode=ac:on_ta:off" und das Attr bulkInsert=0 setzen.

das habe ich mal gemacht...

nun bekomme ich:


DBD::mysql::st execute_array failed: MySQL server has gone away [err was 2006 now 2000000000]
executing 23 generated 23 errors at ./FHEM/93_DbLog.pm line 2909.


Da ich ja eh mit einer blanken Datenbank starten möchte, bietet sich ja die die neue DbLog Version 5.X geradezu zum Test an :-)

was muss ich dazu machen?

Herzliche Grüße

Thomas










Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 12:53:53
Zitat von: betateilchen am 11 Dezember 2022, 12:46:18
Vielleicht...

cacheLimit 5000000

...würde es auch schon helfen, das cacheLimit auf einen vernünftigen Wert zu reduzieren?

das hatte ich schon selbst bemerkt und mit dem  hohen Wert als Laie den Fehler zu korrigieren versucht
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: DS_Starter am 11 Dezember 2022, 13:02:09
Zitat
Ich meinte, wie man die DbLog leert.
set ... purgeCache

Zitat
wie passe ich an?
Der Server inkludiert die Verzeichnisse

              # Import all .cnf files from configuration directory
              !includedir /etc/mysql/conf.d/
              !includedir /etc/mysql/mariadb.conf.d/

In diesen Verzeichnissen stehen evtl. auch noch .cnf Dateien die du dir anschauen solltest.
Wenn der Parameter max_allowed_packet nirgendwo zu finden ist, bietet es sich an z.B. eine my.cnf in einem der inkludierten Verzeichnisse anzulegen und dort eigene Einstellungen zu hinterlegen, z.B.


[mysqld]
max_allowed_packet = 1M


Zitat
nun bekomme ich:...
execute_array failed: MySQL server has gone away
Das bestätigt meine Einschätzung einer zu großen übertragenen Datenmenge.

Zitat
Da ich ja eh mit einer blanken Datenbank starten möchte, bietet sich ja die die neue DbLog Version 5.X geradezu zum Test an :-)

was muss ich dazu machen?
Wenn Fragen dazu sind, am Besten in dem anderen Thread.
Du lädst die Version aus meinem contrib  (siehe Fußtext)  mit dem Downloadbutton herunter und startest danach FHEM neu.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 13:02:28
wenn ich FHEm stoppe
komme ich mit phpMyAdmin wieder auf die FHEM Db

Strukturhistory
Spalten

SpalteDEVICE (MUL, varchar, NULL, nullable)
SpalteEVENT (varchar, NULL, nullable)
SpalteREADING (varchar, NULL, nullable)
SpalteTIMESTAMP (MUL, timestamp, curren...)
SpalteTYPE (varchar, NULL, nullable)
SpalteUNIT (varchar, NULL, nullable)
SpalteVALUE (varchar, NULL, nullable)


Die Spalten sind doch ok?
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: DS_Starter am 11 Dezember 2022, 13:05:31
Wenn du dir unsicher bist und sowieso neu anfängst, dann lösche doch deine DB und benutze zur Einrichtung die bereitgestellten Scripte.
Auszug aus DbLog Hilfe:

...
Beispielcode bzw. Scripts zum Erstellen einer MySQL/PostgreSQL/SQLite Datenbank ist im SVN -> contrib/dblog/db_create_<DBType>.sql enthalten.
(Achtung: Die lokale FHEM-Installation enthält im Unterverzeichnis ./contrib/dblog nicht die aktuellsten Scripte !!)
...
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 13:09:51
ZitatCode: [Auswählen]
[mysqld]
max_allowed_packet = 1M

kann ich also direkt in der "Haupt" my.cfg machen ?

ZitatDas bestätigt meine Einschätzung einer zu großen übertragenen Datenmenge.

Da stellt sich nun die Frage, woher die vielen Daten kommen, ich habe ca. 30 LaCrosse, die das liefern
Attributes
IODev
JLLaCR
deleteattr
alexaName
Temp 00 aussen Süd Terrasse TFA
deleteattr
alias
Temp 00 aussen Süd Terrasse TFA
deleteattr
doAverage
1
deleteattr
event-min-interval
humidity:7200,temperature:7200
deleteattr
event-on-change-reading
battery
deleteattr
event-on-update-reading
humidity,state,temperature
deleteattr
genericDeviceType
thermometer
deleteattr
group
Temperatur und Feuchtigkeit,Temperatur und Feuchtigkeit aussen
deleteattr
room
Terrasse,LaCrosse,Temperaturen Aussen
deleteattr
userReadings
Temp: temperature [C] Hum: humidity [%]
deleteattr


also gefiltert

Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: DS_Starter am 11 Dezember 2022, 13:12:11
Zitat
kann ich also direkt in der "Haupt" my.cfg machen ?
Würde ich nicht tun.
Oftmals ist es so, dass bei einem Paketupdate der MySQL/MariaDB diese my.cfg mit den ausgelieferten Defaults überschrieben wird und deine Änderungen verloren gehen.
Zum Testen geht das natürlich.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 13:16:51
es geht leider nicht damit

also DB neu aufsetzen mit neuer Version
ich berichte dann
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: DS_Starter am 11 Dezember 2022, 13:20:35
Ein Blick mit listCache offenbart manchmal die üblichen Verdächtigen ... non-ASCII Zeichen welche die DB sich weigert zu speichern.

Das Attr "useCharfilter=1" hilft in solchen Fällen nur ASCII Zeichen durchzulassen.
Gibt noch mehr Möglichkeiten, aber das ist vermutlich die schnellste in diesen Fällen.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 13:37:55
74 => 2022-12-11 13:35:11|Temp1|FHEMPY|humidity_value: 75.0|humidity_value|75.0|%
75 => 2022-12-11 13:35:11|Temp1|FHEMPY|humidity_value: 75.0|humidity_value|75.0|%
76 => 2022-12-11 13:35:15|TX29DTH_22|LACROSSE|temperature: 6.3|temperature|6.3|
77 => 2022-12-11 13:35:15|TX29DTH_22|LACROSSE|humidity: 54|humidity|54|%
78 => 2022-12-11 13:35:18|Wohnzimmer_WT|MAX|temperature: 20.8|temperature|20.8|\xB0C
79 => 2022-12-11 13:35:31|TX29DTH_22|LACROSSE|temperature: 6.3|temperature|6.3|
80 => 2022-12-11 13:35:31|TX29DTH_22|LACROSSE|humidity: 54|humidity|54|%

hmm sehe als Laie nix Verdächtiges ...
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 13:46:09
Zitat von: CoolTux am 11 Dezember 2022, 12:12:52
Dü hast ./configDB.conf als Konfigfile für dblog angegeben.
Du solltest vielleicht eine dblog Konfig wählen.

diesem Hinweis bin ich nun endlich auch gefolgt und habe nun:

CONFIGURATION
./configDB.conf
DEF
./configDB.conf .*:(temperature|humidity).*


die Datei enthält ja:
%dbconfig= (
    connection => "mysql:database=fhem;host=db;port=3306",
    user => "root",
    password => "xxxxxxxx",
);

oder muss der User "fhemuser" sein?

Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: betateilchen am 11 Dezember 2022, 13:53:26
Zitat von: thburkhart am 11 Dezember 2022, 13:46:09
diesem Hinweis bin ich nun endlich auch gefolgt und habe nun:

hast Du den Hinweis überhaupt verstanden?

Die Verbindung zu Deiner Datenbank war doch wohl bisher gar nicht das Problem.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 15:09:04
offensichtlich nicht ;
meine Einstellung ist also in Ordnung mit user  "fhemuser" oder "root" ????
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: betateilchen am 11 Dezember 2022, 18:28:35
Zitat von: thburkhart am 11 Dezember 2022, 15:09:04
offensichtlich nicht ;
meine Einstellung ist also in Ordnung mit user  "fhemuser" oder "root"

Naja, ich sag mal so...
Wenn Du hier (aus einem anderen Beitrag von Dir)

GRANT SELECT, INSERT, DELETE, UPDATE ON `fhem`.* TO 'fhemuser'@'%';

dem Benutzer fhemuser Rechte zuweist, solltest Du den gleichen Benutzer logischerweise auch in den Verbindungsdaten (Konfigurationsdatei zu DbLog) verwenden.
Titel: Antw:DbLog steigt nach ein paar Sekunden aus ..- DBD::mysql::st execute failed:Lost c
Beitrag von: thburkhart am 11 Dezember 2022, 20:04:08
danke!

läuft   inzwischen dank Eurer Hilfe wie geschmiert

Die Datenbank war mit ein paar Millionen Einträgen wohl deutlich überschwemmt