La replicación en MongoDB es una característica avanzada que permite la duplicación de datos en múltiples servidores. Esto proporciona alta disponibilidad y redundancia, asegurando que los datos estén siempre accesibles incluso en caso de fallos del servidor. En esta sección, aprenderemos los conceptos clave de la replicación, cómo configurarla y cómo gestionarla.

Conceptos Clave de la Replicación

  1. Replica Set: Un conjunto de réplicas (replica set) es un grupo de instancias de MongoDB que mantienen el mismo conjunto de datos. Un replica set consta de:

    • Primary: El nodo principal que recibe todas las operaciones de escritura.
    • Secondary: Nodos secundarios que replican los datos del nodo primario.
    • Arbiter: Un nodo que participa en la elección del primario pero no almacena datos.
  2. Oplog (Operation Log): Un registro de operaciones que se aplican al nodo primario. Los nodos secundarios replican las operaciones del oplog para mantenerse sincronizados con el primario.

  3. Election: Proceso mediante el cual los nodos secundarios eligen un nuevo nodo primario si el actual falla.

Configuración de un Replica Set

Paso 1: Iniciar las Instancias de MongoDB

Primero, inicia varias instancias de MongoDB en diferentes puertos. Aquí hay un ejemplo de cómo iniciar tres instancias en una sola máquina:

mongod --replSet "rs0" --port 27017 --dbpath /data/db1
mongod --replSet "rs0" --port 27018 --dbpath /data/db2
mongod --replSet "rs0" --port 27019 --dbpath /data/db3

Paso 2: Conectar a una Instancia y Configurar el Replica Set

Conéctate a una de las instancias de MongoDB y configura el replica set:

mongo --port 27017

Dentro del shell de MongoDB, ejecuta los siguientes comandos:

rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" }
  ]
});

Paso 3: Verificar el Estado del Replica Set

Para verificar el estado del replica set, usa el siguiente comando:

rs.status();

Esto mostrará información sobre el estado de cada miembro del replica set.

Operaciones Comunes en un Replica Set

Añadir un Nuevo Miembro

Para añadir un nuevo miembro al replica set, usa el siguiente comando:

rs.add("localhost:27020");

Eliminar un Miembro

Para eliminar un miembro del replica set, usa el siguiente comando:

rs.remove("localhost:27020");

Forzar una Elección

Si necesitas forzar una elección para elegir un nuevo primario, usa el siguiente comando:

rs.stepDown();

Ejercicio Práctico

Ejercicio 1: Configurar un Replica Set

  1. Inicia tres instancias de MongoDB en los puertos 27021, 27022 y 27023.
  2. Conéctate a una de las instancias y configura un replica set llamado "rs1".
  3. Verifica el estado del replica set.

Solución

  1. Inicia las instancias:
mongod --replSet "rs1" --port 27021 --dbpath /data/db4
mongod --replSet "rs1" --port 27022 --dbpath /data/db5
mongod --replSet "rs1" --port 27023 --dbpath /data/db6
  1. Conéctate a una instancia y configura el replica set:
mongo --port 27021

Dentro del shell de MongoDB:

rs.initiate({
  _id: "rs1",
  members: [
    { _id: 0, host: "localhost:27021" },
    { _id: 1, host: "localhost:27022" },
    { _id: 2, host: "localhost:27023" }
  ]
});
  1. Verifica el estado del replica set:
rs.status();

Conclusión

La replicación en MongoDB es una herramienta poderosa para asegurar la alta disponibilidad y la redundancia de los datos. En esta sección, hemos aprendido los conceptos clave de la replicación, cómo configurar un replica set y cómo realizar operaciones comunes. Con esta base, estarás preparado para manejar la replicación en entornos de producción y asegurar la continuidad de tus aplicaciones.

© Copyright 2024. Todos los derechos reservados