La replicació és una característica clau de MongoDB que permet la duplicació de dades en múltiples servidors. Això proporciona alta disponibilitat i redundància, assegurant que les dades estiguin disponibles fins i tot en cas de fallada d'un servidor. En aquest tema, explorarem els conceptes bàsics de la replicació, com configurar un conjunt de rèpliques i com gestionar-lo.

Conceptes Bàsics de la Replicació

Què és un Conjunt de Rèpliques?

Un conjunt de rèpliques és un grup de processos mongod que mantenen les mateixes dades. En un conjunt de rèpliques, un node actua com a primari (primary) i els altres com a secundaris (secondary). El node primari rep totes les operacions d'escriptura, mentre que els nodes secundaris repliquen les dades del primari i poden servir operacions de lectura.

Beneficis de la Replicació

  1. Alta Disponibilitat: Si el node primari falla, un dels nodes secundaris pot ser elegit com a nou primari.
  2. Redundància de Dades: Les dades es repliquen en múltiples nodes, reduint el risc de pèrdua de dades.
  3. Escalabilitat de Lectura: Les operacions de lectura es poden distribuir entre els nodes secundaris, millorant el rendiment.

Configurant un Conjunt de Rèpliques

Pas 1: Iniciar els Nodes mongod

Inicia tres instàncies de mongod en diferents ports. Per exemple:

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

Pas 2: Connectar-se al Node Primari

Connecta't a una de les instàncies mongod:

mongo --port 27017

Pas 3: Configurar el Conjunt de Rèpliques

Crea una configuració per al conjunt de rèpliques:

rsconf = {
  _id: "rs0",
  members: [
    { _id: 0, host: "localhost:27017" },
    { _id: 1, host: "localhost:27018" },
    { _id: 2, host: "localhost:27019" }
  ]
}

Pas 4: Iniciar el Conjunt de Rèpliques

Inicia el conjunt de rèpliques amb la configuració creada:

rs.initiate(rsconf)

Pas 5: Verificar l'Estat del Conjunt de Rèpliques

Utilitza el següent comandament per verificar l'estat del conjunt de rèpliques:

rs.status()

Gestió del Conjunt de Rèpliques

Elecció del Primari

En cas de fallada del node primari, els nodes secundaris elegiran automàticament un nou primari. Aquest procés es coneix com a elecció (election).

Sincronització de Dades

Els nodes secundaris sincronitzen les dades del node primari. Això es fa mitjançant el registre d'operacions (oplog), que és una col·lecció especial que registra totes les operacions d'escriptura.

Lectures des dels Nodes Secundaris

Per defecte, totes les lectures es fan des del node primari. No obstant això, es poden configurar les lectures des dels nodes secundaris utilitzant la configuració de lectura (read preference):

db.getMongo().setReadPref("secondary")

Exercici Pràctic

Exercici 1: Configurar un Conjunt de Rèpliques

  1. Inicia tres instàncies de mongod en diferents ports.
  2. Connecta't a una de les instàncies i configura el conjunt de rèpliques.
  3. Verifica l'estat del conjunt de rèpliques.

Solució

  1. Inicia les instàncies de mongod:

    mongod --replSet "rs0" --port 27017 --dbpath /data/db1
    mongod --replSet "rs0" --port 27018 --dbpath /data/db2
    mongod --replSet "rs0" --port 27019 --dbpath /data/db3
    
  2. Connecta't a una de les instàncies:

    mongo --port 27017
    
  3. Configura el conjunt de rèpliques:

    rsconf = {
      _id: "rs0",
      members: [
        { _id: 0, host: "localhost:27017" },
        { _id: 1, host: "localhost:27018" },
        { _id: 2, host: "localhost:27019" }
      ]
    }
    rs.initiate(rsconf)
    
  4. Verifica l'estat del conjunt de rèpliques:

    rs.status()
    

Resum

En aquesta secció, hem après què és la replicació a MongoDB, els beneficis que proporciona i com configurar un conjunt de rèpliques. També hem vist com gestionar el conjunt de rèpliques i com distribuir les lectures entre els nodes secundaris. La replicació és una característica essencial per assegurar l'alta disponibilitat i la redundància de les dades en una base de dades MongoDB.

© Copyright 2024. Tots els drets reservats