FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Morgennebel am 16 April 2019, 12:16:34

Titel: DbLog ReduceLogNbl: No space left on device
Beitrag von: Morgennebel am 16 April 2019, 12:16:34
Moin Moin,


ich möchte mein FHEM konsolideren - dazu gehört auch ein DBLog-Server. Der ist leider auf 8.5 GByte angewachsen und sprengt damit die Größe der neuen Partition. Aber genau dafür gibt es ja reduceLogNbl...

Daher habe ich reduceLogNbl 365 aufgerufen. Das läuft einige Zeit und meldet dann:
   
DBD::mysql::st execute failed: Error writing file '/tmp/MYUsy4Oj' (Errcode: 28 "No space left on device") at ./FHEM/93_DbLog.pm line 4302.

obwohl

root@vm-sql:~# df -h /tmp/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        22G  1.2G   20G   6% /


noch 20 GByte frei sind...? Wie kann ich die DBLog noch reduzieren...?

Danke, -MN
Titel: Antw:DbLog ReduceLogNbl: No space left on device
Beitrag von: DS_Starter am 16 April 2019, 14:21:14
Du könntest die Datenmenge reduzieren indem du mehrere Läufe machst und jeden Lauf in dem behandelten Zeitintervall beschränkst oder nur bestimmte Devices behandelst.
Um das zu tun benutze bitte das reduceLog im DbRep. Das ist ebenfalls non-blocking.

Grüße,
Heiko
Titel: Antw:DbLog ReduceLogNbl: No space left on device
Beitrag von: yersinia am 16 April 2019, 15:25:15
Wie DS_Starter schreibt, den Zeitraum eingrenzen, das könnte man dann auch Jahrweise machen - zum Beispiel reduceLogNbl 365:730 für den Zeitraum zwischen -730 und -365 Tage von heute.

Zitatset <name> reduceLogNbl <no>[:<nn>] [average[=day]] [exclude=device1:reading1,device2:reading2,...]
Reduziert historische Datensätze, die älter sind als <no> Tage und (optional) neuer sind als <nn> Tage auf einen Eintrag (den ersten) pro Stunde je Device & Reading.
(https://fhem.de/commandref_DE.html#DbLog)

Kurze Frage für mein Verständnis: ist in diesem Fall dann DbRep vorzuziehen und wenn ja, warum? Wo ist der Vorteil gegenüber DbLog?
Titel: Antw:DbLog ReduceLogNbl: No space left on device
Beitrag von: DS_Starter am 16 April 2019, 15:39:33
Die technische Umsetzung ist in beiden Fällen gleich bzw ähnlich.
Im Dbrep hat man durch die time* Attribute eine feinere Zeiteingrenzungsmöglichkeit und das Attribut valueFilter kann zusätzlich Werte der Datensätze filtern sofern benötigt.
Die Devices kann man in DbRep auch über devspec abgrenzen was zusätzliche Möglichkeiten bietet.

Grüße,
Heiko
Titel: Antw:DbLog ReduceLogNbl: No space left on device
Beitrag von: Morgennebel am 16 April 2019, 15:54:05
Danke,


das hat geklappt (dauert nur lang). Auf der Platte ist das MariaDB-Verzeichnis aber noch gleich gross - muss ich da noch mit "OPTIMIZE TABLE" ran...?

Danke, -MN
Titel: Antw:DbLog ReduceLogNbl: No space left on device
Beitrag von: DS_Starter am 16 April 2019, 15:57:42
Ja musst du, erst dann wird Plattenplatz freigegeben. Das könntest du im DbRep im Attribut executeAfterProc hinterlegen und automatisch nach dem reduce ausführen lassen. Gibt ein set Kommando dafür, set ... optimizeTables.