Modul 93_DbRep - Reporting und Management von Datenbankinhalten (DbLog)

Begonnen von DS_Starter, 19 Mai 2016, 22:52:13

Vorheriges Thema - Nächstes Thema

DS_Starter

Moin,

Fhem stürzt nicht ab soweit ich das sehe sondern wird regulär heruntergefahren:

Server shutdown delayed due ...
Wodurch kann ich nicht sehen.
Allerdings stirbt der parallel laufende DbRep Export. Ich bin mir unsicher ob es die Folgr von zb. zu wenig RAM ist oder die Folge des initiierten Shutdowns. Ich vermute aber letzteres.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Jewe

Danke, habe mich korrigiert.

2023.10.14 07:32:02 2: impDbLog - Wait for last database cycle due to shutdown ...
2023.10.14 07:32:02 1: Server shutdown delayed due to alexa,impDbLog for max 10 sec
2023.10.14 07:32:03 2: impDbLog - Last database write cycle done

Hier sieht es aber schon so auf, als ob es dblog kommt. Fhem läuft bei mir in einer Proxmox VM mit 6GB RAM, 4 Kerne, SSD hat genügend Platz.

Kann ich das auch anders machen ?

wowogiengen

Zitat von: Jewe am 14 Oktober 2023, 10:36:37Moin,

habe versucht die SQLiteDB mit DBrep und exporttofile in eine csv datei zu exportieren. Diese möchte ich dann in Influx wieder einlesen. Die DB´s sind recht groß 14,2Mio Datensätze (5,2GB) und 5,2 Mio Datensätze (2,7GB).
DBRep startet und legt auch die CSV-Files an, dann stürzt Fhem ab startet neu. Die erstellte CSV-Dateien sind ca. 1,1 und 1,4GB groß.

Bin mir nicht sicher ob dieser Weg ein guter ist. Vmtl. geht das auch anders?
define Rep.impDbLog DbRep impDbLog
attr Rep.impDbLog DbLogExclude .*
attr Rep.impDbLog aggregation month
attr Rep.impDbLog devStateIcon connected:10px-kreis-gelb .*disconnect:10px-kreis-rot .*done:10px-kreis-gruen
attr Rep.impDbLog dumpDirLocal ./log
attr Rep.impDbLog dumpFilesKeep 0
attr Rep.impDbLog event-on-update-reading state
attr Rep.impDbLog executeAfterProc set impDbLog reopen
attr Rep.impDbLog executeBeforeProc set impDbLog reopen 3600
attr Rep.impDbLog expimpfile /opt/fhem/expimpDbLog_%Y-%m-%d.csv
attr Rep.impDbLog optimizeTablesBeforeDump 1
attr Rep.impDbLog room DbLog
attr Rep.impDbLog showproctime 1
attr Rep.impDbLog verbose 3
#   DATABASE   /opt/fhem/important.db
#   DEF        impDbLog
#   FUUID      5c4cce27-f33f-9f49-19f3-51254aae6d47c978
#   FVERSION   93_DbRep.pm:v8.52.11-s27975/2023-09-17
#   LASTCMD    initial database connect stopped due to attribute 'fastStart'
#   MODEL      Client
#   NAME       Rep.impDbLog
#   NOTIFYDEV  global,Rep.impDbLog
#   NR         383
#   NTFY_ORDER 50-Rep.impDbLog
#   ROLE       Client
#   STATE      initialized
#   TYPE       DbRep
#   UTF8       0
#   HELPER:
#     DBLOGDEVICE impDbLog
#     IDRETRIES  3
#     PACKAGE    main
#     VERSION    8.52.11
#   READINGS:
#     2023-10-14 02:19:17   after_command_message Reopen executed.
#     2023-10-14 07:32:13   state           initialized
#
setstate Rep.impDbLog initialized
setstate Rep.impDbLog 2023-10-14 02:19:17 after_command_message Reopen executed.
setstate Rep.impDbLog 2023-10-14 07:32:13 state initialized


LOGFILE:
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - get initial structure information of database "/opt/fhem/important.db", remaining attempts: 3
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - Connectiontest to database SQLite:dbname=/opt/fhem/important.db with user
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - Index Report_Idx exists. Check ok
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - Initial data information retrieved - total time used: 0.0102 seconds
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - Connectiontest to db SQLite:dbname=/opt/fhem/important.db successful
2023.10.14 02:13:07 3: DbRep Rep.impDbLog - execute command before exportToFile: 'set impDbLog reopen 3600'
2023.10.14 02:13:07 2: impDbLog - Connection closed until 03:13:07 (3600 seconds).
2023.10.14 02:13:08 3: impDbLog - Database disconnected by request.
2023.10.14 02:19:09 1: Server shutdown delayed due to myDbLog,alexa for max 10 sec
2023.10.14 02:19:15 1: [Freezemon] freezemon: possible freeze starting at 02:17:28, delay is 107.342 possibly caused by: tmr-CODE(0x55fcfa6d2bb8)(ResponseTimeout) tmr-CODE(0x55fcfa62c3c8)(ProcessRequestQueue) tmr-HM485_LAN_KeepAlive(HM485_LAN) tmr-DOIF_SleepTrigger(Heizung_HK2_Solltemperatur)
2023.10.14 02:19:16 3: alexa: stopped
2023.10.14 02:19:17 1: DbRep Rep.impDbLog -> BlockingCall DbRep_expfile pid:DEAD:84022 Process died prematurely
2023.10.14 02:19:17 3: DbRep Rep.impDbLog - execute command after command: 'set impDbLog reopen'
2023.10.14 02:19:17 3: impDbLog - Reopen requested
2023.10.14 02:19:17 2: DbRep Rep.impDbLog - command message after command: >Reopen executed.<
2023.10.14 02:19:17 2: DbRep Rep.impDbLog - Database command aborted: "Process died prematurely"
2023.10.14 02:19:17 0: Server shutdown


