Wiederherstellung corrupt DB und Zusammenführen mit aktueller DB

Hallo zusammen,

nach längerem Suchen hier im Forum, bei Google und bei Youtube bin ich noch immer nicht so wirklich fündig geworden. Es gibt hier einige Einträge zu korrupten Datenbanken, aber nie so wirklich eine Lösung für die Wiederherstellung der korrupten Datenbank und dem Zusammenführen mit der aktuellen, durch HA neu erstellten Datenbank.

Gestern habe ich durch Zufall gesehen, dass mein Energy Dashboard vor dem 27. April um 4:00 Uhr keine Daten mehr anzeigt. Ich zeichne aber bereits seit Anfang Februar auf.

Ich fand dann ebenfalls die home-assistant_v2.db.corrupt[…] Datei.

Mittels SSH Addon konnte ich mit einem recherchierten Befehl die Korrupte Datei fixen, herunterladen und auch in einem DB Browser betrachten.

Die entscheidende Frage ist aber nun, wie ich diese geretteten Daten mit meiner neuen Datenbank zusammenführen kann und wieder alle Daten vorliegen habe.

Home Assistant läuft bei mir auf einem ausgemusterten Laptop, welcher eine 250GB Samsung EVO SSD für alles nutzt. Backups werden dort ebenfalls erstellt, aber auch auf mein NAS geschrieben.

Ich nutze die Standard SQLite Datenbank und keine alternative DB.

Die Logdateien vom 27. April existierten bereits nichts mehr als es mir auffiel, daher weiß ich leider nicht, was das Problem verursacht hat.

Mein Ziel: Mir geht es jetzt erstmal darum die Dateien wiederherzustellen.
→ Was letztendlich dazu führte, dass die Datei kaputt ging, wie ich das in Zukunft verhindere und ob eine andere Datenbank 2025 nicht doch Sinn ergibt (zwecks besserer Absicherung), das wäre ein Thema für danach. :slight_smile:

Kann mir jemand hierbei behilflich sein oder gibt es evtl. doch einen Beitrag, den ich übersehen habe und mein Problem bereits behandelt?

Ganz lieben Dank schonmal und viele Grüße :wave:

Moin

Das hier ist zwar schon ein älterer Beitrag, aber hast Du den bei Deiner Suche auch schon gefunden?

Ob der dort beschiebene Weg über die verschiedenen Github User Ansätze noch funktioniert weiß ich aber auch nicht.

VG Jim

Hi und danke dir!

Darüber gestolpert bin ich schonmal. Ich muss aber gestehen, dass ich das sehr kompliziert fand und beim ersten Lesen nur wenig verstanden habe. Ich verstehe zwar worum es geht, habe aber bisher noch keine Erfahrung mit der Durchführung.

Ich hatte gehofft, dass es mittlerweile bessere Wege hierfür gibt. Sollte dem nicht so sein, werde ich versuchen, mich damit mal näher auseinander zu setzen. Danke dir!

Sollte ich mich doch für eine andere Datenbank entscheiden, zum Beispiel die viel beschriebene MariaDB, gibt es da dieses Problem auch? Und falls ja, ist dann die Wiederherstellung und Zusammenführung einfacher realisierbar?

Liebe Grüße!

Bei HA selber gibt es keinen Weg aus einer defekten alten und einer aktuellen DB, eine neue DB mit Inhalten aus beiden DB zu erstellen. Man kann nur einzelne Daten (z.B. von einem bestimmten Tag) von z.B. einem Sensor in die Datenbank hinzufügen und somit z.B. eine Statistik anpassen. Wobei auch das m.M.n. bei HA ein ziemlicher “Krampf” ist. :slightly_smiling_face: Aber ich kein Entwickler und kann das und was man dann wie mit welchen Aufwand umsetzen könnte oder müsste, daher auch nicht wirklich beurteilen.

Alles was darüber hinausgeht und die DB betrifft, muss man dann mit externer Datenbank-Software oder -Tools machen und da ist halt die Schwierigkeit erst einmal zu verstehen welche Daten wie in der HA DB stehen und wie sich etwas zusammensetzt. Dazu braucht es - in dem Fall - dann auch schon etwas tiefergehende SQL-Kenntnisse und der Arbeitsaufwand das Ganze dann a) zu verstehen und b) dann auch richtig umzusetzen, ist nicht wirklich gering.

D.h. in Deinem Fall, wenn vielleicht “nur” die Daten von Feb. bis April fehlen sollten und alles andere seit dem in der aktuellen DB vorhanden ist, würde ich mir den Aufwand mit dem zusammenfügen der beiden DB vielleicht gar nicht antun. Aber das ist natürlich etwas was jeder für sich selber entscheiden muss und wie wichtig einem die entsprechenden Daten in dem Energy Dashboard sind.

Zu einer anderen DB wie z.B. MariaDB kann ich nichts sagen, aber eine defekte HA DB kommt schon eher selten vor und wenn liegt das halt häufig an einem Defekt oder einer Macke bei der verwendeten Hardware. In erster Linie natürlich an der HDD/SSD.

