Kiedy Home Assistant powinien korzystać z osobnej bazy danych lub hosta pamięci masowej?

Eva Wong jest redaktorką techniczną i rezydentką majsterkowania w ZimaSpace. Jest geekiem od zawsze, z pasją do domowych laboratoriów i oprogramowania open source, a jej specjalnością jest przekładanie złożonych zagadnień technicznych na przystępne, praktyczne poradniki. Eva wierzy, że samodzielne hostowanie powinno sprawiać radość, a nie onieśmielać. Dzięki swoim samouczkom pomaga społeczności oswoić konfigurację sprzętu, od budowy pierwszego serwera NAS po opanowanie kontenerów Docker.

Home Assistant powinien korzystać z osobnej bazy danych lub hosta pamięci masowej tylko wtedy, gdy takie rozdzielenie rozwiązuje zmierzony problem z pojemnością, okresem przechowywania danych, kopiami zapasowymi lub domeną awarii. Przeniesienie danych poza host sterujący nie jest automatycznie ulepszeniem.

W wielu domach lokalna baza danych Recorder SQLite na niezawodnym dysku SSD to najprostsze rozwiązanie, ponieważ eliminuje zależności od sieci, uwierzytelniania, DNS i uruchamiania serwera bazy danych. Zanim utworzysz kolejny host, ustal, czy rzeczywistym problemem są nadmierne zapisy Recorder, długi okres przechowywania danych, powolne zapytania o historię, ograniczona pojemność lokalna czy potrzeba niezależnego odzyskiwania jednej usługi.

Dostrój Recorder, zanim dodasz serwer bazodanowy

Przyrost danych Recorder zależy od przechowywanych encji i zdarzeń, częstotliwości ich zmian oraz czasu przechowywania historii. Jeśli większość zapisów generują zaszumione czujniki lub niepotrzebne domeny, przeniesienie tego samego obciążenia na większy serwer bazodanowy zmieni tylko miejsce występowania problemu, zamiast go rozwiązać.

Aktualny proces dostrajania Recorder pokazuje, jak okres przechowywania danych, reguły uwzględniania i wykluczania oraz sposób zatwierdzania transakcji wpływają na obciążenie zapisem, zanim rozważy się migrację bazy danych. Po dostrojeniu zmierz rozmiar bazy danych, czas zapytań o historię, opóźnienia pamięci masowej i aktywność zapisu.

Pozostaw bazę lokalnie, gdy dostrojone obciążenie działa płynnie, tworzenie kopii zapasowych kończy się w oknie serwisowym, a dostępna pojemność dysku SSD jest wystarczająca. Rozdzielenie usług powinno wynikać z niespełnionego wymagania, a nie z ogólnego przekonania, że bazy danych działające w architekturze klient-serwer są zawsze szybsze.

Używaj zewnętrznej bazy danych, gdy jej zalety operacyjne są rzeczywiste

Osobny host MariaDB, MySQL lub PostgreSQL może mieć sens, gdy Home Assistant korzysta ze wspólnej, dobrze zarządzanej platformy bazodanowej, długi okres przechowywania danych powoduje stałe obciążenie zapytań, host sterujący musi pozostać lekki lub łatwy do wymiany albo kopie zapasowe i monitorowanie bazy wymagają niezależnego cyklu życia.

Przykład migracji z SQLite na MariaDB pokazuje nowe elementy, które wiążą się z tym wyborem: usługę bazy danych, dane logowania, adres sieciowy, inicjalizację schematu, procedurę migracji, weryfikację i przywracanie poprzedniego stanu. Obszerniejszy przypadek migracji bazy danych Home Assistant z rzeczywistego wdrożenia pokazuje, dlaczego długa historia i duże zbiory danych mogą uzasadniać dodatkowe czynności administracyjne.

Artykuł ZimaSpace o niezawodności aktualizacji zewnętrznej bazy danych wyznacza odpowiednie granice obowiązków związanych z utrzymaniem: bazę danych należy tworzyć jako kopię zapasową, aktualizować i przywracać jako oddzielną usługę, zamiast traktować ją jak niewidoczną część infrastruktury.

Nie umieszczaj domyślnie aktywnej bazy SQLite na udziale sieciowym