2023.10.14 07:27:18 3: DbRep Rep.myDbLog - get initial structure information of database "/opt/fhem/fhem.db", remaining attempts: 3
2023.10.14 07:27:18 3: DbRep Rep.myDbLog - Connectiontest to database SQLite:dbname=/opt/fhem/fhem.db with user
2023.10.14 07:27:18 3: DbRep Rep.myDbLog - Index Report_Idx exists. Check ok
2023.10.14 07:27:18 3: DbRep Rep.myDbLog - Initial data information retrieved - total time used: 0.0096 seconds
2023.10.14 07:27:18 3: DbRep Rep.myDbLog - Connectiontest to db SQLite:dbname=/opt/fhem/fhem.db successful
2023.10.14 07:27:18 3: DbRep Rep.myDbLog - execute command before exportToFile: 'set myDbLog reopen 3600'
2023.10.14 07:32:02 2: impDbLog - Wait for last database cycle due to shutdown ...
2023.10.14 07:32:02 1: Server shutdown delayed due to alexa,impDbLog for max 10 sec
2023.10.14 07:32:03 2: impDbLog - Last database write cycle done
2023.10.14 07:32:03 1: DbRep Rep.myDbLog -> BlockingCall DbRep_expfile pid:DEAD:88816 Process died prematurely
2023.10.14 07:32:03 3: DbRep Rep.myDbLog - execute command after command: 'set myDbLog reopen'
2023.10.14 07:32:03 2: DbRep Rep.myDbLog - command message after command: >Reopen executed.<
2023.10.14 07:32:03 2: DbRep Rep.myDbLog - Database command aborted: "Process died prematurely"
2023.10.14 07:32:05 0: Server shutdown


Hallo Jewe,
wie wärs denn damit... zunächst mal FHEM geregelt herunterfahren, und dann die DB-Datei von SQLite kopieren. Mit einem Datenbanktool kannst du dann auf die "offline"-DB zugreifen und sie damit exportierern. Ich habe für mich unter Windows den DBeaver Community entdeckt, damit kann man sich auf viele Datenbanken verbinden...

Viele Grüße
Wolfgang

DS_Starter

Die dblog Meldung ist auch nur eine Reaktion auf den shutdown.
Du kannst es noch mit aggregation=day probieren.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Moin,

gerade bin ich mit einem Serverumzug einer zentralen FHEM Instanz beschäftigt.
Für DbLog habe ich mittels DbRep dumpfiles erzeugt.

Dabei sind mir zwei Dinge aufgefallen:

  • set ... dumpMySql schreibt nur die Tabellen ins dumpfile, nicht aber die Datenbank selbst
  • die Rechte des dumpfiles mit 0777 festzulegen, finde ich überdenkenswert

Zu 1:
Es ist an sich nicht schlimm, wenn man es weiß. Dann legt man halt die Datenbank manuell an.

ABER: das dumpfile lässt sich dann von der Kommandozeile aus trotzdem nicht einfach einspielen, weil im dumpfile keine Datenbank ausgewählt wird. Deshalb musste ich im dumpfile manuell ein "use fhem;" einfügen, danach hat das Einspielen funktioniert.

Beide oben genannten Punkte sind nicht wirklich dramatisch.
Vielleicht lässt sich an der Stelle aber trotzdem irgendwas optimieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Hallo betateilchen,

danke für die Hinweise.
Schaue ich mir demnächst mal an.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Hallo Heiko,

danke fürs Umsetzen.

--
-- Create database
--
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `fhem` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */;
USE `fhem`;

Darf ich mir bei Gelegenheit noch was wünschen?

2023.11.07 21:37:50 5: DbRep logRep - New dump file ./log/fhem_2023_11_07_21_37.sql was created
Spricht etwas dagegen, diese Meldung im Loglevel 3 auszugeben?
Die würde doch an der markierten Stelle perfekt passen:

