Replicación de la base de datos
La replicación de la base de datos es la técnica fundamental detrás de hacer una tolerancia a fallas del sistema de base de datos y disponible continuamente. La replicación copia los datos de la base de datos maestra (base de datos primaria) a una o más bases de datos de esclavos (réplicas) que aseguran que los datos sean accesibles en cualquier momento si un nodo maestro falla. Este proceso se combina con un proceso automático de conmutación por error que promueve un nuevo maestro de los nodos de réplica disponibles cuando el nodo maestro falla.
Replicación de redis incorporada
Redis comenzó a apoyar la replicación desde sus primeras versiones e inmensamente mejorado. La versión independiente admite la replicación básica con el comando SlaveOF convirtiendo un nodo existente en un esclavo del nodo de base de datos primario. Además, la función Redis Sentinel permite la replicación con una función de conmutación por error más avanzada. Además, el clúster Redis admite un rico conjunto de características de alta disponibilidad para sistemas de bases de datos más distribuidos y grandes.
Replicación básica de Redis con comando SlaveOF
Una de las formas fundamentales de lograr la replicación de Redis es utilizando el comando SlaveOf.
Está a un paso de hacer una instancia de redis un nodo esclavo. La siguiente línea debe agregarse al archivo de configuración de la instancia particular:
esclavo
Caso de uso
El siguiente ejemplo demuestra un escenario en el que una instancia de Redis dada está configurada para ser un nodo esclavo de un nodo maestro que se ejecuta en el 127.0.0.1 dirección en el puerto 7000.
Con esta configuración, la base de datos maestra copiará todos los datos al nodo esclavo que asegura que el esclavo sea una copia exacta del nodo de la base de datos primaria.
Una vez que el nodo maestro está en funcionamiento a las 127.0.0.1 y puerto 7000, iniciemos la otra instancia cuyo archivo de configuración contiene la configuración de SlaveOf. La nueva instancia se ejecutará en el puerto 7001.
La nueva instancia se inicia con éxito y se sincroniza con Master Runs en 127.0.0.1 (puerto 7000).
Si escribe algunos datos en el nodo maestro, se pueden leer del esclavo de la siguiente manera. Significa que el maestro y la réplica se han sincronizado correctamente.
Escribir datos en el nodo maestro se ejecuta en el puerto 7000 de la siguiente manera.
La lectura de datos del nodo esclavo se ejecuta en el puerto 7001 como se muestra en lo siguiente:
Con esta configuración, cuando falla el Redis Master, ya tenemos una copia exacta de la base de datos primaria que se ejecuta en el puerto 7001. Del mismo modo, puede configurar múltiples esclavos para un nodo maestro dado. El único inconveniente en esta configuración es que debe cuidar manualmente el proceso de conmutación por error.
Pros
Contras
Alta disponibilidad con Redis Sentinel
Redis Sentinel se introdujo para lidiar con los inconvenientes de la solución anterior. Redis Sentinel es un sistema distribuido que actúa como una solución avanzada de alta disponibilidad para Redis junto con otras características como proveedor de notificaciones, herramientas de monitoreo y proveedor de configuración para clientes.
El centinela es capaz de promover un esclavo a un nodo maestro automáticamente sin ninguna intervención humana. El proceso maestro de conmutación por error comienza si el número máximo especificado de nodos centinela (quórum) está de acuerdo en que el nodo maestro no es accesible. Entonces, la disponibilidad de los nodos centinela es importante. Sin embargo, se recomienda utilizar un clúster centinela separado para ejecutar nodos centinela por separado de los nodos maestros. Con esta configuración, los clientes de Redis hablan primero con el nodo Sentinel y solicitan información sobre el nodo maestro que se ejecuta actualmente. Entonces solo los clientes trabajarán con el maestro actual.
Es posible iniciar un servidor Redis en modo Sentinel como se muestra en el siguiente comando:
servidor de redis--centinela
Como se muestra en la siguiente salida, el servidor se ha iniciado en modo Sentinel.
Además, Redis Sentinels también se puede colocar con los servidores Redis.
Pros
Contras
Alta disponibilidad con agrupación de Redis
Con las últimas versiones de Redis, se agregó un componente de clúster a la pila Redis. Es compatible:
Entonces, el clúster Redis aborda varios aspectos que faltan en soluciones anteriores. Se volvió enormemente beneficioso para las grandes empresas que generan y almacenan una gran cantidad de datos. Porque el fragmento distribuye sus datos entre múltiples maestros, cada uno con un subconjunto de todo el espacio clave. Te da un impulso de rendimiento masivo.
Al mismo tiempo, la replicación está disponible en los grupos de Redis donde puede configurar múltiples nodos esclavos para un maestro dado. Por lo general, un nodo de clúster debe contener exactamente una instancia de servidor Redis. Pero es posible configurar la replicación cruzada implementando múltiples instancias en un solo nodo.
Además, la opción de conmutación por error automática es proporcionada por los grupos Redis donde el nodo esclavo promoverá a un maestro. En una configuración de clúster, el quórum no está obligado a promover un nuevo nodo maestro o fragmento para trabajar. El quórum del nodo maestro solo es necesario para que todo el clúster se ejecute.
Por lo tanto, la solución de clúster Redis puede verse como una solución todo en uno para aquellos que buscan fragmentos, replicación y alta disponibilidad en sus aplicaciones.
Pros
Contras
Redis admite una alta disponibilidad con Redis independiente, modelo Redis Sentinel y componente de clúster incorporado. Las tres soluciones tienen sus pros y contras como se discutió anteriormente. En general, Redis Sentinel es la opción de referencia si solo está buscando alta disponibilidad y no le importa el rendimiento. Pero si está buscando un equilibrio entre el rendimiento y la alta disponibilidad con la replicación cruzada, sin duda, el clúster Redis es el mejor entre los tres.