FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thomas41587 am 17 April 2020, 11:52:58

Titel: DbLog - reduceLog abbrechen ohne Datenbank zu zerstören?
Beitrag von: Thomas41587 am 17 April 2020, 11:52:58
Hallo zusammen,
bei mir haben sich ~71mio Einträge in der Datenbank gesammelt, da ich nicht dran gedacht habe, meinen DbLog einzuschränken. ReduceLog läuft jetzt seit ~5h und wenn man sich im Log die Geschwindigkeit anschaut, dann dürfte die Aktion noch weitere 29h laufen.
Wie kann ich diesen Vorgang "sicher" abbrechen, ohne mir die Datenbank oder gar fhem zu zerschiessen?
Falls es was zur Sache tun sollte: sowohl die Datenbank als auch fhem laufen als Docker Container.
Titel: Antw:DbLog - reduceLog abbrechen ohne Datenbank zu zerstören?
Beitrag von: DS_Starter am 17 April 2020, 15:11:18
Nutzt du MySQL/MariaDB ?

Wenn ja -> DbRep Device benutzen und

get <device> procinfo

aufrufen. Du siehst dann eine Tabelle wie diese mit der Spalte ID


ID USER HOST                   DB CMD TIME_Sec STATE INFO PROGRESS
41218 fhem fhem.myds.me:38076 fhem Query 8 Sending data SELECT TIMESTAMP,VALUE, if(VALUE-@V < 0 OR @RB = 1 , @diff:= 0, @diff:= VALUE-@V ) as DIFF, @V:= VALUE as VALUEBEFORE, @RB:= '0' as RBIT FROM history where ( DEVICE = 'eg.flur.server_Pwr' ) AND ( READING = 'energyCalcKwh' ) AND TIMESTAMP >= '2017-05-01 00:00:00' AND TIMESTAMP <= '2020-04-17 15:01:09' ORDER BY TIMESTAMP 0
41219 fhem fhem.myds.me:38082 fhem Query 8 Sending data SELECT TIMESTAMP,VALUE, if(VALUE-@V < 0 OR @RB = 1 , @diff:= 0, @diff:= VALUE-@V ) as DIFF, @V:= VALUE as VALUEBEFORE, @RB:= '0' as RBIT FROM history where ( DEVICE = 'eg.az.fridge_Pwr' ) AND ( READING = 'energyCalcKwh' ) AND TIMESTAMP >= '2016-06-01 00:00:00' AND TIMESTAMP <= '2020-04-17 15:01:10' ORDER BY TIMESTAMP 0
41221 fhem fhem.myds.me:38104 fhem Query 0 show full processlist


Die ID mit der passenden Laufzeit (falls es mehrere gibt) nimmst du und führtst im DbRep damit aus:

set <dev> sqlCmd kill <ID>

Damit bricht das laufende Statement ab und die aktuelle Änderung wird zurück gerollt. Im DbLog gibt es eine Fehlermeldung.
Dabei geht auch nichts kaputt.

HINWEIS: grundsätzlich sollte man immer eine valide Sicherung der DB und FHEM haben.

Aber davon abgesehen würde ich reduceLog weiter laufen lassen. Stört doch nicht sofern reduceLogNbl genutzt.
Es gibt das auch generell non-blocking im DbRep.

Grüße,
Heiko