MongoDB - Réplication

La réplication est le processus de synchronisation des données sur plusieurs serveurs. La réplication assure la redondance et augmente la disponibilité des données avec plusieurs copies de données sur différents serveurs de base de données. La réplication protège une base de données de la perte d'un seul serveur. La réplication vous permet également de récupérer après une panne matérielle et des interruptions de service. Avec des copies supplémentaires des données, vous pouvez en dédier une à la reprise après sinistre, à la création de rapports ou à la sauvegarde.

Pourquoi la réplication?

  • Pour protéger vos données
  • Disponibilité élevée (24 * 7) des données
  • Reprise après sinistre
  • Pas de temps d'arrêt pour la maintenance (comme les sauvegardes, les reconstructions d'index, le compactage)
  • Mise à l'échelle de lecture (copies supplémentaires à lire)
  • L'ensemble de répliques est transparent pour l'application

Fonctionnement de la réplication dans MongoDB

MongoDB réalise la réplication en utilisant un jeu de réplicas. Un jeu de répliques est un groupe demongodinstances qui hébergent le même ensemble de données. Dans une réplique, un nœud est le nœud principal qui reçoit toutes les opérations d'écriture. Toutes les autres instances, telles que les secondaires, appliquent les opérations à partir du primaire afin qu'elles aient le même ensemble de données. L'ensemble de réplicas ne peut avoir qu'un seul nœud principal.

  • L'ensemble de réplicas est un groupe de deux nœuds ou plus (généralement au moins 3 nœuds sont requis).

  • Dans un jeu de réplicas, un nœud est le nœud principal et les nœuds restants sont secondaires.

  • Toutes les données sont répliquées du nœud principal au nœud secondaire.

  • Au moment du basculement automatique ou de la maintenance, l'élection établit le nœud principal et un nouveau nœud principal est élu.

  • Après la récupération du nœud défaillant, il rejoint à nouveau le jeu de réplicas et fonctionne comme un nœud secondaire.

Un diagramme typique de la réplication MongoDB est montré dans lequel l'application client interagit toujours avec le nœud principal et le nœud principal réplique ensuite les données sur les nœuds secondaires.

Caractéristiques du jeu de répliques

  • Un cluster de N nœuds
  • N'importe quel nœud peut être principal
  • Toutes les opérations d'écriture vont au primaire
  • Basculement automatique
  • Récupération automatique
  • Élection par consensus des primaires

Configurer un jeu de répliques

Dans ce didacticiel, nous allons convertir une instance MongoDB autonome en un jeu de réplicas. Pour convertir en jeu de réplicas, voici les étapes:

  • Arrêtez déjà le serveur MongoDB en cours d'exécution.

  • Démarrez le serveur MongoDB en spécifiant l'option - replSet. Voici la syntaxe de base de --replSet -

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

Exemple

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
  • Il démarrera une instance de mongod avec le nom rs0, sur le port 27017.

  • Maintenant, démarrez l'invite de commande et connectez-vous à cette instance de mongod.

  • Dans le client Mongo, émettez la commande rs.initiate() pour lancer un nouveau jeu de réplicas.

  • Pour vérifier la configuration du jeu de réplicas, exécutez la commande rs.conf(). Pour vérifier l'état du jeu de réplicas, exécutez la commanders.status().

Ajouter des membres à l'ensemble de réplicas

Pour ajouter des membres à l'ensemble de réplicas, démarrez les instances mongod sur plusieurs machines. Maintenant, démarrez un client mongo et émettez une commanders.add().

Syntaxe

La syntaxe de base de rs.add() la commande est la suivante -

>rs.add(HOST_NAME:PORT)

Exemple

Supposons que le nom de votre instance mongod soit mongod1.net et il fonctionne sur le port 27017. Pour ajouter cette instance à l'ensemble de réplicas, exécutez la commanders.add() dans le client Mongo.

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

Vous pouvez ajouter une instance mongod au jeu de réplicas uniquement lorsque vous êtes connecté au nœud principal. Pour vérifier si vous êtes connecté au principal ou non, exécutez la commandedb.isMaster() dans mongo client.