Optimización y replicación maestro-esclavo de Redis

Introducción: optimización y replicación maestro-esclavo de Redis

Optimización y replicación maestro-esclavo de Redis

Inserte la descripción de la imagen aquí

Replicación maestro-esclavo

Antes de prestar atención a la replicación maestro-esclavo, primero debemos considerar qué está mal con una sola máquina.

  • mal funcionamiento de la máquina
  • Cuello de botella de capacidad
  • Cuello de botella de QPS

Estos son los problemas que encuentra un solo nodo, por lo que esta vez hay una replicación maestro-esclavo (un maestro y un esclavo, un maestro y varios esclavos)

Inserte la descripción de la imagen aquí

Utilice la replicación maestro-esclavo para:

  • Copia de datos
  • Rendimiento de lectura extendido

Nota:

  • Un maestro puede tener varios esclavos
  • Un esclavo tiene solo un maestro
  • El flujo de datos es unidireccional, de maestro a esclavo

Configuración de replicación maestro-esclavo

Dos formas de lograr

  • esclavo del comando

Dos máquinas: nodo maestro: 47.11.11.11 nodo esclavo 47.22.22.22

Ejecute el comando slaveof en el nodo esclavo

47.22.22.22-6379 > slacefof 47.11.11.11 6379
OK

Cancelar copia:

47.22.22.22-6379 > slacefof no one
OK
  • Cambio de configuracion
slaveof ip  port    //从节点ip + 端口
slave-read-only yes //开启只做读的操作
  • Comparación de dos formas

Inserte la descripción de la imagen aquí

  • Ver maestro y esclavo
127.0.0.1:6379> info replication
# Replication
role:master   //主节点 
connected_slaves:0
master_replid:1d43401335a5343b27b1638fc9843e3a593fc1a7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Puntos de conocimiento:

  • RunID del nodo principal:

Después de que se inicia cada nodo de redis, se asigna dinámicamente una cadena hexadecimal de 40 dígitos como el ID de ejecución. La función principal de la ID en ejecución es identificar de forma única el nodo redis. Por ejemplo, el nodo esclavo guarda la ID en ejecución del nodo maestro para identificar qué nodo maestro está replicando. Si solo se usa el método ip + puerto para identificar el nodo maestro, entonces el nodo maestro se reinicia y cambia el conjunto de datos general (como reemplazar el archivo RDB / AOF), y no es seguro que el nodo esclavo copie datos basados ​​en el desplazamiento, por lo que cuando cambia la ID en ejecución Entonces, el nodo esclavo hará una replicación completa. Puede ver el ID de ejecución del nodo actual en el comando del servidor de información.

Cabe señalar que cuando redis se cierra y se reinicia, la identificación de ejecución cambiará en consecuencia.


Copia completa y copia parcial, etc.

Copia completa

Se utiliza para la replicación inicial u otras situaciones en las que no se puede realizar una replicación parcial Todos los datos del nodo maestro se envían al nodo esclavo. Cuando la cantidad de datos es demasiado grande, causará una gran sobrecarga de red.

redis2.8 + proceso de copia completo

Inserte la descripción de la imagen aquí

Costo:

  1. bg ahorra tiempo
  2. Transmisión de red de archivos RDB
  3. Es hora de borrar los datos del nodo
  4. Cargar tiempo RDB desde el nodo
  5. Posible tiempo de reescritura de AOF

Copia parcial

Se utiliza para lidiar con escenarios de pérdida de datos causados ​​por fallas de la red en la replicación maestro-esclavo. Cuando el nodo esclavo se conecta al nodo maestro nuevamente, si las condiciones lo permiten, el nodo maestro volverá a emitir los datos perdidos al nodo esclavo porque los datos re-emitidos están lejos Menos de la cantidad total de datos puede evitar efectivamente la sobrecarga excesiva de la copia completa. Sin embargo, debe tenerse en cuenta que si el tiempo de interrupción de la red es demasiado largo y el nodo maestro no puede guardar completamente los comandos de escritura ejecutados durante la interrupción, no se puede realizar la replicación parcial y se sigue utilizando la replicación completa.

Proceso:
Inserte la descripción de la imagen aquí

Desplazamiento de copia:

  • Los nodos maestro y esclavo que participan en la replicación mantendrán su propio desplazamiento de replicación. Después de que el nodo maestro haya procesado la operación de comando de escritura, acumulará la longitud de bytes del comando. La información estadística está en el indicador master_repl_offset en la replicación de información.
  • El nodo esclavo informa su compensación de replicación al nodo maestro cada segundo, por lo que el nodo maestro también guardará la compensación de replicación del nodo esclavo esclavo0: ip = 192.168.1.3, puerto = 6379, estado = en línea, compensación = 116424, retraso = 0
  • Una vez que el nodo esclavo recibe el comando enviado por el nodo maestro, también acumulará y registrará su propio desplazamiento. Las estadísticas están en slave_repl_offset en la replicación de información.

