Jak zapobiec przechwytywaniu niespójnego stanu bazy danych w kopiach zapasowych Home Assistant

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.

Zapobiegaj niespójności kopii zapasowych Home Assistant, pozwalając aplikacji koordynować stan aktywnej bazy danych albo zatrzymując zapis przed wykonaniem surowej kopii systemu plików.

Ryzyko nie polega wyłącznie na tworzeniu kopii podczas działania Home Assistant, lecz na metodzie kopiowania, która przechwytuje powiązane pliki bazy danych i aplikacji w różnych momentach, bez znajomości ich stanu transakcji. Wbudowane kopie zapasowe mogą koordynować komponenty Home Assistant, natomiast ogólne narzędzie rsync lub migawka mogą tego nie robić. Określ, który mechanizm odpowiada za spójność, unikaj nakładających się zadań intensywnie korzystających z bazy danych, zachowaj poprzednią poprawną kopię i sprawdź każdą zasadę poprzez odizolowane odtworzenie.

Nie traktuj aktywnej bazy SQLite jak zwykłego statycznego pliku

Recorder w Home Assistant może zapisywać dane, gdy ogólny proces tworzenia kopii zapasowej kopiuje katalog konfiguracji. W SQLite zatwierdzony stan może obejmować główną bazę danych oraz pliki dziennika lub WAL, dlatego przechwycenie niespójnych momentów może utworzyć kopię niepełną lub niemożliwą do odzyskania, nawet jeśli każde nazwisko pliku istnieje w archiwum.

Test aktywnej kopii SQLite wykazał, że skopiowanie wyłącznie głównego pliku bazy danych może po cichu pominąć zatwierdzone wiersze, które nadal znajdowały się w WAL, nawet jeśli skopiowana baza przeszła kontrolę integralności. Ta awaria kopii opartej na WAL pokazuje, dlaczego surowa kopia plików powinna korzystać z migawki świadomej bazy danych albo być wykonywana dopiero po poprawnym wstrzymaniu aktywności bazy.

Nie oznacza to, że Home Assistant zawsze musi być wyłączony na czas tworzenia kopii. Oznacza to, że mechanizm kopii zapasowej musi wiedzieć, jak utworzyć spójny punkt odzyskiwania. Używaj wbudowanej kopii zapasowej Home Assistant dla działającej instalacji, a zatrzymane kopie systemu plików pozostaw na potrzeby migracji, archiwizacji offline lub zewnętrznych narzędzi, które nie mają integracji świadomej aplikacji.

Unikaj konkurujących zadań tworzenia kopii lub konserwacji w tym samym oknie czasowym

Nawet kopia zapasowa świadoma aplikacji może nie przygotować bazy danych, gdy inny proces utrzymuje blokady albo gdy ścieżka magazynu jest poddawana nietypowym operacjom konserwacyjnym. Nie planuj uruchomienia drugiego dodatku do tworzenia kopii, konserwacji bazy danych, migawki NAS i kopii Home Assistant dokładnie w tej samej minucie tylko dlatego, że w domu jest spokojnie.

Rzeczywiste awarie kopii Home Assistant zgłaszają błędy przygotowania blokady bazy danych, a jeden z użytkowników ustalił, że przyczyną konfliktu był inny dodatek do tworzenia kopii. To sygnał zapobiegawczy: rozdzielaj nakładające się narzędzia, a w dzienniku aplikacji potwierdzaj zakończenie etapu poprzedzającego tworzenie kopii.

Rozdzielaj okna konserwacji i zapisuj przewidywany czas trwania. Jeśli kopia regularnie czeka na Recorder, najpierw ustal właściciela blokady lub problem ze stanem bazy danych. Nie zwiększaj bezmyślnie limitów czasu ani nie uruchamiaj większej liczby kopii równolegle; większa liczba zadań może nasilić dokładnie te konflikty, których próbujesz uniknąć.

W przypadku surowych kopii systemu plików wstrzymaj Home Assistant i zachowaj cały zestaw danych

Jeśli Twoja zasada wymaga bezpośredniego skopiowania katalogu konfiguracji, poprawnie zatrzymaj Home Assistant przed kopiowaniem, sprawdź, czy proces nie zapisuje już danych, i skopiuj cały wymagany stan zamiast wybierać tylko główny plik bazy danych. Zewnętrzne kopie baz danych twórz zgodnie z ich własną metodą zapewniania spójności.

Istniejące porównanie ZimaSpace dotyczące aktywnej i zatrzymanej kopii Home Assistant wyznacza tę samą granicę: świadoma aplikacji kopia wykonywana na żywo i surowe kopiowanie systemu plików to różne procedury, których nie należy łączyć w jedną zasadę.

Po skopiowaniu uruchom ponownie usługę i sprawdź prawidłowe działanie Recorder. Jeśli miejsce docelowe kopii znajduje się w magazynie sieciowym, sprawdź również, czy zestaw plików został skopiowany w całości przed odłączeniem montowania sieciowego. Zatrzymana kopia przerwana w połowie jest spójna tylko w wąskim sensie — jej źródło było nieaktywne; nadal nie stanowi kompletnego punktu odzyskiwania.

-15% OFF

Ufaj kopii zapasowej dopiero po pomyślnym odizolowanym odtworzeniu

Utwórz tymczasową instancję Home Assistant lub środowisko odzyskiwania i odtwórz kandydacką kopię bez pobierania zmiennych plików z produkcji. Sprawdź istniejących użytkowników, dane historyczne, pulpity, integracje, definicje automatyzacji oraz co najmniej jeden restart. Zapisz czas odtwarzania i wszelkie ręczne poprawki potrzebne do uruchomienia instancji.

W regresji Home Assistant Core dotyczącej konkretnej wersji 2026.7.2 odnotowano, że Recorder nie mógł wykonać punktu kontrolnego WAL podczas etapu poprzedzającego tworzenie kopii, po czym menedżer kopii przekroczył limit czasu oczekiwania na blokadę bazy danych. Ten sygnał awarii etapu poprzedzającego tworzenie kopii należy traktować wyłącznie jako dowód dotyczący tej konkretnej ścieżki i jako nieudany punkt odzyskiwania — nie jako dowód, że każdy limit czasu związany z blokadą ma tę samą przyczynę.

Uznaj zasadę za spełnioną, gdy tylko jeden mechanizm kopii odpowiada jednocześnie za spójność, etap przygotowania bazy danych kończy się pomyślnie, poprzednia znana jako poprawna kopia zostaje zachowana, a odtworzenie przywraca użytkowników, historię, ustawienia i prawidłowe działanie po restarcie. Jeśli test odtwarzania zakończy się niepowodzeniem, zachowaj dowody i utwórz nową obsługiwaną kopię albo kontrolowaną kopię po zatrzymaniu usługi, zanim usuniesz starsze punkty odzyskiwania.

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.