Hallo,
ich habe Probleme beim reduce der Datensätze.
Fhem läuft auf RPI3 mit SSD.
Die Datenbank liegt auf der NAS.
Daten werden auf schön geloggt.
Aber der reduce bzw. der reduceLogNbl weisen Fehler auf.
Wenn ich die mysql lokal auf dem RPI nutze, funktioniert es.
Hat einer Idee woran es liegt?
NAS Ressourcen sind OK. Genug Platz auf der Platte, RAM + CPU ist auch nicht am Anschlag.
2018.08.26 22:27:20 3: DbLog myDbLog: reduceLog requested with DAYS=1
2018.08.26 22:27:38 1: PERL WARNING: DBD::mysql::st execute failed: Error writing file '/tmp/MYljSo7C' (Errcode: 28 "No space left on device") at ./FHEM/93_DbLog.pm line 3911.
2018.08.26 22:27:38 3: DbLog myDbLog: reduceLog executed. Rows processed: 0, deleted: 0, time: 18.00sec
2018.08.26 22:43:52 3: DbLog myDbLog: reduceLogNbl requested with DAYS=90, AVERAGE=HOUR
2018.08.26 22:44:23 2: DbLog myDbLog -> DbLog_reduceLogNbl - DBD::mysql::st execute failed: Error writing file '/tmp/MYzPeSQJ' (Errcode: 28 "No space left on device") at ./FHEM/93_DbLog.pm line 4205.
MySQL/MariaDB verwendet für bestimmt Datenbankoperation temporären Speicherplatz auf TEMPDIR.
Wo das ist bestimmt eine Servervariable in my.cnf:
tmpdir = <Dir>
Bei dir ist (wie auf Synology üblich) die Variable auf /tmp eingestellt und dort ist der Platz aufgebraucht. Hat nichts damit zu zu tun dass auf dem NAS auf dem Uservolume noch genügend Platz ist.
Die Variable findest du auch wenn du in einem DbRep-Device ein "get ...dbvars" ausführst (VAR_tmpdir = /tmp).
Lösungsansätze sind meiner Meinung nach folgende:
1. die Datenmenge für ReduceLog reduzieren durch Angabe eines höheren DAY-Wertes (Werte älter als x days bearbeiten).
2. dem MariaDB Server ein anderes TEMPDIR zuweisen wo definitiv viel Platz vorhanden ist. Vorgehensweise ist z.B. hier https://stackoverflow.com/questions/11990887/changing-the-tmp-folder-of-mysql beschrieben.
Achtung, auf Synology gibt es Besonderheiten. Die persönlich anpassbare my.cnf befindet sich abhängig von der Version in /var/packages/MariaDB/etc/my.cnf oder /var/packages/MariaDB10/etc/my.cnf , oder kann dort erstellt werden weil sie in die Standard-cnf inkludiert wird. Wird die Standardkonfigurationsdatei geändert, wird diese bei einem DSM-Update u.U. überschrieben.
Damit die Variablenänderung zieht muss MariaDB oder die NAS restarted werden.
Bisschen goggeln wenn du dir vorher etwas Infos dazu verschaffen willst.
Nachsatz: Auf root (und damit /tmp) kann der Platz auch temporär knapp werden wenn du dir ein DSM-Update runtergeladen aber noch nicht installiert hast.
Grüße
Heiko