DBLog - Historische Werte ausdünnen

Begonnen von C0mmanda, 14 September 2015, 18:38:21

Vorheriges Thema - Nächstes Thema

rapster

Zitat von: amithlon am 16 August 2016, 20:50:57
DbLogExclude .*state.*|.*consumption.*|.*powerMax.*
Du musst das nicht so kompliziert als eine zusammenhängende regex schreiben,
lass DbLog einfach mehere regexe daraus machen und schrieb die readings kommagetrennt:
DbLogExclude state,consumption,powerMax

rapster

Das sollte DbLogExclude umdrehen und ein Include daraus machen,
DbLogExclude (?!.*Max)(?!state)(.*)
sollte nur "state" und alle readings die mit "Max" enden loggen.

pc1246

Moin
Ich weiss, Ihr haltet mich fuer verrueckt, aber meine DB hat ca 21Mbyte. Ich wuerde die jetz auch gerne mal eindampfen, aber wie? Hab vorhin mal probehalber reducelog gestartet, aber zu sehen war nichts. (RPI2) Wie kriege ich die am einfachsten klein, und dann wieder mit fhemverheiratet?
Gruss Christoph
P.S.: Ich bin ein echter NOOB was Datenbanken und Befehle angeht!
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

dev0

Wenn Du mysql/innodb verwendest und es dir darum geht, dass die Datei(en) kleiner werden, dann geht das mWn nur über dump - löschen - restore:
http://dev.mysql.com/doc/refman/5.5/en/innodb-resize-system-tablespace.html

Auch ein optimize hilt nicht, im Gegenteil sogar.

pc1246

Moin
Sorry, ich hatte keine Zeit!
Ich moechte eigentlich reducelog ausfuehren, allerdings gerne ohne dass fhem so lange steht! Deshalb DB-Kopie nehmen (sqlite) einschrumpfen, und dann fhem wieder unterjubeln!
Ich weiss leider auch nicht wie ich mir die DB auf dem RPI ansehen kann! Ich habe zwar einen DB-Browser, aber wie verbinde ich den mit der DB auf dem RPI?
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

amithlon

Hallo,

Zitat von: pc1246 am 04 September 2016, 13:36:14
Ich weiss leider auch nicht wie ich mir die DB auf dem RPI ansehen kann! Ich habe zwar einen DB-Browser, aber wie verbinde ich den mit der DB auf dem RPI?

Mein Versuch mit einem DB-Browser unter Windows hat zumindest dafür gesorgt, daß die Datenbank auf dem Pi danach kaputt war...
Muß irgendeine Einstellung der Zeichencodierung gewesen sein, die ich übersehen hatte.

Auf dem Pi per Telnet mit
sudo sqlite3 /opt/fhem/fhem.db
den sqlite-Client öffnen und sich dort auszutoben war dann für mich sicherer...

Man kann natürlich eine Kopie woanders anlegen und dort rumspielen.

Gruß aus Berlin
Michael

Sailor

#216
Ein herzerfrischendes "Moin" vom "hintern Deich" vorweg!

Einen Wunsch an das DbLog - Modul hätte ich da noch:

Ich hätte gerne ein Reading mit dem Namen DbFileSize welches mir in Byte die Größe der Datei anzeigt.

Das Reading sollte nur kurz vor und kurz nach dem "ReduceLog" bzw. zu "sinnigen" Zeiten aktualisiert werden.


Dann kann man wunderschön die Größe der db-Datei plotten und sehen, inwieweit die Datei aus dem Ruder läuft bzw. wieder schrumpft.

Code-Idee

Filesize($)
{
   my $FileName = @_;
   my $Filesize = -s $FileName;
}


Gruss
    Sailor
******************************
Man wird immer besser...

rapster

#217
Hi Sailor,

ein simples userReading sollte das tun, z.B. in MB:
attr dbLog userReadings DbFileSize:lastReduceLogResult.* { (split(' ',`du -m dbLog.db`))[0] }

Sailor

Hi Rapster

