Replicación maestro-esclavo de Redis desde la entrada hasta el principio

Tabla de contenido

1. ¿Qué es Redis?

2. Replicación maestro-esclavo de Redis

1. ¿Qué es la replicación maestro-esclavo?

2. El papel de la replicación maestro-esclavo

3. Principio del flujo de trabajo de la replicación maestro-esclavo

3.1 Etapa de establecimiento del enlace

3.2 Etapa de sincronización de datos

 3.3 Etapa de propagación de comandos

3. Preguntas frecuentes sobre la replicación maestro-esclavo

1. Copia completa frecuente

2. Interrupciones frecuentes de la red

3. Los datos son inconsistentes


1. ¿Qué es Redis?

Redis es una de las bases de datos NoSQL más populares en la actualidad. Redis es una base de datos de código abierto, escrita en ANSI C, que contiene una variedad de estructuras de datos, compatible con red, basada en memoria y con persistencia opcional de pares clave-valor. Tiene las siguientes características :

  • Se ejecuta en función de la memoria y tiene un rendimiento eficiente.
  • Admite la distribución y, en teoría, se puede ampliar infinitamente.
  • sistema de almacenamiento de valores clave
  • El código abierto está escrito en lenguaje ANSI C, cumple con el protocolo BSD, admite la red, puede ser de tipo registro persistente y basado en memoria, base de datos de valores clave y proporciona API en varios idiomas.

¡DE ACUERDO! Hablemos brevemente sobre qué es Redis, que es NoSQL para almacenar datos y generalmente se usa para el almacenamiento en caché. ¡Este artículo también comprende mejor la capa subyacente de Redis basada en Redis!

2. Replicación maestro-esclavo de Redis

Dibujo sencillo para una fácil comprensión.

Configuración de múltiples servidores: un servidor maestro solo escribe datos y los sincroniza con otros servidores esclavos, el problema es la sincronización de datos  . Entonces utilizamos la replicación maestro-esclavo para resolver el problema de la sincronización de datos.

1. ¿Qué es la replicación maestro-esclavo?

La replicación maestro-esclavo consiste en copiar los datos del maestro al esclavo de manera inmediata y efectiva . ¡Esto se llama replicación maestro-esclavo!

Características: Un maestro puede tener varios esclavos y un esclavo solo corresponde a un maestro.

Responsabilidades:

  • maestro
    • escribir datos
    • Al realizar una operación de escritura, los datos modificados se sincronizan automáticamente con el esclavo.
    • Leer datos (generalmente solo se realizan operaciones de escritura y la lectura la realiza el servidor esclavo)        
  • ungüento
    • leer datos
    • prohibido escribir

2. El papel de la replicación maestro-esclavo

Separación de lectura y escritura: escritura maestra, lectura esclava, mejorando la capacidad de carga de lectura y escritura del servidor.

Equilibrio de carga: basado en la estructura maestro-esclavo, combinado con la separación de lectura y escritura, el esclavo comparte la carga maestra y cambia el número de esclavos de acuerdo con los cambios en la demanda. La carga de lectura de datos se comparte a través de múltiples nodos esclavos, lo que en gran medida Mejora la simultaneidad y el rendimiento del servidor Redis.

Recuperación de fallas: cuando ocurre un problema en el maestro, el esclavo proporciona servicios para lograr una rápida recuperación de fallas.

Redundancia de datos: la implementación de una copia de seguridad de datos activos es un método de redundancia de datos además de la persistencia.

Base de alta disponibilidad: basado en la replicación maestro-esclavo, cree un modo centinela y un clúster para implementar la solución de alta disponibilidad de Redis.

3. Principio del flujo de trabajo de la replicación maestro-esclavo

Primero, permítanme brindarles una descripción general. Divido el principio de replicación maestro-esclavo en dos etapas: el principio de funcionamiento se divide en: etapa de establecimiento de conexión , etapa de sincronización de datos y etapa de propagación de comandos .

3.1 Etapa de establecimiento del enlace

El servidor esclavo envía la dirección IP y el número de puerto del maestro , y el maestro recibe y responde. Después de recibir la respuesta, el esclavo guarda la IP y el número de puerto del maestro, establece un canal stocket basado en la información guardada e inicia un ping periódico, y el maestro también responderá con pong. Finalmente, el esclavo envía su propio número de puerto al maestro y el maestro guarda el número de puerto del esclavo.

 Paso 1: El esclavo establece la dirección y el puerto del maestro y guarda la información del maestro.