VG JIm

Moin,

das ist eine Frage, die Dir niemand wirklich beantworten kann, denn wir wissen ja nicht, was zu der korrupten Datenbank geführt hat :wink:
Und da ich davon ausgehe, dass Du die MariaDB als Add-on in Ha installierst, dann kann ein Hardwaredefekt, alternde SSD auch diese MariaDB treffen.

nein, wenn Du so etwas machen möchtest, sind Grundkenntnisse in SQL und Datenbank Pflicht!

Ganz wichtig, zwei Backups zu haben ist besser, als eins zu brauchen! :slight_smile:

Du kannst das aber auch außerhalb von HA üben, Du kopierst die beiden Datenbanken auf einen anderen Rechner und dann kannst Du das mit diesem Stand üben.

Es sind ja nur die 2, ,3 Tabellen, die die Statistiken enthalten relevant, da kann man entweder mit Export, Import arbeiten oder per SQL aus den Tabellen der einen Datenbank in die andere Schreiben, oder man macht ein Dump der Statistiktabellen und schreibt diese dann unter einem neuen Namen in die alte Datenbank und dann per SQL aus den neuen Tabellen in die alten Schreiben.

Aber alles bedeutet, man muss verstehen wie Datenbanken funktionieren.

VG
Bernd

Noch wichtiger: :slightly_smiling_face: Regelmäßig (bestenfalls täglich) einen Blick in die HA Protokolle werfen. In dem Fall hier hätte man darin am 27.04. einen Eintrag finden müssen das es mit dem auto_purge ein Problem gab und das eine neue Datenbank erstellt wurde. Dann hätte man damals direkt ein Backup einspielen können.

VG Jim

Erstmal ganz lieben Dank für die vielen zusätzlichen Infos. Backups mache ich bereits. Aber die bleiben leider nicht so lange erhalten. Aktuell einmal täglich und Aufbewahrung für 14 Tage. War also leider auch zu spät.

Neben der internen SSD werkelt nebenan noch ein Synology NAS, wo ebenfalls die Backups draufgespielt werden.

Kurzer Einschub: Ich hätte bei einer anderen Datenbank als Musterlösung ja gerne das NAS als Langzeitspeicher verwendet. In meiner Vorstellung so:
Auf der HA Hardware werden die Daten alle wie gehabt gespeichert, einmal täglich wird alles auf die DB im NAS übertragen, dort wächst die Datenbank dann mit den wichtigsten Langzeitdaten stetig an, aber auf der HA Hardware wird dann nur ein kurzer Zeitraum vorbehalten. Will ich längere Historien oder Energiewerte betrachten, wird auf die Daten im NAS zugegriffen. Naja, wie gesagt: Meine Wunschvorstellung :wink:

Aber nochmal eine Folgefrage: Man kann ja quasi alles mögliche Automatisieren: kann man evtl. auch automatisieren, dass man eine Nachricht, ja vielleicht sogar eine Mail bekommt, wenn die Datenbank gecrasht ist?
Täglich in die Logdateien schauen stelle ich mir auf Dauer aufwendig vor, vor allem da wir ja mit HA im Grunde wollen, dass alles möglichst automatisiert im Hintergrund abläuft :slightly_smiling_face:

Nochmals Danke für euren Input und schnellen Support :+1:

Moin,

das ist ja eine neue Information, die wir vorher nicht hatten, wenn Du eine MariaDB auf dem NAS laufen hast, dann kannst Du da auch eine HA Datenbank anlegen und HA so konfigurieren, dass diese Datenbank anstelle der SQLite Datenbank genutzt wird.

Nein, eine MariaDB ersetzt die SQLite Datenbank 1:1!

Da ist glaube ich ein Denkfehler, die Langzeitdaten werden so, oder so in der SQLite, oder in einer MariaDB gespeichert, das kannst Du nicht abschalten, was Du aber machen kannst, Du installierst Dir auf dem NAS in einem Docker, eine influxDB, diese ersetzt nicht die Interne HA Datenbank, sondern läuft parallel zur SQLite, MariaDB mit.
Nachteil, an die Daten der influxDB kommst Du nicht über das Dashboard und irgendwelche Kacheln, da kann man dann nur ein weiteres Add-on nutzen, nämlich Grafana, um die Daten grafisch aufzubereiten.

VG
Bernd

Dazu gibt es bereits seit Jahren Feature Request, aber so wirklich umgesetzt wurde da wohl noch nichts. Die Automatisierung dort in dem Beitrag bei dem letzten Posting wertet ja auch nur einfach Error als Level aus dem system_log_event aus und da können ja durchaus auch noch andere “Error” auftauchen. Einen einzelnen Event der sich nur auf einen Crash der DB und erstellen eine neuen DB bezieht, gibt es m.W. (bisher) nicht.

Was das auslagern der DB z.B. auf Deine DS betrifft denk dann auch daran das wenn diese z.B. bei einem DSM-Update, oder sonstigen Aus(fall)zeiten, mal nicht zur Verfügung steht, dann auch Dein HA “out of order” ist. :wink:

