¿Cuándo debería Home Assistant usar una base de datos o un host de almacenamiento independiente?

Eva Wong es la Redactora técnica y manitas residente en ZimaSpace. Una geek de toda la vida con pasión por los homelabs y el software de código abierto, se especializa en traducir conceptos técnicos complejos en guías accesibles y prácticas. Eva cree que el autoalojamiento debe ser divertido, no intimidante. A través de sus tutoriales, empodera a la comunidad para desmitificar las configuraciones de hardware, desde construir su primer NAS hasta dominar los contenedores Docker.

Home Assistant debería usar una base de datos o un host de almacenamiento independiente solo cuando esa separación resuelva un problema medido de capacidad, retención, copias de seguridad o dominio de fallos. Trasladar el estado fuera del controlador no es automáticamente una mejora.

Para muchos hogares, una base de datos local de SQLite para Recorder en un almacenamiento SSD fiable es la opción más sencilla, porque elimina las dependencias de red, autenticación, DNS y arranque del servidor de bases de datos. Antes de crear otro host, identifica primero si el problema real son las escrituras excesivas de Recorder, una retención demasiado larga, las consultas lentas del historial, la capacidad local limitada o la necesidad de recuperar un servicio de forma independiente.

Ajusta Recorder antes de añadir un servidor de bases de datos

El crecimiento de Recorder depende de las entidades y eventos que se almacenan, de la frecuencia con la que cambian y del tiempo durante el que se conserva el historial. Si los sensores ruidosos o los dominios innecesarios concentran la mayoría de las escrituras, trasladar la misma carga a un servidor de bases de datos más grande solo desplaza el problema en lugar de eliminarlo.

Un flujo de trabajo actual para ajustar Recorder muestra cómo la retención, las reglas de inclusión y exclusión y el comportamiento de confirmación afectan a la carga de escritura antes de plantearse una migración de la base de datos. Mide el tamaño de la base de datos, el tiempo de las consultas del historial, la latencia del almacenamiento y la actividad de escritura después del ajuste.

Mantén la base de datos local cuando la carga ajustada siga respondiendo bien, las copias de seguridad terminen dentro de la ventana de mantenimiento y la capacidad SSD disponible se mantenga en un margen cómodo. La separación debe responder a un requisito incumplido, no a la creencia general de que las bases de datos cliente-servidor siempre son más rápidas.

Usa una base de datos externa cuando sus ventajas operativas sean reales

Un host independiente con MariaDB, MySQL o PostgreSQL puede tener sentido cuando Home Assistant comparte una plataforma de bases de datos que ya se administra correctamente, cuando una retención prolongada genera una presión sostenida sobre las consultas, cuando el host del controlador debe seguir siendo ligero o reemplazable, o cuando las copias de seguridad y la supervisión de la base de datos necesitan un ciclo de vida independiente.

Un ejemplo de migración de SQLite a MariaDB muestra los nuevos elementos que introduce esta decisión: el servicio de base de datos, las credenciales, la dirección de red, la inicialización del esquema, el procedimiento de migración, la validación y la reversión. Un caso real más amplio de migración de la base de datos de Home Assistant muestra por qué un historial prolongado y grandes volúmenes de datos pueden justificar la administración adicional.

El artículo de ZimaSpace sobre la fiabilidad de las actualizaciones con una base de datos externa establece el límite de mantenimiento correspondiente: la base de datos debe recibir copias de seguridad, actualizarse y restaurarse como un servicio independiente, en lugar de tratarse como una infraestructura invisible.

No coloques por defecto una base de datos SQLite activa en un recurso compartido de red

Un servidor de bases de datos remoto y un archivo de base de datos almacenado en SMB o NFS son arquitecturas diferentes. Una base de datos cliente-servidor realiza el bloqueo y las transacciones dentro del servicio de base de datos y envía las solicitudes a través de la red. SQLite realiza el bloqueo del archivo de base de datos mediante el sistema de archivos, por lo que la semántica del sistema de archivos de red, la disponibilidad del montaje, la latencia y el comportamiento de los bloqueos pasan a formar parte de cada transacción.

El análisis más amplio de los bloqueos de SQLite explica por qué los sistemas de archivos de red pueden producir un comportamiento de bloqueo diferente al de un disco local. Un caso práctico de fallo en un recurso compartido de red muestra el riesgo cuando la base de datos activa de Recorder depende de un montaje remoto.

Usa un NAS sin problema para copias de seguridad, exportaciones, archivos multimedia y otros datos diseñados para el almacenamiento en red. Si el estado activo de Recorder debe residir en otra máquina, prefiere una base de datos cliente-servidor compatible en lugar de mover el archivo SQLite a un recurso compartido.

Separa el almacenamiento masivo del estado activo de Home Assistant

No todos los directorios que crecen en Home Assistant pertenecen al mismo nivel de almacenamiento. La configuración, el estado de las integraciones, la base de datos activa de Recorder, los archivos multimedia, los clips de cámara, las exportaciones y las copias de seguridad tienen distintas necesidades de latencia y recuperación. Mantén el estado pequeño y actualizado con frecuencia en un almacenamiento local de baja latencia, salvo que un servicio independiente lo gestione de forma deliberada.

Mueve los archivos multimedia masivos o las generaciones de copias de seguridad a la capacidad del NAS mediante puntos de montaje estables. Documenta si Home Assistant puede arrancar sin ese montaje. La ausencia de un archivo fotográfico no debería impedir que se inicien las automatizaciones de iluminación, mientras que la ausencia de la base de datos activa debería generar un estado degradado explícito, no una alternativa silenciosa que nadie detecte.

Función de los datos Ubicación predeterminada Motivo para separar
Configuración y estado activo SSD local Baja latencia y recuperación sencilla
SQLite de Recorder SSD local Evitar dependencias de bloqueo de sistemas de archivos de red
Base de datos SQL externa Host local o independiente para la base de datos Escalabilidad, retención, copias de seguridad y administración independientes
Archivos multimedia y exportaciones Local o NAS La capacidad suele importar más que la latencia
Copias de seguridad Al menos una copia fuera del host Sobrevivir a la pérdida del host activo

Comprueba el arranque, los fallos y la restauración antes de hacer permanente la separación

Prueba el nuevo rol de base de datos o almacenamiento sin eliminar la ruta de recuperación anterior. Reinicia el host de la base de datos antes que Home Assistant, reinicia Home Assistant antes de que la base de datos esté lista, interrumpe la red, cambia las credenciales, llena el sistema de archivos de destino hasta acercarlo a su umbral de reserva y restaura la base de datos en una instancia limpia.

Mide el tiempo de las consultas del historial en p95, la latencia de las automatizaciones durante una actividad intensa de Recorder, el tiempo de reinicio, la duración de las copias de seguridad y el tiempo de recuperación tras una interrupción del host de la base de datos. Si la separación mejora una métrica, pero convierte un reinicio del controlador de treinta segundos en un procedimiento de recuperación con varios servicios, incluye ese coste operativo en la decisión.

Mantén el almacenamiento local cuando ya cumpla el objetivo. Usa un host de base de datos independiente cuando las operaciones de una base de datos cliente-servidor y la recuperación independiente ofrezcan ventajas reales. Usa un host de almacenamiento independiente para los datos masivos y las copias de seguridad, pero no hagas que el control local crítico dependa de un sistema de archivos remoto sin una razón comprobada.

Configuración de NAS y Servidor

Más para leer

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.