Warum verarbeitet Home Assistant vorhandene Daten nach einem Upgrade erneut?

Eva Wong ist die Technische Redakteurin und und leidenschaftliche Tüftlerin bei ZimaSpace. Eine lebenslange Geek mit einer Leidenschaft für Homelabs und Open-Source-Software, sie spezialisiert sich darauf, komplexe technische Konzepte in zugängliche, praktische Anleitungenzu übersetzen. Eva ist der Meinung, dass Self-Hosting Spaß machen und nicht einschüchternd sein sollte. Durch ihre Tutorials befähigt sie die Community, Hardware-Setups zu entmystifizieren, vom Bau ihres ersten NAS bis hin zur Beherrschung von Docker-Containern.

Home Assistant verarbeitet vorhandene Daten nach einem Upgrade möglicherweise erneut, weil der neue Code gespeicherte Schemata, Indizes, Caches, Statistiken und den Integrationsstatus mit den geänderten Erwartungen abgleichen muss.

Die ursprünglichen Sensormesswerte werden dabei nicht unbedingt erneut erfasst. Stattdessen kann das aktualisierte System Tabellen umwandeln, abgeleitete Strukturen neu erstellen, Konfigurationseinträge neu laden oder Zusammenfassungen neu berechnen, damit der alte Zustand auch unter der neuen Version nutzbar bleibt. Die Dauer hängt vom Datenvolumen, der Speicherlatenz, dem verfügbaren temporären Speicherplatz, der Anzahl der Integrationen, der Datenbank-Engine und dem genauen Upgrade-Pfad ab.

Ein Upgrade verändert die Interpretation des vorhandenen Zustands

Home Assistant speichert mehr als nur Konfigurationstext. Recorder-Tabellen, Entitätsregister, Gerätemetadaten, Integrationseinträge, Statistiken und Caches enthalten Annahmen der Version, von der sie geschrieben wurden. Wenn neuer Code diese Annahmen verändert, muss er den vorhandenen Zustand entweder übersetzen oder eine kompatible Darstellung neu erzeugen, bevor das System normal verwendet werden kann.

Das ist der allgemeine Zweck einer kontrollierten Softwaremigration: Daten und Verhalten von einer alten Darstellung in eine neue zu überführen, ohne das beabsichtigte Ergebnis zu verlieren. Die Übersicht des Pragmatic Engineer über Phasen von Softwaremigrationen unterscheidet zwischen Vorbereitung, Ausführung, Nacharbeiten und der anschließenden langfristigen Pflege. Das erklärt, warum der Abschluss über die Installation des neuen Codes hinausgeht.

Die erneute Verarbeitung ist daher ein Kompatibilitätsvorgang und kein Beweis dafür, dass Home Assistant die Quelldaten vergessen hat. Entscheidend ist, welche gespeicherte Darstellung geändert wurde, ob die Verarbeitung Fortschritte macht und welche Funktionen weiterhin verfügbar sind. Je nach Version können keine, eine oder mehrere dieser Ebenen betroffen sein.

Schemamigrationen können große Tabellen lesen und neu schreiben

Ein Datenbankschema definiert Tabellen, Spalten, Datentypen, Indizes und Einschränkungen. Ein Upgrade kann eine Spalte hinzufügen, einen Bezeichner vergrößern, einen Index neu erstellen oder Zeilen in ein neues Layout umwandeln. Vorgänge, die in den Versionshinweisen klein wirken, können eine große Recorder-Datenbank vollständig durchsuchen oder kopieren und erhebliche temporäre Ein-/Ausgabe erzeugen.

Eine beobachtete Migration des Home Assistant Recorders protokollierte das Entfernen und Neuerstellen von Indizes in einer Datenbank mit mehreren Gigabyte. Dabei wurde darauf hingewiesen, dass die Indexerstellung bei großen Datenbanken oder langsamer Hardware mehrere Minuten dauern kann.

