Jak naprawić Home Assistant po zapełnieniu woluminu bazy danych

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Gdy wolumin bazy danych Home Assistant jest pełny, najpierw zatrzymaj nowe zapisy. Utwórz wolne miejsce bez usuwania aktywnej bazy danych, zachowaj jej kopię i ustal, czy Recorder może otworzyć bazę oraz dalej nią zarządzać, zanim wybierzesz czyszczenie, naprawę lub przywrócenie.

Pełny wolumin może zablokować właśnie operację czyszczenia, która ma go naprawić, szczególnie gdy przepakowanie lub rekonstrukcja bazy danych wymaga tymczasowego miejsca. Zachowaj ostrożną kolejność: zatrzymaj Home Assistant, sprawdź, który system plików jest pełny, przenieś niezwiązane pliki lub rozszerz wolumin, skopiuj bazę danych, sprawdź logi i integralność, a następnie zastosuj najmniej destrukcyjną metodę odzyskiwania odpowiednią do wyniku.

Zatrzymaj zapisy i potwierdź, który system plików jest faktycznie pełny

Zatrzymaj Home Assistant lub Recorder, gdy tylko błędy zapisu bazy danych zaczną się powtarzać. Potwierdź system plików, punkt montowania lub wolumin thin zawierający aktywną bazę danych i porównaj całkowitą oraz wolną przestrzeń, liczbę i-węzłów, rozmiar bazy danych, logów, kopii zapasowych i zapisywalnych warstw kontenerów. Pełny dysk systemowy i pełny zewnętrzny wolumin bazy danych wymagają różnych rozwiązań.

Nie zakładaj, że baza danych jest jedynym użytkownikiem przestrzeni. Stare kopie zapasowe, logi debugowania, eksporty, migawki i niezwiązane warstwy kontenerów mogą zapewnić bezpieczniejsze awaryjne miejsce. Przenoś lub usuwaj tylko pliki, których przeznaczenie i status kopii zapasowej są znane; nie usuwaj pojedynczo aktywnej bazy danych, plików WAL, dziennika ani plików silnika bazy danych.

Poradnik ZimaSpace dotyczący znajdowania użycia dysku Dockera poza mapowanymi danymi jest właściwą kontrolą równoległą, gdy skonfigurowana ścieżka bazy danych wygląda na niewielką, ale dysk systemowy hosta nadal jest wyczerpany.

Utwórz miejsce robocze i zachowaj bazę danych

W pierwszej kolejności rozszerz wolumin lub przenieś niezwiązane archiwa na inny sprawdzony dysk. Jeśli jest to niemożliwe, skopiuj zatrzymaną bazę danych wraz z powiązanymi plikami na nośnik o wystarczającej pojemności, zanim rozpoczniesz konserwację. Zapisz właściciela, uprawnienia, silnik, wersję Home Assistant i adres URL bazy danych.

Przepakowanie nie jest dobrym pierwszym krokiem awaryjnym na pełnym systemie plików, ponieważ może wymagać znacznej ilości tymczasowego miejsca. Z notatek dotyczących rozwiązywania problemów wynika, że przepakowanie SQLite może wymagać wolnej przestrzeni porównywalnej z rozmiarem bazy danych; praktyczny wniosek to utworzenie miejsca roboczego przed przepakowaniem, zamiast ufania niemal pełnemu woluminowi.

Po utworzeniu miejsca potwierdź, że system plików jest zapisywalny i stabilny. Jeśli został ponownie zamontowany w trybie tylko do odczytu, zgłasza błędy sprzętowe lub natychmiast ponownie traci miejsce, zatrzymaj się i napraw warstwę pamięci masowej przed otwarciem bazy danych.

Wybierz czyszczenie, naprawę integralności lub przywrócenie sprawdzonej kopii

Uruchom Home Assistant tylko na tyle długo, aby sprawdzić logi Reсordera i stan bazy danych. Jeśli baza danych otwiera się prawidłowo, skróć okres przechowywania lub wyklucz głośne encje i uruchom czyszczenie bez przepakowania. Zmniejszy to logiczną ilość danych, unikając największego kroku wymagającego tymczasowego miejsca.

Jeśli pojawią się błędy integralności, ponownie zatrzymaj zapisy i pracuj na kopii. Użyj obsługiwanych przez silnik bazy danych narzędzi do sprawdzania integralności i odzyskiwania albo przywróć sprawdzoną kopię zapasową. Nie uruchamiaj wielokrotnie Home Assistant z uszkodzoną bazą danych, ponieważ nowe zapisy mogą utrudnić odzyskiwanie i zaciemnić pierwotną przyczynę awarii.

Jeśli nie istnieje użyteczna kopia bazy danych ani kopia zapasowa, utworzenie nowej bazy danych Reсordera przywróci działanie, ale spowoduje utratę historii. Potraktuj to jako ostatnią ścieżkę odzyskiwania, zachowaj uszkodzoną bazę do późniejszej analizy, a konfigurację i rejestry trzymaj oddzielnie od decyzji dotyczącej historii.

Ogranicz źródło przyrostu przed przywróceniem usługi

Ustal, co zapełniło wolumin: nadmierna liczba aktualizacji encji, długi okres przechowywania, duże logi, nagromadzenie kopii zapasowych, nieudane czyszczenie, rozrost bazy danych lub wolumin mniejszy niż zamierzony. Napraw zmierzone źródło problemu, zamiast od razu stosować wszystkie opcje czyszczenia.

Ustaw uzasadniony okres przechowywania, wyklucz encje, których historia aktualizowana z dużą częstotliwością ma niewielką wartość, przywróć logowanie z poziomu debugowania do normalnego, przenieś kopie zapasowe poza hosta i skonfiguruj alerty dotyczące zarówno wolnego miejsca, jak i tempa przyrostu. Pozostaw zapas miejsca na aktualizacje, kopie zapasowe, zmiany schematu i konserwację.

Porównaj odzyskaną bazę danych z kryteriami ZimaSpace dotyczącymi konserwacji lub wymiany bazy danych, gdy powtarzające się uszkodzenia lub błędy integralności sprawiają, że dalsza naprawa jest mniej wiarygodna niż przywrócenie sprawdzonej kopii.

Zweryfikuj odzyskiwanie pod obciążeniem Reсordera

Uruchom Home Assistant i potwierdź bieżące stany, nowe zapisy historii, zapytania dziennika, działania automatyzacji oraz rozmiar bazy danych. Odtwórz to samo obciążenie z dużą liczbą aktualizacji, które poprzedziło awarię, obserwując wolne miejsce, błędy zapisu, opóźnienia bazy danych i tempo przyrostu.

Uruchom ponownie Home Assistant dwukrotnie i wykonaj następne zaplanowane czyszczenie lub tworzenie kopii zapasowej. Odzyskiwanie można uznać za udane tylko wtedy, gdy baza danych otwiera się ponownie, historia jest aktualizowana, wolne miejsce pozostaje powyżej granicy zatrzymania, a błędy integralności i trybu tylko do odczytu nie wracają.

Wróć do zachowanej kopii lub sprawdzonej kopii zapasowej, jeśli konserwacja spowoduje nowe uszkodzenia, historia niespodziewanie zniknie albo wolumin zacznie zapełniać się w tym samym tempie. Zgłoś problemy z pamięcią masową, błędy silnika bazy danych i możliwe do odtworzenia awarie Reсordera, dołączając logi oraz zachowaną chronologię zdarzeń.

Wsparcie i wskazówki

Więcej do przeczytania

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.