Zdalny serwer bazy danych i plik bazy danych przechowywany w SMB lub NFS to różne architektury. Baza danych w architekturze klient-serwer obsługuje blokowanie i transakcje wewnątrz usługi bazy danych, a żądania przesyła przez sieć. SQLite blokuje pliki bazy danych za pośrednictwem systemu plików, więc semantyka systemu plików w sieci, dostępność montowania, opóźnienia i sposób blokowania mają wpływ na każdą transakcję.

Szersza analiza blokowania w SQLite wyjaśnia, dlaczego systemy plików w sieci mogą powodować blokowanie inne niż na dysku lokalnym. Przypadek awarii na udziale sieciowym w Home Assistant pokazuje praktyczne ryzyko związane z uzależnieniem aktywnej bazy Recorder od zdalnego montowania.

Swobodnie korzystaj z NAS-a do przechowywania kopii zapasowych, eksportów, multimediów i innych danych przeznaczonych do magazynowania w sieci. Jeśli aktywna baza Recorder musi znajdować się na innym urządzeniu, wybierz obsługiwaną bazę danych w architekturze klient-serwer zamiast przenosić plik SQLite do udziału sieciowego.

Oddziel magazyn danych zbiorczych od aktywnego stanu Home Assistant

Nie każdy rozrastający się katalog Home Assistant należy do tej samej warstwy pamięci masowej. Konfiguracja, stan integracji, aktywna baza danych Recorder, multimedia, nagrania z kamer, eksporty i kopie zapasowe mają różne wymagania dotyczące opóźnień i odzyskiwania danych. Przechowuj niewielki, często aktualizowany stan na lokalnej pamięci masowej o niskim opóźnieniu, chyba że zarządza nim celowo osobna usługa.

Przenieś duże zbiory multimediów lub generacje kopii zapasowych na pojemność NAS-a, korzystając ze stabilnych punktów montowania. Udokumentuj, czy Home Assistant może się uruchomić bez tego punktu montowania. Brak archiwum zdjęć nie powinien uniemożliwiać uruchamiania automatyzacji oświetlenia, a brak aktywnej bazy danych powinien powodować jawny stan ograniczonej funkcjonalności, a nie niezauważalny awaryjny powrót do innego trybu.

Rola danych Domyślne umiejscowienie Powód rozdzielenia
Konfiguracja i aktywny stan Lokalny SSD Niskie opóźnienie i proste odzyskiwanie
SQLite w Recorder Lokalny SSD Unikaj zależności od blokad w sieciowym systemie plików
Zewnętrzna baza danych SQL Lokalna lub na osobnym hoście bazy danych Niezależne skalowanie, przechowywanie, tworzenie kopii zapasowych i administracja
Multimedia i eksporty Lokalnie lub na NAS-ie Pojemność często ma większe znaczenie niż opóźnienie
Kopie zapasowe Co najmniej jedna kopia poza hostem Przetrwaj utratę aktywnego hosta

Sprawdź uruchamianie, awarie i odtwarzanie, zanim wprowadzisz podział na stałe

Uruchom nową rolę bazy danych lub pamięci masowej w środowisku testowym, nie usuwając dotychczasowej ścieżki odzyskiwania. Uruchom ponownie hosta bazy danych przed Home Assistant, uruchom ponownie Home Assistant, zanim baza danych będzie gotowa, przerwij połączenie sieciowe, zmień dane uwierzytelniające, zapełnij docelowy system plików niemal do progu rezerwy i odtwórz bazę danych w czystej instancji.

Mierz czas zapytań do historii dla p95, opóźnienie automatyzacji podczas intensywnej pracy Recorder, czas ponownego uruchamiania, czas tworzenia kopii zapasowej oraz czas odzyskiwania po awarii hosta bazy danych. Jeśli podział poprawia jeden wskaźnik, ale zmienia trzydziestosekundowe ponowne uruchomienie kontrolera w procedurę odzyskiwania obejmującą wiele usług, uwzględnij ten koszt operacyjny przy podejmowaniu decyzji.

Pozostaw lokalną pamięć masową, jeśli już spełnia wymagania. Użyj osobnego hosta bazy danych, gdy obsługa bazy danych w modelu klient-serwer i niezależne odzyskiwanie danych przynoszą rzeczywiste korzyści. Użyj osobnego hosta pamięci masowej do danych zbiorczych i kopii zapasowych, ale nie uzależniaj krytycznego sterowania lokalnego od zdalnego systemu plików bez sprawdzonego powodu.

Konfiguracja NAS-a i serwera

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.