Der Aufwand hängt von der Anzahl der betroffenen Zeilen und vom Verhalten des Speichers ab, nicht nur von der CPU-Auslastung. Eine Migration kann durch Ein-/Ausgabe, Sperren oder die Datenbank-Engine begrenzt sein, während die Prozessorauslastung niedrig aussieht. Wiederholtes Unterbrechen kann dazu führen, dass Arbeiten neu beginnen oder das System eine Überprüfung benötigt. Deshalb sind Fortschritt und Protokolle aussagekräftiger als eine willkürliche Einschätzung der verstrichenen Zeit.

Abgeleitete Indizes und Caches müssen zum neuen Code passen

Indizes, Caches, kompilierte Assets und Suchstrukturen werden aus maßgeblichen Daten abgeleitet. Wenn ihr Format oder ihre Regeln zur Ungültigmachung geändert wurden, könnte ihre Wiederverwendung veraltete Entitäten, falsche Abfragen oder nicht passende Frontend-Ressourcen liefern. Das Verwerfen und Neuerstellen tauscht vorübergehenden Aufwand gegen ein konsistentes Ergebnis unter der neuen Version.

Die Cache-Konsistenz hängt davon ab, Einträge zu entfernen, deren ursprüngliche Annahmen sich geändert haben. Metas technische Darstellung von Cache-Invalidierung und -Konsistenz erklärt, dass ein Cache nicht die maßgebliche Datenquelle ist und bei fehlerhafter Invalidierung dauerhaft inkonsistent bleiben kann.

Dieser Mechanismus erklärt, warum der erste Start oder das erste Laden des Dashboards langsamer sein kann als spätere Vorgänge. Sobald ein kompatibler abgeleiteter Zustand vorhanden ist, wird er bei späteren Zugriffen wiederverwendet. Wenn derselbe aufwendige Neuaufbau bei jedem Neustart wiederholt wird, sollte untersucht werden, warum das Ergebnis nicht gespeichert oder erkannt wird, statt dies als normales Aufwärmen hinzunehmen.

Integrationen gleichen Geräte, Entitäten und Sitzungen ab

Jede Integration muss Anmeldedaten wiederherstellen, Sitzungen aufbauen, Geräte erkennen, Bezeichner zuordnen und die Verfügbarkeit von Entitäten aktualisieren. Ein Upgrade kann die Einrichtung, Entitätsmodelle, Bibliotheksversionen oder Migrationshandler verändern. Die vorhandene Konfiguration wird dann über den neuen Code neu geladen, damit die Integration einen mit der aktuellen Laufzeit konsistenten Zustand erzeugen kann.

Das Neuladen von Integrationen macht diesen Lebenszyklus sichtbar. Eine Erläuterung aus der Community zu Home-Assistant-Neuladungen von Konfigurationseinträgen beschreibt die Aktion, bei der eine Integration entladen und anschließend erneut eingerichtet wird – dieselbe grundlegende Abgleichsgrenze, die auch beim Start durchlaufen wird.

Eine Cloud-API, ein schlafendes Batteriegerät oder ein nicht verfügbares Gateway kann den Abgleich unabhängig von der Datenbankarbeit verlängern. Fehlende Entitäten während des frühen Starts können vorübergehend sein, wiederholte Authentifizierungsfehler oder wechselnde Bezeichner sind jedoch kein Zeichen für gesunden Fortschritt. Trennen Sie wiederholte Integrationsversuche von Recorder-Migrationsprotokollen, bevor Sie die Ursache festlegen.

Statistiken können aus der aufbewahrten Historie neu erstellt werden

Home Assistant speichert neben abgeleiteten Statistiken für längerfristige Ansichten auch rohe oder kurzlebige Zustandsverläufe. Wenn sich eine Berechnungsregel, eine Metadatenbeziehung oder die Struktur einer Zusammenfassung ändert, müssen aufbewahrte Zeilen möglicherweise erneut gelesen werden, um die abgeleitete Datenreihe zu reparieren oder neu zu erzeugen. Dadurch entstehen zusätzliche Lese- und Schreibvorgänge, ohne dass sich die ursprünglichen Messwerte des Geräts ändern.

Die Unterscheidung zwischen Entitätenhistorie und Langzeitstatistiken ist für den Betrieb wichtig. Ein ausführlicher Leitfaden aus der Community zur Wiederherstellung von Home-Assistant-Statistiken behandelt zusammengefasste Statistiken als separate Datenebene, die unabhängig von der kurzlebigen Historie rekonstruiert oder verschoben werden kann.