Zitat von: rapster am 05 September 2016, 14:13:39
ein simples userReading sollte das tun, z.B. in MB:
attr dbLog userReadings DbFileSize:lastReduceLogResult { (split(' ', `du -m dbLog.db`))[0]}

Man bist Du schnell!  ;)

OK, jetzt muss ich mir nur einfallen lassen, wie ich den Pfad hinter der Dateigröße loswerde, und schon haben wir es.
Ich denke aber "du-b" ist die Byte-Variante.

Gruß
    Sailor
******************************
Man wird immer besser...

rapster

probiers nochmal aus, habs bischen modifiziert, jetzt steht nurnoch die größe da :-)

kleineslichtHH

mir hat es auch gerade geholfen, vielen Dank :-)

pc1246

So, jetzt habe ich die DB erst mal kopiert. Aber es sind nicht 21 MB sondern 21 GB. Ich wusste gar nicht, dass ich so eine grosse SD-Karte gesteckt hatte!
Jetzt will ich mal sehen, ob ich das irgendwie halbwegs vernuenftig zusammenschrumpfen kann!
Wie lange wuerde das denn auf einem RPI 2 dauern? Nachts brauche ich den ja nicht!
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Sailor

Moin PC

Zitat von: pc1246 am 05 September 2016, 23:24:40
So, jetzt habe ich die DB erst mal kopiert. Aber es sind nicht 21 MB sondern 21 GB. Ich wusste gar nicht, dass ich so eine grosse SD-Karte gesteckt hatte!

Tja ich habe zwangsweise vor 3 Tagen eine Radikalschrumpfkur machen müssen: Nach Stromausfall war nix mehr mit fhem.db.
Und auf das alte Backup wollte nicht.  :'(

So habe ich von Null angefangen und werde die wichtigen Daten irgendwie von aus der alten DB in die Neue kopieren müssen.  >:(

Gruß
   Sailor

******************************
Man wird immer besser...

Tedious

Ich hatte das glaube ich schon mal irgendwo geschrieben... ich mache das monatsweise, der Zeitraum lässt sich ja nach Gusto definieren. Bei mir MySQL auf einem externen Win-Rechner, wenn Du MySQL auf dem RPI nutzt kannst Du z.B. mit HeidiSQL drauf zugreifen.

Ich schicke ein Select auf den Zeitraum (z.B. August, jetzt Anfang September):

select * from fhem.history where Timestamp between '2016-08-01' and '2016-08-31'

Die Ergebnisse exportiere ich als SQL-INSERTS in eine entsprechende Datei (z.B. Aug16.SQL)

Denn lösche ich die Datensätze raus

select * from fhem.history where Timestamp between '2016-08-01' and '2016-08-31'

anschließend noch ein Optimize

Zitatoptimize table fhem.history

fertig. Hält meine DB schlank, <60Mb. Wenn ich historische Daten brauche kann ich die jederzeit wieder importieren. Kannst natürlich auch einengen, wenn Du für Jahresüberblicke z.B. Temperaturwerte brauchst:

select * from fhem.history where Timestamp between '2016-08-01' and '2016-08-31' and Device not like 'LaCrosse_2A'

Würde alle Geräte außer dem TempSensor LaCrosse_2A selektionieren (und bei analogem Handeln exportieren und löschen).

Aber: alleine ein optimize table düfte deine DB geschätzt um 30-40% schrumpfen!
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

Sailor

Hallo Tedious

Zitat von: Tedious am 06 September 2016, 09:35:55
Die Ergebnisse exportiere ich als SQL-INSERTS in eine entsprechende Datei (z.B. Aug16.SQL)

Ich bin eine absolute Niete bezüglich SQL daher meine Frage:

Wenn ich theoretisch eine zweite DbLog Datei in fhem öffnen würde, kann ich die Daten mittels Usercommand diverse Datensätze (Readings) von fhem_old.db nach fhem.db verschieben?

Gruß
    Sailor
******************************
Man wird immer besser...