Descripción general de la replicación en MongoDB

MongoDB es una base de datos orientada a documentos de código abierto que es altamente escalable, es una base de datos NoSQL. Se puede utilizar para el almacenamiento de datos de gran volumen.

MongoDB almacena los datos en formato JSON, que es muy flexible y el modelo del documento se asigna a los objetos en los códigos de la aplicación.

¿Qué es la replicación MongoDB?

Por replicación nos referimos a la agrupación de servidores que realiza la misma funcionalidad. En el caso de MongoDB, tenemos servidores MongoDB para almacenar los datos. El objetivo de la replicación es garantizar que tengamos una alta disponibilidad de datos. En caso de que alguno de los servidores se caiga, siempre deberíamos tener una copia de los datos disponibles en otro servidor para que la disponibilidad no se vea afectada.

Los datos deben replicarse periódicamente y a intervalos regulares para asegurarse de que no perdamos ningún dato, e incluso si el servidor primario se cae, el segundo debe poder atender las solicitudes de los usuarios.

La replicación también es muy efectiva en caso de equilibrio de carga, por ejemplo, si tenemos una cantidad de usuarios que intentan leer o escribir datos en los servidores, en ese caso, sería injusto si todas las solicitudes se envían o recuperan de solo en un servidor, debe haber un mecanismo de equilibrio que distribuya la carga por igual a los servidores disponibles en el clúster para que ningún servidor se quede sin memoria o ancho de banda y se caiga.

Trabajo de replicación en el proceso MongoDB

La replicación en MongoDB se logra con la ayuda de conjuntos de réplica. Los conjuntos de réplica son la agrupación de servidores MongoDB. Hay un servidor primario y es responsable de recibir todas las solicitudes o las operaciones de escritura de los clientes y las otras instancias que se agregarán al conjunto de réplicas se llamarán como instancias secundarias que serán responsables de todas las operaciones de lectura.

  • Como se ilustra en el diagrama anterior, todos los datos replican el nodo primario a nodos secundarios, solo habrá un nodo primario en cualquier conjunto de réplicas.
  • Cada vez que ocurre una conmutación por error o se realiza alguna actividad de mantenimiento, se elige un nuevo nodo primario.
  • Una vez que se recupera la conmutación por error, el nodo fallido ahora actúa como un nodo secundario.
  • La aplicación cliente siempre se comunica con el nodo primario, que luego es seguido por la replicación de datos a todos los nodos secundarios.

Conjuntos de réplicas, creación y operaciones

Para crear una replicación completa de los servidores MongoDB, primero debemos crear un conjunto de réplicas de instancias MongoDB.

Imaginemos que tenemos tres servidores, repl1, repl2 y repl3 donde repl1 es el servidor primario y el resto son secundarios.

Adición de replicación de nodo primario en MongoDB:

  • Asegúrese de que las instancias de mongo.exe estén instaladas en todos los servidores dados.
  • Todos los mongod.exe deben poder hacer ping entre sí, es decir, pueden comunicarse. Para verificar lo mismo, ejecute los siguientes comandos desde los servidores primarios (al principio), es decir, repl1 en nuestro caso.

mongo –host repl2 –port 27017

mongo –host repl3 –port 27017

Del mismo modo, también podemos hacer la misma prueba desde otros servidores

  • Al usar el comando mongo –replset, deberíamos poder iniciar nuestra primera instancia de mongod.exe.
    mongo –replset “Replica_A” Donde Replica_A es el nombre de nuestro conjunto de réplicas.
  • Por ahora, hemos agregado el primer servidor a nuestro conjunto de réplicas, el siguiente paso es iniciar el conjunto de réplicas emitiendo el comando rs.initiate ().
  • El siguiente paso es el paso de verificación donde nos aseguraremos de que lo que hayamos configurado hasta ahora sea correcto, podemos hacerlo ejecutando el comando rs.conf ().

Adición de replicación de nodo secundario en MongoDB:

Una vez que se agrega el servidor primario, es fácil agregar los otros nodos secundarios, podemos hacerlo emitiendo el comando rs.add ().

Por lo tanto, ejecute el siguiente comando, dado que repl1 es nuestro servidor primario y repl2 y repl3 son servidores secundarios respectivamente.

rs.add ("repl2")

rs.add ("repl3")

Eliminación de servidores del conjunto de réplicas:

Para eliminar un servidor de cualquier conjunto de réplicas, puede hacerlo usando el comando rs.remove ().

Hay ciertos pasos que intervienen en el proceso como se indica a continuación:

  • Al principio, cierre la instancia que debe eliminarse. Esto se puede hacer ejecutando el comando db.shutdownserver a través de mongo cell.
  • El siguiente paso es conectarse al servidor primario.
  • Ejecute el siguiente comando, digamos que tenemos repl1, repl2 y repl3 como servidores primario y secundario respectivamente y queremos eliminar repl3, luego ejecutaremos el siguiente comando:

rs.remove ("repl3")

Algunos comandos para solucionar problemas

  • Todos los mongod.exe deben poder hacer ping entre sí, es decir, pueden comunicarse. Para verificar lo mismo, ejecute los siguientes comandos desde los servidores primarios (al principio), es decir, repl1 en nuestro caso.

mongo –host repl2 –port 27017

mongo –host repl3 –port 27017

Del mismo modo, también podemos hacer la misma prueba desde otros servidores

  • El rs.status () le dará el estado de su conjunto de réplicas
  • Para verificar oplog, que es un registro para registrar todas las operaciones de escritura que se realizaron, emita este comando: rs.printReplicationInfo.

Ventajas de la replicación en MongoDB

El objetivo de la replicación es garantizar que tengamos una alta disponibilidad de datos. En caso de que alguno de los servidores se caiga, siempre deberíamos tener una copia de los datos disponibles en otro servidor para que la disponibilidad no se vea afectada. La replicación también es muy efectiva en caso de equilibrio de carga, por ejemplo, si tenemos un número de los usuarios de intentan leer o escribir datos en los servidores.

En resumen, las principales ventajas de la replicación tienen el siguiente propósito:

  1. Alta disponibilidad
  2. Balanceo de carga

Conclusión:

Como hemos visto, la replicación de MongoDB es un proceso en el que replicamos los datos en más de un servidor para garantizar una alta disponibilidad. Esto se puede hacer creando un conjunto de réplicas y agregando los servidores primario y secundario.

Artículos recomendados:

Esta ha sido una guía para la replicación en MongoDB. Aquí discutimos la creación, operación, trabajo, ventajas y algunos comandos para la resolución de problemas. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Herramientas GUI MongoDB
  2. Comandos MongoDB
  3. Alternativas MongoDB
  4. Cómo instalar MongoDB