Copie el búfer de trabajos pendientes:

  • El búfer de acumulación de replicación es una cola de longitud fija almacenada en el nodo maestro, con un tamaño predeterminado de 1 MB. Se crea cuando el nodo maestro tiene un nodo esclavo conectado. En este momento, cuando el nodo maestro responde a un comando de escritura, no solo enviará el comando al nodo esclavo Y escribe en el búfer de copia de trabajos pendientes.
    En la fase de propagación del comando, además de enviar el comando de escritura al nodo esclavo, el nodo maestro también enviará una copia al búfer de registro de copia como respaldo del comando de escritura; además de almacenar el comando de escritura, el búfer de registro de copia también almacena cada uno de ellos. El desplazamiento de copia correspondiente al byte (desplazamiento). Dado que el búfer del registro de copias tiene una longitud fija y el primero en entrar es el primero en salir, guarda los comandos de escritura ejecutados recientemente por el nodo maestro; los comandos de escritura que son más antiguos se eliminarán del búfer.

Problemas comunes en la producción

Separación de lectura y escritura

Derivación al nodo esclavo. El nodo maestro escribe datos y el nodo esclavo lee datos, puede encontrar problemas de lectura

  1. Retraso de replicación de datos
  2. Leer datos caducados
  3. Fallo del nodo esclavo
Configuración maestro-esclavo inconsistente
  1. Por ejemplo, una memoria máxima incoherente provocará la pérdida de datos
  2. Por ejemplo, parámetros de optimización de la estructura de datos (como hash-max-ziplist-entries): la memoria es inconsistente
Evite la copia completa
  1. Cuando copie por completo por primera vez
      , la primera vez es inevitable, intente mantener los nodos lo más pequeños posible y maneje picos bajos
  2. El ID de ejecución del nodo no coincide con la
      conmutación por error, como centinela o clúster
  3. Área de búfer de reserva de copia insuficiente:
      aumente la configuración del área de búfer de copia rel_backlog_size, mejora de la red
Evite la tormenta de replicaciones
  1. Tormenta de replicación de una sola máquina (redis <4.0 Cuando el maestro está inactivo y reiniciado, hará que todos los esclavos debajo de la máquina se repliquen al mismo tiempo. Evite implementar un conjunto de redis maestro-esclavo en una sola máquina) ====》 El nodo maestro está disperso en varias máquinas

Notas finales:

  • En la implementación del proceso anterior, si la persistencia AOF no está habilitada desde la biblioteca, si la persistencia AOF de la biblioteca está habilitada, la replicación completa aún se usa al reiniciar.
  • Los datos copiados del maestro no se perderán, pero los datos escritos por el maestro anterior (nodo 6379 en la figura anterior) ya no se sincronizarán.
  • Slaveof se puede utilizar para cambiar el nodo maestro al que pertenece, es decir, volver a ser esclavo de otro maestro, pero el nuevo maestro primero borrará todos los datos del nodo esclavo.
  • En cuanto al retardo de separación de lectura y escritura: Separación de lectura y escritura, el maestro copiará los datos al esclavo en un solo paso. Si el esclavo está bloqueado, el comando de escritura de los datos del maestro se retrasará, causando inconsistencia en los datos. ------- Generalmente no considere este problema
  • Leer datos caducados: Redis tiene dos estrategias al eliminar claves. Una es la estrategia perezosa, es decir, la clave se elimina solo cuando redis opera la clave, y la segunda es muestrear periódicamente la clave para eliminar ------ - Cuando hay muchos datos clave, la velocidad de muestreo no es tan rápida como la velocidad de generación de claves, lo que hará que muchos datos desactualizados no se eliminen, porque redis generalmente está en el nodo maestro (agregando y eliminando datos), y el esclavo no puede eliminar los datos desactualizados incluso si se consulta. Hará que el esclavo lea datos caducados (resuelto en redis3.2)
  • Recomendar el artículo maestro-esclavo de redis https://www.cnblogs.com/wdliu/p/9407179.html
  • Recomiende el artículo de copia completa y parcial de redis https://blog.csdn.net/gaobinzhan/article/details/106536326

Blog personal: [ http://blog.yanxiaolong.cn/] ( Blog personal: http://blog.yanxiaolong.cn/
)

Enlace original: https://developer.aliyun.com/article/775627?

Declaración de derechos de autor: El contenido de este artículo es aportado voluntariamente por usuarios registrados de nombre real de Alibaba Cloud. Los derechos de autor pertenecen al autor original. La Comunidad de desarrolladores de Alibaba Cloud no posee sus derechos de autor y no asume las responsabilidades legales correspondientes. Consulte el "Acuerdo de servicio al usuario de la comunidad de desarrolladores de Alibaba Cloud" y las "Directrices de protección de propiedad intelectual de la comunidad de desarrolladores de Alibaba Cloud" para conocer las reglas específicas. Si encuentra que existe una sospecha de plagio en esta comunidad, complete el formulario de queja por infracción para informarlo. Una vez verificado, la comunidad eliminará inmediatamente el contenido sospechoso de infracción.

Supongo que te gusta

Origin blog.csdn.net/alitech2017/article/details/109095706
Recomendado
Clasificación