2023.11.07 21:31:02 3: DbRep logRep - ################################################################
2023.11.07 21:31:02 3: DbRep logRep - ###             New database clientSide dump                 ###
2023.11.07 21:31:02 3: DbRep logRep - ################################################################
2023.11.07 21:31:02 3: DbRep logRep - Starting dump of database 'fhem'
2023.11.07 21:31:02 3: DbRep logRep - Characterset of collection set to utf8mb4.
2023.11.07 21:31:02 3: DbRep logRep - Searching for tables inside database fhem....
2023.11.07 21:31:02 3: DbRep logRep - Found 2 tables with 64586 records.
>>> 2023.11.07 hh:mm:ss 3: DbRep logRep - New dump file ./log/fhem_2023_11_07_21_37.sql was created
2023.11.07 21:31:02 3: DbRep logRep - Dumping table current (Type InnoDB):
2023.11.07 21:31:02 3: DbRep logRep - 0 records inserted (size of backupfile: 1.15 KB)
2023.11.07 21:31:02 3: DbRep logRep - Dumping table history (Type InnoDB):
2023.11.07 21:31:03 3: DbRep logRep - 64586 records inserted (size of backupfile: 12.09 MB)
2023.11.07 21:31:03 3: DbRep logRep - Finished backup of database fhem - total time used (hh:mm:ss): 00:00:00
2023.11.07 21:31:03 3: DbRep logRep - Database dump finished successfully.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DS_Starter

Hallo Udo,

da warst du aber schnell ... die Version kommt doch erst morgen.  ;)

Ja, den Loglevel setze ich gerne so um.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

DS_Starter

Ist drin:

2023.11.07 22:12:16.294 3: DbRep Rep.fhemtest.Dump - ################################################################
2023.11.07 22:12:16.295 3: DbRep Rep.fhemtest.Dump - ###             New database clientSide dump                 ###
2023.11.07 22:12:16.296 3: DbRep Rep.fhemtest.Dump - ################################################################
2023.11.07 22:12:16.442 3: DbRep Rep.fhemtest.Dump - Starting dump of database 'fhemtest'
2023.11.07 22:12:16.536 3: DbRep Rep.fhemtest.Dump - Characterset of collection set to utf8mb4.
2023.11.07 22:12:16.537 3: DbRep Rep.fhemtest.Dump - Searching for tables inside database fhemtest....
2023.11.07 22:12:30.894 3: DbRep Rep.fhemtest.Dump - Found 2 tables with 15307590 records.
2023.11.07 22:12:30.898 3: DbRep Rep.fhemtest.Dump - New dump file /sds1/backup/dumps_FHEM/fhemtest_2023_11_07_22_12.sql was created
2023.11.07 22:12:30.902 3: DbRep Rep.fhemtest.Dump - Dumping table current (Type InnoDB):
2023.11.07 22:12:31.224 3: DbRep Rep.fhemtest.Dump - 16457 records inserted (size of backupfile: 3.28 MB)
2023.11.07 22:12:31.224 3: DbRep Rep.fhemtest.Dump - Dumping table history (Type InnoDB):
2023.11.07 22:16:02.945 3: DbRep Rep.fhemtest.Dump - 15291133 records inserted (size of backupfile: 2615.80 MB)
2023.11.07 22:16:02.950 3: DbRep Rep.fhemtest.Dump - Deleting old dumpfile 'fhemtest_2023_11_07_20_28.sql'
2023.11.07 22:16:03.788 3: DbRep Rep.fhemtest.Dump - Finished backup of database fhemtest - total time used (hh:mm:ss): 00:03:47
2023.11.07 22:16:03.826 3: DbRep Rep.fhemtest.Dump - Database dump finished successfully.
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thowe

Hallo,
bei meiner FHEM-Konfiguration mit 93_DbRep.pm:v8.52.14-s28140/2023-11-08 sind im Perl-Code hinter executeAfterProc globale Variablen wie bspw. $mday nicht mehr definiert. Ist das beabsichtigt?
Viele Grüße,
Thome

DS_Starter

Moin,

nein. Und es wurde auch diesbezüglich nichts geändert bzw. keine diesbezüglichen Einschränkungen (bewusst) vorgenommen.
Wie äußert sich denn dein Problem?

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Thowe

Hallo Heiko,
bis zu letzten Update hatte folgendes Konstrukt funktioniert:
attr test_rep executeAfterProc {if($mday==1) {fhem("set test1 1;;set test2 2")} else {fhem("set test3 3")} }

Jetzt erhalte ich beim Anlegen dieses Attributs:
Global symbol "$mday" requires explicit package name (did you forget to declare "my $mday"?) at (eval 960707) line 1.
Viele Grüße,
Thome

DS_Starter

Nabend Thome,

ich habe dein Attr mal eben bei mir gegengecheckt und kann deinen Issue bestätigen.
Allerdings kann ich versichern diesbezüglich nichts geändert zu haben. Auch der Attributcheck (beim Anlegen) ist unverändert zur Vorversion.
Möglicherweise hat sich an zentraler Stelle etwas geändert was Auswirkungen hat.
Aber das muß ich erstmal prüfen und mir anschauen.

Meld mich wieder.

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

betateilchen

Schwer vorstellbar, dass das schon funktioniert haben soll.
$mday ist, genau wie $hms innerhalb von fhem.pl nicht als globale Variable definiert.
Diese Werte stehen immer nur temporär zur Verfügung, man kann sie beispielsweise auch nicht in der 99_myUtils.pm verwenden.
Dieses Verhalten ist nicht neu.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!