Paso 2: el esclavo establece la conexión del socket

Paso 3: el esclavo envía el comando ping (tarea del temporizador)

Paso 4: Autenticación (debido a que el servidor usa redis internamente y no se proporciona al mundo exterior, no está configurado)

Paso 5: el maestro guarda la información del puerto esclavo

3.2 Etapa de sincronización de datos

Cuando el servidor maestro enciende AOF o se convierte en el servidor maestro, se creará un búfer de replicación.

① Cuando el esclavo envía una solicitud psync2 por primera vez, transportará dos datos psync2? -1 (psync2 <runid> <offset>), lo que significa que debe copiarse por completo por primera vez. ②El maestro ejecuta bgsave para generar un archivo RDB y registra el desplazamiento de copia actual. ③Al recibir la instrucción, enviará +fullresync su propio desplazamiento de uid. Al enviar el archivo RDB al esclavo a través del stocket, se acepta el comando del cliente y el desplazamiento cambia. ④El esclavo recibe la resina completa, guarda el uid y el desplazamiento (desplazamiento) del maestro, borra todos los datos actuales, acepta el archivo RDB a través de stocket y restaura los datos RDB.

Lo anterior es una copia completa.

⑤Enviar comando: psync2 masterid offset. ⑥Acepte el comando, determine si la identificación coincide y determine si el desplazamiento está en el búfer de copia.

⑦ Si uno de los masterid o offset no se cumple, entonces se hará una copia completa. Si los enviados son los mismos que los del master, se omitirán. Si se cumple el masterid o offset, pero el offset es inconsistente con el desplazamiento guardado en el maestro, se enviará el desplazamiento continuo y se pasará. El socket envía los datos del desplazamiento en el maestro en el búfer de copia al desplazamiento maestro transferido. ⑧El esclavo recibe + concatiue y guarda el desplazamiento del maestro. Después de recibir el mensaje, ejecute bgrewriteaof para restaurar los datos.

Copia incremental arriba

 3.3 Etapa de propagación de comandos

 Envíe el comando replconf ack offset durante la fase de propagación del comando

3. Preguntas frecuentes sobre la replicación maestro-esclavo

1. Copia completa frecuente

Síntomas del problema:

        El entorno de la red no es bueno, hay una interrupción de la red y el esclavo no brinda servicios.

causas del problema:

        El búfer de copia es demasiado pequeño. Después de desconectar la red, el desplazamiento del esclavo se sale de los límites, lo que activa la copia completa.

Resultados finales:

        El esclavo realiza repetidamente una replicación completa.

resolver:

        Modificar el tamaño del búfer de copia

repl-backlog-size

2. Interrupciones frecuentes de la red

Fenómeno:

        La conexión entre salve y master está desconectada

razón:

        El maestro envía comandos ping con menos frecuencia

        El maestro establece un breve tiempo de espera.

        El comando ping provoca la pérdida de paquetes en la red

resolver:

        Aumentar la frecuencia de envío de comandos ping.

repl-ping-slave-period

El tiempo de respuesta del tiempo de espera debe ser al menos 5 a 10 veces la frecuencia del comando ping; de lo contrario, el esclavo expirará fácilmente.

3. Los datos son inconsistentes

Fenómeno:

        Varios esclavos obtienen los mismos datos sin sincronización

razón:

        La información de la red no está sincronizada y hay un retraso en el envío de datos.

plan:

       1. Optimice el entorno de red del maestro y el esclavo, generalmente implementados en la misma sala de computadoras, como Alibaba Cloud, etc.

        2. Supervise el retraso en la etapa maestro-esclavo (mediante compensación). Si el retraso del esclavo es demasiado grande, bloquee temporalmente el acceso a datos del programa al esclavo.

slave-serve-stale-data yes|no

 Después de abrirlo, solo responde a unos pocos comandos, como info y Slaveof (úselo con precaución a menos que los requisitos de coherencia de los datos sean altos).

Supongo que te gusta

Origin blog.csdn.net/wang20000102/article/details/132516446
Recomendado
Clasificación