Kiedy Home Assistant powinien korzystać z oddzielnej bazy danych lub hosta magazynu?

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.

Home Assistant powinien korzystać z oddzielnego hosta bazy danych lub magazynu danych tylko wtedy, gdy takie rozdzielenie rozwiązuje konkretny problem związany z pojemnością, przechowywaniem danych, kopiami zapasowymi lub domeną awarii. Przeniesienie stanu poza kontroler nie jest automatycznie ulepszeniem.

W wielu domach lokalna baza danych SQLite programu Recorder na niezawodnym nośniku SSD jest najprostszym rozwiązaniem, ponieważ eliminuje zależności od sieci, uwierzytelniania, DNS oraz uruchamiania serwera bazy danych. Zanim utworzysz kolejny host, najpierw ustal, czy rzeczywistym problemem są nadmierne zapisy programu Recorder, długi okres przechowywania, wolne zapytania do historii, ograniczona lokalna pojemność czy potrzeba niezależnego przywracania pojedynczej usługi.

Skonfiguruj Recorder, zanim dodasz serwer bazy danych

Rozmiar bazy danych Recorder zależy od przechowywanych encji i zdarzeń, częstotliwości ich zmian oraz długości przechowywania historii. Jeśli większość zapisów generują hałaśliwe czujniki lub niepotrzebne domeny, przeniesienie tego samego obciążenia na większy serwer bazy danych tylko przesuwa problem, zamiast go usuwać.

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

Pozostaw bazę danych lokalnie, jeśli dostrojone obciążenie nadal działa płynnie, tworzenie kopii zapasowych kończy się w wyznaczonym oknie serwisowym, a dostępna pojemność SSD pozostaje z bezpiecznym zapasem. Rozdzielenie powinno wynikać z niespełnionego wymagania, a nie z ogólnego przekonania, że bazy danych typu klient-serwer są zawsze szybsze.

Korzystaj z zewnętrznej bazy danych, gdy jej korzyści operacyjne są rzeczywiste

Oddzielny host MariaDB, MySQL lub PostgreSQL może mieć sens, gdy Home Assistant współdzieli już dobrze zarządzaną platformę bazodanową, gdy długa historia powoduje stałe obciążenie zapytań, gdy host kontrolera musi pozostać lekki lub łatwy do wymiany albo gdy tworzenie kopii zapasowych i monitorowanie bazy danych wymagają niezależnego cyklu życia.

Przykład migracji z SQLite do MariaDB ilustruje nowe elementy wprowadzane przez tę decyzję: usługę bazy danych, dane uwierzytelniające, adres sieciowy, inicjalizację schematu, procedurę migracji, walidację i wycofanie zmian. Większy, rzeczywisty przypadek migracji bazy danych Home Assistant pokazuje, dlaczego długa historia i duże zbiory danych mogą uzasadniać dodatkową administrację.

Artykuł ZimaSpace dotyczący niezawodności aktualizacji zewnętrznej bazy danych wyznacza odpowiednią granicę utrzymania: bazę danych należy tworzyć w kopii zapasowej, aktualizować i przywracać jako niezależną usługę, zamiast traktować ją jak niewidoczną infrastrukturę.

Domyślnie nie umieszczaj aktywnej bazy SQLite na udziale sieciowym

Zdalny serwer bazy danych i plik bazy danych przechowywany na SMB lub NFS to dwie różne architektury. Baza danych klient-serwer wykonuje blokowanie i transakcje wewnątrz usługi bazy danych oraz przesyła żądania przez sieć. SQLite wykonuje blokowanie pliku bazy danych za pośrednictwem systemu plików, dlatego semantyka sieciowego systemu plików, dostępność punktu montowania, opóźnienia i działanie blokad stają się częścią każdej transakcji.

Szersza analiza blokowania SQLite wyjaśnia, dlaczego sieciowe systemy plików mogą powodować działanie blokad odmienne od tego znanego z lokalnego dysku. Przypadek awarii na udziale sieciowym dotyczący Home Assistant pokazuje praktyczne ryzyko, gdy aktywna baza danych Recorder zależy od zdalnego montowania.

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

Oddziel dane masowe od aktywnego stanu Home Assistant

Nie każdy rozrastający się katalog Home Assistant powinien znajdować się w tej samej warstwie 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. Przechowuj niewielki, często aktualizowany stan na lokalnym nośniku o niskich opóźnieniach, chyba że zarządza nim celowo oddzielna usługa.

Przenieś duże zbiory multimediów lub generacje kopii zapasowych na pojemność NAS-u, korzystając ze stabilnych punktów montowania. Udokumentuj, czy Home Assistant może uruchomić się bez tego punktu montowania. Brak archiwum zdjęć nie powinien uniemożliwiać uruchomienia automatyzacji oświetlenia, natomiast brak aktywnej bazy danych powinien powodować jawny stan ograniczonego działania, a nie ciche przełączenie awaryjne, którego nikt nie zauważy.

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

Sprawdź uruchamianie, awarie i przywracanie, zanim utrwalisz podział

Przygotuj nową rolę bazy danych lub magazynu danych, 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 sieć, zmień dane uwierzytelniające, zapełnij docelowy system plików niemal do ustalonego poziomu rezerwy i przywróć bazę danych na czystej instancji.

Zmierz czas zapytań do historii w 95. percentylu, opóźnienia automatyzacji podczas intensywnej aktywności programu Recorder, czas ponownego uruchomienia, czas tworzenia kopii zapasowej oraz czas odzyskiwania po awarii hosta bazy danych. Jeśli podział poprawia jeden parametr, ale zmienia trzydziestosekundowy restart kontrolera w procedurę odzyskiwania obejmującą wiele usług, uwzględnij ten koszt operacyjny w decyzji.

Pozostaw dane na lokalnym nośniku, jeśli już spełnia wymagania docelowe. Użyj oddzielnego hosta bazy danych, gdy operacje na bazie klient-serwer i niezależne odzyskiwanie rzeczywiście przynoszą korzyści. Użyj oddzielnego hosta pamięci masowej do danych masowych i kopii zapasowych, ale nie uzależniaj krytycznego lokalnego sterowania od zdalnego systemu plików bez sprawdzonego powodu.

Konfiguracja NAS 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.