Wenn das Datenbank-Volume von Home Assistant voll ist, stoppen Sie zuerst neue Schreibvorgänge. Schaffen Sie Arbeitsbereich, ohne die aktive Datenbank zu löschen, bewahren Sie eine Kopie auf und prüfen Sie, ob Recorder die Datenbank öffnen und verwalten kann, bevor Sie sich für Bereinigung, Reparatur oder Wiederherstellung entscheiden.
Ein volles Volume kann genau den Bereinigungsvorgang blockieren, der das Problem beheben soll, insbesondere wenn das Neuorganisieren oder Rekonstruieren der Datenbank temporären Speicherplatz benötigt. Gehen Sie vorsichtig vor: Home Assistant stoppen, feststellen, welches Dateisystem tatsächlich voll ist, nicht zugehörige Dateien verschieben oder das Volume erweitern, die Datenbank kopieren, Protokolle und Integrität prüfen und anschließend die am wenigsten destruktive Wiederherstellung wählen, die zum Ergebnis passt.
Schreibvorgänge stoppen und das tatsächlich volle Dateisystem bestätigen
Stoppen Sie Home Assistant oder Recorder, sobald sich Fehler beim Schreiben in die Datenbank wiederholen. Stellen Sie fest, welches Dateisystem, welcher Mount oder welches Thin-Volume die aktive Datenbank enthält, und vergleichen Sie Gesamtspeicher, freien Speicherplatz, Inodes, Datenbankgröße, Protokolle, Backups und beschreibbare Container-Ebenen. Eine volle Systemfestplatte und ein volles externes Datenbank-Volume erfordern unterschiedliche Lösungen.
Gehen Sie nicht davon aus, dass die Datenbank der einzige Speicherverbraucher ist. Alte Backups, Debug-Protokolle, Exporte, Snapshots und nicht zugehörige Container-Ebenen können sichereren Notfall-Speicherplatz bieten. Verschieben oder löschen Sie nur Dateien, deren Zweck und Backup-Status bekannt sind. Entfernen Sie nicht die aktive Datenbank, WAL-, Journal- oder Datenbank-Engine-Dateien einzeln.
Der ZimaSpace-Leitfaden zum Auffinden von Docker-Speicherverbrauch außerhalb zugeordneter Daten ist die passende zusätzliche Prüfung, wenn der konfigurierte Datenbankpfad klein aussieht, die Systemfestplatte des Hosts jedoch weiterhin erschöpft ist.
Arbeitsbereich schaffen und die Datenbank bewahren
Erweitern Sie vorzugsweise das Volume oder verschieben Sie nicht zugehörige Archive auf ein anderes geprüftes Laufwerk. Wenn das nicht möglich ist, kopieren Sie die gestoppte Datenbank und die zugehörigen Dateien auf einen Speicher mit ausreichender Kapazität, bevor Sie Wartungsarbeiten durchführen. Notieren Sie Besitzer, Berechtigungen, Engine, Home-Assistant-Version und Datenbank-URL.
Das Neuorganisieren ist auf einem vollen Dateisystem kein geeigneter erster Notfallschritt, da dafür viel temporärer Speicherplatz erforderlich sein kann. Hinweise aus der Community besagen, dass das Neuorganisieren von SQLite freien Speicherplatz in einer Größenordnung der Datenbankgröße benötigen kann. Entscheidend ist daher, vor dem Neuorganisieren Arbeitsbereich zu schaffen, statt einem nahezu vollen Volume zu vertrauen.
Prüfen Sie nach dem Freimachen von Speicherplatz, ob das Dateisystem beschreibbar und stabil ist. Wenn es schreibgeschützt erneut eingebunden wurde, Hardwarefehler meldet oder sofort wieder Speicherplatz verliert, halten Sie an und reparieren Sie zunächst die Speicherebene, bevor Sie die Datenbank öffnen.
Bereinigung, Integritätsreparatur oder Wiederherstellung einer intakten Sicherung wählen
Starten Sie Home Assistant nur so lange, wie nötig ist, um Recorder-Protokolle und den Datenbankstatus zu prüfen. Wenn sich die Datenbank fehlerfrei öffnen lässt, verringern Sie die Aufbewahrungsdauer oder schließen Sie häufig aktualisierte Entitäten aus und führen Sie zunächst eine Bereinigung ohne Neuorganisieren durch. Dadurch wird die logische Datenmenge reduziert, ohne den Schritt mit dem höchsten temporären Speicherbedarf auszuführen.
Wenn Integritätsfehler auftreten, stoppen Sie die Schreibvorgänge erneut und arbeiten Sie mit einer Kopie. Verwenden Sie die unterstützten Integritäts- und Wiederherstellungswerkzeuge der Datenbank-Engine oder stellen Sie ein bekannt intaktes Backup wieder her. Starten Sie Home Assistant nicht wiederholt mit einer beschädigten Datenbank, da neue Schreibvorgänge die Wiederherstellung erschweren und den ursprünglichen Fehler verschleiern können.
Wenn keine verwendbare Datenbankkopie und kein Backup vorhanden sind, stellt das Erstellen einer neuen Recorder-Datenbank den Betrieb wieder her, führt jedoch zum Verlust des Verlaufs. Betrachten Sie dies als letzten Wiederherstellungsweg, bewahren Sie die fehlerhafte Datenbank für eine spätere Analyse auf und behandeln Sie Konfiguration und Registrierungen unabhängig von der Entscheidung über den Verlauf.
Die Ursache des Wachstums vor der Wiederinbetriebnahme reduzieren
Ermitteln Sie, wodurch das Volume gefüllt wurde: übermäßige Aktualisierungen von Entitäten, lange Aufbewahrungsdauer, umfangreiche Protokolle, angesammelte Backups, fehlgeschlagene Bereinigung, Datenbankaufblähung oder ein kleiner als vorgesehenes Volume. Beheben Sie die gemessene Ursache, statt alle Bereinigungsoptionen gleichzeitig anzuwenden.
Legen Sie eine vertretbare Aufbewahrungsdauer fest, schließen Sie Entitäten aus, deren Verlauf mit hoher Aktualisierungsfrequenz nur wenig Nutzen bringt, stellen Sie die Protokollierung von Debug auf normal zurück, verschieben Sie Backup-Kopien vom Host und richten Sie Warnungen sowohl für den freien Speicherplatz als auch für die Wachstumsrate ein. Lassen Sie ausreichend Spielraum für Upgrades, Backups, Schemaänderungen und Wartungsarbeiten.
Vergleichen Sie die wiederhergestellte Datenbank mit den ZimaSpace-Kriterien für Datenbankwartung oder -austausch, wenn wiederholte Beschädigungen oder Integritätsfehler eine fortgesetzte Reparatur weniger vertrauenswürdig machen als die Wiederherstellung einer intakten Sicherung.
Die Wiederherstellung unter Recorder-Belastung validieren
Starten Sie Home Assistant und bestätigen Sie aktuelle Zustände, neue Verlaufsschreibvorgänge, Logbuchabfragen, Automatisierungsaktionen und die Datenbankgröße. Führen Sie dieselbe Arbeitslast mit hoher Aktualisierungsrate aus, die dem Fehler vorausging, und beobachten Sie dabei freien Speicherplatz, Schreibfehler, Datenbanklatenz und Wachstumsrate.
Starten Sie Home Assistant zweimal neu und führen Sie die nächste geplante Bereinigung oder Sicherung aus. Die Wiederherstellung ist nur dann erfolgreich, wenn sich die Datenbank erneut öffnen lässt, der Verlauf fortgeschrieben wird, der freie Speicherplatz oberhalb der Stoppgrenze bleibt und keine Integritäts- oder Schreibschutzfehler zurückkehren.
Kehren Sie zur bewahrten Kopie oder zu einem bekannten intakten Backup zurück, wenn die Wartung neue Beschädigungen verursacht, der Verlauf unerwartet verschwindet oder sich das Volume weiterhin mit derselben Rate füllt. Eskalieren Sie Speicherfehler, Fehler der Datenbank-Engine und reproduzierbare Recorder-Probleme zusammen mit Protokollen und der bewahrten zeitlichen Abfolge.
Support & Tipps
Mehr zum Lesen

So optimieren Sie Datenbankverbindungen von Home Assistant für gleichzeitig ausgeführte Container
Eine externe Recorder-Datenbank anhand der gemessenen aktiven Verbindungen und Latenz abstimmen, nicht durch Erhöhen der maximalen Verbindungsanzahl oder Kopieren des Verbindungspools eines anderen Hosts.

So verhindern Sie doppelte Jobs oder Importe in Home Assistant
Verwenden Sie Traces und eindeutige Operationsschlüssel, damit Automatisierungen und Importe sicher wiederholt werden können, ohne doppelte Aktionen oder Datensätze zu erzeugen.

Warum erstellt Home Assistant fehlende Dateien mit dem falschen Besitzer neu?
Gleiche die Laufzeit-UID und -GID an den Host-Pfad an, repariere nur die betroffenen Dateien im gestoppten Zustand und überprüfe den Besitz nach der Neuerstellung.

