Replicación de MongoDB (conjunto de réplicas)

La replicación de MongoDB es el proceso de sincronizar datos en múltiples servidores.

La replicación proporciona copias de seguridad redundantes de los datos y almacena copias de los datos en múltiples servidores, lo que mejora la disponibilidad de los datos y puede garantizar la seguridad de los mismos.

La replicación también le permite recuperar datos de fallos de hardware e interrupciones del servicio.


¿Qué es la replicación?

  • Garantizar la seguridad de los datos
  • Alta disponibilidad de datos (24*7)
  • Recuperación ante desastres
  • Mantenimiento sin tiempo de inactividad (como copias de seguridad, reconstrucción de índices, compresión)
  • Lectura distribuida de datos

Principio de replicación de MongoDB

La replicación de MongoDB requiere al menos dos nodos. Uno de ellos es el nodo principal, que se encarga de procesar las solicitudes de los clientes, y los demás son nodos secundarios, que se encargan de replicar los datos del nodo principal.

Las configuraciones comunes de los nodos de MongoDB son: un principal y un secundario, un principal y múltiples secundarios.

El nodo principal registra todas las operaciones (oplog) realizadas en él. Los nodos secundarios consultan periódicamente al nodo principal para obtener estas operaciones y luego las ejecutan en sus propias copias de datos, garantizando así que los datos de los nodos secundarios sean consistentes con los del nodo principal.

El diagrama de la estructura de replicación de MongoDB se muestra a continuación:

MongoDB复制结构图

En el diagrama anterior, el cliente lee datos del nodo principal. Cuando el cliente escribe datos en el nodo principal, el nodo principal intercambia datos con los nodos secundarios para garantizar la consistencia de los datos.

Características del conjunto de réplicas:

  • Un clúster de N nodos
  • Cualquier nodo puede ser el nodo principal
  • Todas las operaciones de escritura se realizan en el nodo principal
  • Conmutación por error automática (failover automático)
  • Recuperación automática

Configuración del conjunto de réplicas de MongoDB

En este tutorial, usamos el mismo MongoDB para realizar el experimento de principal-secundario de MongoDB. Los pasos son los siguientes:

1. Detenga el servidor MongoDB que se está ejecutando.

Ahora iniciamos MongoDB especificando la opción `--replSet`. El formato básico de la sintaxis de `--replSet` es el siguiente:

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

Ejemplo

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0

El ejemplo anterior inicia una instancia de MongoDB llamada `rs0`, con el número de puerto 27017.

Después de iniciarlo, abra la ventana de comandos y conéctese al servicio de MongoDB.

En el cliente de MongoDB, use el comando `rs.initiate()` para iniciar un nuevo conjunto de réplicas.

Podemos usar `rs.conf()` para ver la configuración del conjunto de réplicas.

Para ver el estado del conjunto de réplicas, use el comando `rs.status()`.


Agregar miembros al conjunto de réplicas

Para agregar miembros al conjunto de réplicas, necesitamos usar múltiples servidores para iniciar el servicio de MongoDB. Ingrese al cliente de MongoDB y use el método `rs.add()` para agregar miembros al conjunto de réplicas.

Sintaxis

El formato básico de la sintaxis del comando `rs.add()` es el siguiente:
>rs.add(HOST_NAME:PORT)

Ejemplo

Suponga que ya ha iniciado un servicio de MongoDB llamado `mongod1.net` con el puerto 27017. En la ventana de comandos del cliente, use el comando `rs.add()` para agregarlo al conjunto de réplicas, como se muestra a continuación:

>rs.add("mongod1.net:27017")
>

En MongoDB, solo puede agregar servicios de MongoDB al conjunto de réplicas a través del nodo principal. Para determinar si el servicio de MongoDB en ejecución es el nodo principal, puede usar el comando `db.isMaster()`.

El conjunto de réplicas de MongoDB es diferente del modelo principal-secundario que conocemos comúnmente. En el modelo principal-secundario, todos los servicios se detienen cuando el servidor principal se cae, mientras que en un conjunto de réplicas, cuando el servidor principal se cae, la réplica asume el control y se convierte en el nodo principal, por lo que no se produce una interrupción del servicio.

Otras extensiones