DBLog,sqlite DB defekt, zum zweiten mal

Begonnen von franky08, 08 September 2016, 23:30:30

Vorheriges Thema - Nächstes Thema

franky08

Komme eben von der Arbeit und musste feststellen das seit ca. 12:30 Uhr keinerlei Daten mehr in die sqlite Datenbank geloggt wurden. Also auf der Konsole nachgesehen und festgestellt das keine tables mehr vorhanden sind  :(
Das ist mir nun schon 2 mal, innerhalb von 3 Jahren, passiert. Als Konsequenz werde ich sämtliche Log's wieder auf Filelog umstellen. Es ist mehr als ärgerlich wenn sämtliche statistische Jahresplots/Daten flöten gehen. Habe jetzt erst einmal eine neue DB erstellt, die funktioniert auch. Betroffen war nur die allgemeine fhem.db, die esa2000.db, welche die Energiewerte loggt war zum Glück nicht betroffen.
Hat jemand einen Tipp wie dieser crash passieren konnte? Es war zu dieser Zeit niemand in der Wohnung und an fhem wurde zu der Zeit auch nicht's gearbeitet/geändert.

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Ellert

Hatte ich auch gerade zum ersten Mal. Nach einem Stromausfall gestern Morgen, kamen viele Fehlermeldungen und etwa 7 Stunden später, war die Datenbank hin.

Zitat2016.09.08 16:58:05.661 2: DbLog: Failed to insert new readings into database: DBD::SQLite::st execute failed: database disk image is malformed at ./FHEM/93_DbLog.pm line 613, <GEN17> line 127.

Kann man die Datenbank irgendwie retten?

Benni

Zitat von: franky08 am 08 September 2016, 23:30:30
Es ist mehr als ärgerlich wenn sämtliche statistische Jahresplots/Daten flöten gehen.

Auch für sowas sollte man sich ein Backup einrichten.

franky08

Ich hatte gar keine Fehlermeldung und die DB war auch geöffnet aber eben enthielt die DB keine tables mehr. fhem hängt komplett mit allen I/O devives an einer USV, Stromausfall kommt also nicht in Frage.

@Benni

Backup läuft bei mir mit wöchentlichen cronjob, wobei ich mittels cp den kompletten fhem Ordner auf eine externe Platte kopiere.

Die Frage ist ja eigentlich auch WARUM so ein Fehler mit der DB auftritt und sämtliche tables fehlen?

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Tedious

Schreibst Du die DB auf eine SD-Karte? Wäre denn - nennen wir es mal so - suboptimal...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

betateilchen

Das passiert einfach bei sqlite. Bei mir läuft jede nacht per at-Job ein "set <> reopen" um die Datenbank regelmäßig zu schließen und neu zu öffnen.

Probiere folgendes, nachdem Du Dich mit "sqlite3 <dbName>" mit der Datenbank verbunden hast.


.mode insert
.output dump_all.sql
.dump
.exit


Im Dump-File musst Du alles entfernen, was nach Transaktionssteuerung aussieht.

Danach kannst Du mit

sqlite3 <dbName> < dump_all.sql

die Daten in eine neue Datenbank schreiben. Die alte Datenbank solltest Du vorher umbenennen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

franky08

@betateilchen

Habe das so ähnlich gemacht:
Mit sqlite3 fhem.db .dump>fhem_dump.sql

und dann mit:
/opt/fhem/ cat fhem_dump.sql | sqlite3 fhem.db

vorher habe ich mit  drop beide tables gelöscht. Hat auch funktioniert.

Vielen Dank

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

wowogiengen

Zitat von: Tedious am 09 September 2016, 13:41:40
Schreibst Du die DB auf eine SD-Karte? Wäre denn - nennen wir es mal so - suboptimal...
Hallo Tedious,
wie soll man es denn sonst machen, wenn man einen raspberry Pi hat? der hat ja nur SD-Karte on board, alles andere würde mehr Strom verbrauchen, oder eine funktionierende Netzwerkverbindung vorraussetzen...

Wernieman

Allerdings können SDCard nur eine (sehr) beschränkte Schreibanzahl pro Zelle überleben. Das kann durch eine (viel schreibende) DB durchaus zu solchen Effekten führen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Guybrush

Zitat von: wowogiengen am 02 Juni 2020, 14:52:36
Hallo Tedious,
wie soll man es denn sonst machen, wenn man einen raspberry Pi hat? der hat ja nur SD-Karte on board, alles andere würde mehr Strom verbrauchen, oder eine funktionierende Netzwerkverbindung vorraussetzen...

https://geekworm.com/products/raspberry-pi-4-model-b-x825-2-5-inch-sata-hdd-ssd-expansion-board

gibts auch für alle anderen Pi Versionen

wowogiengen

Zitat von: Guybrush am 02 Juni 2020, 16:25:55
https://geekworm.com/products/raspberry-pi-4-model-b-x825-2-5-inch-sata-hdd-ssd-expansion-board

gibts auch für alle anderen Pi Versionen
Aha,
gut... Muss ich mir angucken.
Aber ich glaube, nein ich weiss, dass meine zerschossene Sqlite-DB auf meine Kappe geht...
Ich habe ein rsync von der diskstation auf den rpi gemacht, und irgendwie sichert der alles, was geht. Habe zwar ein exclude auf .db gemacht, aber eben nicht *.db und /proc/*, so dass die Datenbank während des Betriebs kopiert wurde, und das kann nur schief gehen.

Habe jetzt zum einen dem FHEM eine Zwangspause beim Beschreiben der Datenbank eingerichtet, für 4h, das sollte erst mal reichen. Zum Anderen habe ich den rsync wie oben beschrieben angepasst...:


rsync -avuz --delete --numeric-ids --exclude=*.db --exclude=/mnt/* /proc/* -e ssh root@fhem2:/ /volume1/für_alle/Büro/Heimautomation/fhem2/aktuell/ >> /volume1/für_alle/Büro/Heimautomation/fhem2/$(date +%Y%m%d)-backup.log 2>&1
cp -Rv /volume1/für_alle/Büro/Heimautomation/fhem2/aktuell/ /volume1/für_alle/Büro/Heimautomation/fhem2/$(date +%Y%m%d) 2>&1


Viele Grüße
Wolfgang

Wernieman

Ich muß gestehen, das ich den Anschluß von Festplatten über USB am PI auch nicht optimal finde ..... dazu ist USB beim Pi Hardware bedingt nicht so ..... optimal
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Guybrush

Zitat von: Wernieman am 02 Juni 2020, 19:23:28
Ich muß gestehen, das ich den Anschluß von Festplatten über USB am PI auch nicht optimal finde ..... dazu ist USB beim Pi Hardware bedingt nicht so ..... optimal

wieso? usb 3.0 ist deutlich schneller als ein sata ii/iii Anschluss. Das was nicht optimal ist, ist dass man ne blöde Brücke am externen Port braucht. Ansonsten sehe ich da keinen Nachteil.

Frank_Huber

Der Nachteil war bis zum 3er PI.
Beim 4er mag das anderst aussehen, hab ich aber noch keine Erfahrung gemacht.

Gesendet von meinem S68Pro mit Tapatalk


Wernieman

USB beim PI4 soll besser als bei 1-3 sein. Mich stöhrt schon, das Leute von "soll" sprechen ... Hardware muß einffach funktionieren.

Habe hier auch Pis laufen, die müssen aber nicht schreiben ... (FHEM lauf auf eine ZOTAC-Minirechner Lüfterlos)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html