Tipos de replicación en MongoDB





¡Hola, Khabrovites! Hemos decodificado para usted una parte del tutorial de MongoDB de Evgeny Aristov, un desarrollador de 20 años y autor del curso en línea "Bases de datos no relacionales" . El material, al igual que el curso en sí, será útil para los especialistas que se encuentren con NoSQL y quieran aprender a optimizar sus bases de datos y trabajar con ellas.



¿Por qué replicar?



  1. Alta disponibilidad. Una copia de seguridad es buena, pero lleva tiempo implementarla.
  2. Escala horizontal. En el caso de que el servidor se quede sin núcleos físicos y memoria.
  3. Es mejor hacer una copia de seguridad desde una réplica y no desde un maestro.
  4. Carga la distribución geográfica.


En MongoDB, no hay muchos tipos de replicación listos para usar: el más relevante en este momento es Replicaset, y el segundo es Maestro-esclavo, que está limitado a la versión 3.6 y no se discutirá en detalle en este artículo.



# 1. Escribir y leer desde el servidor principal



Tenemos un controlador de aplicación cliente que lee y escribe en el nodo principal. Además, de acuerdo con el protocolo de replicación, la información que se escribe en el nodo principal se envía a los nodos secundarios.







# 2. Leer de una señal



Una alternativa a la lectura y escritura de la primaria es cuando el conductor puede leer la información de la secundaria. En este caso, la configuración puede ser diferente, por ejemplo, "es preferible leer información del Secundario y luego del Primario" o "leer información del nodo más cercano en el mapa de red", etc. Estas opciones de configuración se utilizan con más frecuencia que la primera opción de replicación, donde todo pasa por el primario.







3 formas de hacer que una réplica sea legible:



  • Especificar db.slaveOk()
  • Especifique los parámetros necesarios en la cadena de conexión del controlador
  • Especifique todo y luego escriba con mayor precisión en la consulta, por ejemplo, lea de Secundaria en la región Sur: db.collection.find({}).readPref( “secondary”, [ { “region”: “South”} ] )


Problemas de lectura de réplicas



  1. Dado que la grabación es asíncrona, ya se puede realizar en Primaria, pero no llegar a Secundaria, por lo que se leerán los datos antiguos de Secundaria.
  2. , , .

    , . MongoDB , , , .
  3. , () — «».




A) Los nodos se "escuchan" entre sí, esta conexión se llama Heartbeat. Es decir, cada nodo es revisado constantemente por otros en busca del tema "vivo / no vivo", con el fin de tomar alguna acción si algo sucede.







B) Un nodo secundario se cambia a Arbiter. Se trata de una aplicación muy liviana, se ejecuta como Mongo, prácticamente no consume recursos y se encarga de determinar qué nodo a la hora de votar reconocer al principal. Y esta es generalmente la configuración recomendada.







Las principales características de esta configuración



  • Replicación asincrónica
  • El árbitro no tiene datos y, por lo tanto, es muy ligero.
  • Primario puede convertirse en Secundario y viceversa. El árbitro no puede convertirse en primario o secundario
  • El número máximo de respuestas es 50 y solo 7 de ellas pueden votar
  • Arbiter Primary Secondary, , .. , Arbiter .


Si está interesado en aprender más sobre las capacidades de agrupación en clústeres de MongoDB, puede ver la lección de demostración completa aquí . En la lección, Evgeny Aristov demuestra las diferencias entre Replicaset y Master-slave, explica el proceso de quórum, escalado, fragmentación y la selección correcta de la clave para fragmentación.



Explorar las capacidades de MongoDB es parte del curso en línea de bases de datos no relacionales. El curso está dirigido a desarrolladores, administradores y otros profesionales que se encuentran con NoSQL. En el aula, los estudiantes en la práctica dominan las herramientas más relevantes de la actualidad: Cassandra, MongoDB, Redis, ClickHouse, Tarantool, Kafka, Neo4j, RabbitMQ.



El inicio ya es el 30 de septiembre, pero durante el primer mes puedes unirte al grupo. Estudia el programa, pasa porprueba de ingreso y únete!



All Articles