Este proyecto configura un ReplicaSet de MongoDB para un trabajo práctico, incluyendo nodos Primary, Secondary, un Arbiter, y un nodo Secondary con retraso de replicación.
- Primary: Nodo principal donde se realizan las operaciones de escritura.
- Secondary: Nodo secundario que replica los datos del Primary.
- Arbiter: Nodo sin datos que ayuda en elecciones de Primary.
- Delayed Secondary: Nodo secundario con retraso de 120 segundos en la replicación (
secondaryDelaySecs).
Ejecuta en distintas terminales:
mongod --replSet rs --dbpath ~/data/db/rs0 --port 27017 --fork --logpath ~/data/db/rs0/mongod.log
mongod --replSet rs --dbpath ~/data/db/rs1 --port 27018 --fork --logpath ~/data/db/rs1/mongod.log
mongod --replSet rs --dbpath ~/data/db/rs2 --port 27019 --fork --logpath ~/data/db/rs2/mongod.logConéctate al Primary y ejecuta:
cfg = {
_id: "rs",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019", arbiterOnly: true }
]
};
rs.initiate(cfg);Inicia el nuevo nodo:
mongod --replSet rs --dbpath ~/data/db/rs3 --port 27020 --fork --logpath ~/data/db/rs3/mongod.logLuego, agrégalo al ReplicaSet:
let cfg = rs.conf();
cfg.members.push({
_id: 3,
host: "localhost:27020",
priority: 0,
secondaryDelaySecs: 120
});
rs.reconfig(cfg);Conéctate a cada nodo y usa rs.status() para verificar el estado de los nodos. Inserta documentos en el Primary y confirma la replicación en los nodos secundarios.
Configura setReadPref("primaryPreferred") para permitir lecturas en los Secondary. Usa db.facturas.count() para verificar la replicación de datos entre nodos.