Eine neu erstellte Zusammenfassung sollte sich stabilen Werten und einem normalen Schreibvolumen annähern. Achten Sie auf Lücken, Duplikate, sich ändernde Metadatenbezeichner oder einen Vorgang, der immer wieder an derselben Stelle beginnt. Diese Muster deuten eher auf ein Kompatibilitäts- oder Integritätsproblem als auf einen begrenzten Durchlauf über aufbewahrte Daten hin.

Normaler Fortschritt sieht anders aus als ein Fehler

Erwartete Arbeiten nach einem Upgrade haben eine benannte Aufgabe, zunehmenden Fortschritt oder wechselnde Meilensteine im Protokoll, eine begrenzte Ressourcennutzung und einen abschließenden Erfolg. Ein Fehler wiederholt denselben Fehler, erschöpft den Speicherplatz, startet die Migration neu, lässt den Recorder dauerhaft nicht verfügbar oder erzeugt neue Warnungen vor beschädigten Daten. Die Zeit allein reicht zur Unterscheidung nicht zuverlässig aus, da sich Datenbanken und Hardware unterscheiden.

Eine fehlgeschlagene Migration liefert konkrete Gegenbelege für die Annahme, dass Warten immer sicher sei. Bei einem Fehler beim Upgrade einer Home-Assistant-Datenbank füllte die Migration den verfügbaren Speicher der virtuellen Maschine. Sie konnte erst fortgesetzt werden, nachdem die Kapazität erhöht worden war. Das zeigt, dass wiederholte Fehler durch eine Ressourcenbegrenzung und nicht durch mangelnde Geduld verursacht sein können.

Löschen Sie eine Datenbank nicht nur deshalb, weil der Start langsamer als üblich ist. Bewahren Sie das Backup vor dem Upgrade auf, notieren Sie das genaue Versionspaar und beobachten Sie freien Speicherplatz, Datenbankaktivität und Protokolle. Leiten Sie weitere Maßnahmen ein, wenn derselbe Fehler wiederholt auftritt, der Fortschritt über mehrere Beobachtungsintervalle hinweg ausbleibt oder benötigte Dienste das geplante Wartungsfenster überschreiten.

Verwenden Sie ein schrittweises Beobachtungsprotokoll nach dem Upgrade

Notieren Sie vor dem Upgrade die Datenbankgröße, den freien Speicherplatz, die normale Startzeit, die Anzahl der Integrationen und die Kennung eines funktionierenden Backups. Prüfen Sie nach dem Start der neuen Version in festen Abständen die Migrationsmeldungen, das Speicherwachstum, die Verfügbarkeit des Recorders, die Wiederherstellung der Entitäten und die Konsistenz der Statistiken. Vermeiden Sie sich überschneidende Backups oder Scans, die die Arbeitslast beim ersten Start verfälschen könnten.

Migrationserfahrungen lassen sich leichter einordnen, wenn Wiederherstellungsartefakte und der Versionsstand im Voraus dokumentiert werden. Der Bericht eines Anwenders über eine Home-Assistant-Migration veranschaulicht, wie Backups, Wiederherstellungsverhalten und Änderungen an der Umgebung Teil des tatsächlichen Übergangs werden und nicht nur ein nachträglicher Gedanke sind.

Erklären Sie den Vorgang erst dann für erfolgreich, wenn die Protokolle keine Migrationsarbeiten mehr melden, der Recorder neue Ereignisse akzeptiert, Historie und Statistiken auf Prüfungen reagieren, sich die Integrationen stabilisieren und ein zweiter Neustart annähernd zur erwarteten Ausgangslage zurückkehrt. Halten Sie den Wiederherstellungspfad von ZimaSpace für ein bekannt funktionierendes Datenbankbackup bereit, verwenden Sie ihn jedoch erst, wenn der beobachtete Fehler die Wiederherstellungsschwelle überschreitet.

Tech- & KI-Zentrum

Mehr zum Lesen

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.