När bör Home Assistant använda en separat databas- eller lagringsvärd?

Eva Wong är teknisk skribent och händig hemmabyggare på ZimaSpace. Som tekniknörd sedan barnsben med ett brinnande intresse för hemlabb och programvara med öppen källkodspecialiserar hon sig på att göra komplexa tekniska koncept begripliga genom praktiska, praktiska guider. Eva tycker att självhosting ska vara roligt, inte avskräckande. Genom sina handledningar hjälper hon communityn att göra hårdvaruinstallationer mindre mystiska, från att bygga sin första NAS till att bemästra Docker-containrar.

Home Assistant bör använda en separat databas- eller lagringsvärd endast när separationen löser ett uppmätt problem med kapacitet, lagringstid, säkerhetskopiering eller felområden. Att flytta data från styrenheten är inte automatiskt en uppgradering.

För många hem är en lokal SQLite Recorder-databas på tillförlitlig SSD-lagring det enklaste alternativet, eftersom det eliminerar beroenden av nätverk, autentisering, DNS och uppstart av databasservern. Innan du skapar ytterligare en värd bör du först ta reda på om det verkliga problemet är för många skrivningar från Recorder, lång lagringstid, långsamma historikfrågor, begränsad lokal kapacitet eller behovet av att kunna återställa en tjänst oberoende av andra.

Finjustera Recorder innan du lägger till en databasserver

Recorder växer beroende på vilka entiteter och händelser som lagras, hur ofta de ändras och hur länge historiken sparas. Om brusiga sensorer eller onödiga domäner står för merparten av skrivningarna flyttar du bara problemet till en större databasserver i stället för att lösa det.

Ett aktuellt arbetsflöde för finjustering av Recorder visar hur lagringstid, regler för inkludering och exkludering samt skrivbekräftelser påverkar skrivbelastningen innan en databasflytt övervägs. Mät databasens storlek, frågetiden för historik, lagringsfördröjningen och skrivaktiviteten efter finjusteringen.

Behåll databasen lokalt när den optimerade arbetsbelastningen förblir responsiv, säkerhetskopieringar blir klara inom underhållsfönstret och den tillgängliga SSD-kapaciteten är tillräcklig. Separera först när ett konkret krav inte uppfylls, inte utifrån den allmänna föreställningen att klient-serverdatabaser alltid är snabbare.

Använd en extern databas när den ger verkliga driftsfördelar

En separat värd för MariaDB, MySQL eller PostgreSQL kan vara lämplig när Home Assistant delar en redan välskött databasplattform, när lång historik ger ett konstant högt frågetryck, när styrenheten måste hållas lätt eller kunna bytas ut, eller när databassäkerhetskopiering och övervakning behöver ha en oberoende livscykel.

Ett exempel på migrering från SQLite till MariaDB visar vad det valet innebär: databastjänst, inloggningsuppgifter, nätverksadress, initiering av schema, migreringsprocedur, validering och återställning. Ett större verkligt exempel på databasmigrering i Home Assistant visar varför lång historik och stora datamängder kan motivera den extra administrationen.

ZimaSpaces artikel om tillförlitlighet vid uppgradering av extern databas beskriver motsvarande gräns för underhåll: databasen måste säkerhetskopieras, uppgraderas och återställas som en egen tjänst, i stället för att behandlas som osynlig infrastruktur.

Placera inte en aktiv SQLite-databas på en nätverksresurs som standard

En fjärransluten databasserver och en databasfil lagrad på SMB eller NFS är två olika arkitekturer. En klient-server-databas hanterar låsning och transaktioner i själva databastjänsten och skickar förfrågningar över nätverket. SQLite hanterar låsningen av databasfilen via filsystemet, vilket innebär att nätverksfilsystemets semantik, tillgängligheten för monteringen, fördröjningen och låsbeteendet påverkar varje transaktion.

Den mer omfattande analysen av SQLite-låsning förklarar varför nätverksfilsystem kan ge ett låsbeteende som skiljer sig från en lokal disk. Ett fall med fel på en nätverksresurs i Home Assistant visar den praktiska risken med att låta den aktiva Recorder-databasen vara beroende av en fjärranslutning.

Använd gärna en NAS för säkerhetskopior, exporter, media och annan data avsedd för nätverkslagring. Om det aktiva Recorder-tillståndet måste finnas på en annan maskin bör du välja en databastjänst av typen klient-server som stöds, i stället för att flytta SQLite-filen till en nätverksresurs.

Separera bulkdata från Home Assistants aktiva tillstånd

Alla växande kataloger i Home Assistant hör inte hemma på samma lagringsnivå. Konfiguration, integrationstillstånd, den aktiva Recorder-databasen, media, kameraklipp, exporter och säkerhetskopior har olika behov av latens och återställning. Behåll små, ofta uppdaterade tillstånd på lokal lagring med låg latens, såvida inte en separat tjänst uttryckligen hanterar dem.

Flytta stora mediamängder eller generationer av säkerhetskopior till NAS-kapacitet bakom stabila monteringspunkter. Dokumentera om Home Assistant får starta utan den monteringen. Ett saknat fotoarkiv ska inte hindra belysningsautomationer från att starta, medan en saknad aktiv databas ska leda till ett tydligt degraderat läge i stället för en tyst reservlösning som ingen märker.

Dataroll Standardplacering Skäl att separera
Konfiguration och aktivt tillstånd Lokal SSD Låg latens och enkel återställning
Recorder SQLite Lokal SSD Undvik beroenden av fillåsning över nätverket
Extern SQL-databas Lokal eller separat databashost Oberoende skalning, lagringstid, säkerhetskopiering och administration
Media och exporter Lokalt eller NAS Kapacitet är ofta viktigare än latens
Säkerhetskopior Minst en kopia utanför värden Klara av att den aktiva värden förloras

Verifiera start, felhantering och återställning innan uppdelningen görs permanent

Ta den nya databas- eller lagringsrollen i drift utan att ta bort den gamla återställningsvägen. Starta om databashosten före Home Assistant, starta om Home Assistant innan databasen är redo, avbryt nätverket, rotera inloggningsuppgifter, fyll målfilsystemet till nära dess reservgräns och återställ databasen till en ren instans.

Mät p95-tiden för historikfrågor, automationsfördröjning vid hög Recorder-belastning, omstartstid, säkerhetskopieringstid och återställningstid efter ett avbrott på databashosten. Om uppdelningen förbättrar ett mått men förvandlar en trettio sekunder lång omstart av styrenheten till en återställningsprocedur med flera tjänster, ta med den operativa kostnaden i beslutet.

Behåll lokal lagring när den redan uppfyller målet. Använd en separat databashost när klient-server-databasåtgärder och oberoende återställning innebär verkliga fördelar. Använd en separat lagringshost för stora datamängder och säkerhetskopior, men låt inte kritisk lokal styrning vara beroende av ett fjärrfilsystem utan ett väl utprovat skäl.

Installation av NAS och server

Mer att läsa

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.