VG Jim

Moin,

ich bin gerade etwas faul zum Suchen, aber es gab einen Post hier im Forum, der sich da nicht mit HA internen Funktionen geholfen hat, aber in etwas so, von Hinten in die Brust, durchs Auge :slight_smile:
Soll heißen Du kannst Dir Tools in / auf Deinem HA installieren, die die Meldungen aus HA sammeln und an einen Dienst senden, der wiederum analysiert die Meldungen, und durch Regeln kann man dann entweder Events auslösen, die entweder Mail schicken oder auch wieder Sensoren erstellen, die diese darstellen.
Stichworte sind, Promtail, Loki, oh, war ja einfach, doch gefunden :slight_smile:

VG
Bernd

Moin,

ich habe vor Wochen festgestellt, das meine historischen Daten fehlen und eine neue home-assistant_v2.db SQLite DB habe und 2 home-assistant_v2.db.corrupt.$datum$ jetzt suche ich einen Weg die korrupten DBs zu reparieren und dann alle in eine funktionierende DB zusammenzufügen / DB merge.

Hatte jemand schon so einen Fall und konnte das erfolgreich durchführen und kann eine Anleitung zur Verfügung stellen?

Und wie kann man den Erfolg feststellen?

Vielen Dank im Voraus, Gruß

Hi s3b0r,

wie Du die korrupte DB fixen kannst, kann Dir ja evtl der User nopileon erklären. Ich hatte ähnliche Probleme: DB korrupt, zu spät gemerkt, Lücke in den Daten im Energie-Dashboard. Glücklicherweise hatte ich die relevanten Daten noch minutengenau in der Volkszähler-DB, von wo ich sie als csv exportieren konnte.

Beim Import nach HA war mir diese Integration äußerst hilfreich: GitHub - klausj1/homeassistant-statistics: This HA integration allows to import and export long term statistics from/to a file like csv or tsv

Übrigens: wenn Du die DB fixen und unter HA laufen lassen kannst und Du die genannte Integration installieren kannst, dann kannst du den Export auch mittels der Integration machen, ganz ohne SQL. Da hab ich aber keine Erfahrung mit …

Die Integration klinkt sich als “Action” in HA ein, kann über die Entwicklerwerkzeuge - Aktionen aufgerufen und ausgeführt werden. Hat bei mir prima geklappt! Hab nur an bestimmten Stellen riesige Spikes, wo vorher keine Daten zu dem Sensor vorhanden waren. Beispiel: unsere Wärmepumpe wurde im März 2023 installiert, Daten aus 2023 hatte ich gar keine im Energiedashboard. DIe Aufzeichnung im Volkszähler hat am 31.03.2023 begonnen, und da hab ich jetzt 7500 kWh negativen Stromverbrauch der Wärmepumpe - der bisherige Gesamtverbrauch der WP. Damit kann ich aber leben, und wenn ich mich recht entsinne, weist der Autor auf das Problem hin (was es zwar erstmal nicht löst, aber Du weißt halt vorher Bescheid).

Ich hab das ganze auf einer HA-Testinstallation durchgespielt (Backup von “Prod-HA” unter der Testinstallation neu eingespielt und da dann getestet).

Du kannst übrigens mit der Integration nix kaputt machen - “passen” die Daten nicht, einfach Daten neu erstellen und neu importieren. Beliebig wiederholbar! Und wenn die ganz sicher gehen willst: einfach die DB vor dem Import an eine sichere Stelle kopieren…

Ich hoffe, ich konnte Dir (und vielleicht anderen mit dem gleichen Problem) helfen

Schöne Grüße
cyberray

Danke @cyberray

Ich habe jetzt seit dem letzten Eintrag selbst probiert die DBs zu reparieren und wieder zu einer zu machen, aber es klappt einfach nicht…

Ich möchte die Daten ungern verlieren, aber komme alleine nicht weiter.

Weiß jemand vielleicht Jemanden der mir für kleines Geld :wink: meine DBs reparieren und zusammenführen könnte?

Ich möchte nicht weiter rumprobieren und auch keine teuren Tools kaufen, ich glaube es braucht jetzt einen Experten.

Guten Morgen,

hast Du denn den Weg über die Import-Integration einmal ausprobiert? Die ist ziemlich einfach.

Die DB’s zusammenschustern hab ich noch nicht probiert,und zwei DB’s zusammenzuführen bietet, wenn Du keine SQL beherrschst, eine ganze Menge Fallstricke. Ich kann Dir da leider nicht helfen, ich beherrsche ein bißchen SQL für den Hausgebrauch, aber zwei DBs zusammenführen - das würde ich mich nicht trauen. Und die existierenden Anleitungen dazu sind teils alt, funkionieren nicht mehr, erfordern teils die Installation weiterer Software.

Der Weg über die Import-Statistics-Integration ist narrensicher, da er HA-Hausmittel nutzt.

Wünsche Dir viel Erfolg bei Deinen weiteren Versuchen.

Schönen Gruß

1 „Gefällt mir“