Réplication MongoDB (Replica Set)

La réplication MongoDB est le processus de synchronisation des données entre plusieurs serveurs.

La réplication fournit une sauvegarde redondante des données et stocke des copies des données sur plusieurs serveurs, améliorant la disponibilité des données et assurant la sécurité des données.

La réplication vous permet également de récupérer des données à la suite de défaillances matérielles et d'interruptions de service.


Qu'est-ce que la réplication ?

  • Assurer la sécurité des données
  • Haute disponibilité des données (24*7)
  • Reprise après sinistre
  • Aucune interruption de service pour la maintenance (par ex., sauvegarde, reconstruction d'index, compactage)
  • Lecture distribuée des données

Principe de réplication MongoDB

La réplication MongoDB nécessite au moins deux nœuds. L'un est le nœud primaire, chargé de traiter les requêtes des clients, et les autres sont des nœuds secondaires, chargés de répliquer les données du nœud primaire.

Les configurations de nœuds courantes dans MongoDB sont : un primaire et un secondaire, un primaire et plusieurs secondaires.

Le nœud primaire enregistre toutes les opérations qui y sont effectuées dans l'oplog. Les nœuds secondaires interrogent périodiquement le nœud primaire pour obtenir ces opérations, puis les appliquent à leurs propres copies de données, garantissant ainsi que les données des nœuds secondaires sont cohérentes avec le nœud primaire.

Le schéma de la structure de réplication MongoDB est le suivant :

MongoDB复制结构图

Dans le schéma de structure ci-dessus, les clients lisent les données à partir du nœud primaire. Lorsque les clients écrivent des données sur le nœud primaire, le nœud primaire interagit avec les nœuds secondaires pour garantir la cohérence des données.

Fonctionnalités du Replica Set :

  • Cluster de N nœuds
  • N'importe quel nœud peut jouer le rôle de nœud primaire
  • Toutes les opérations d'écriture se font sur le nœud primaire
  • Basculement automatique
  • Récupération automatique

Configuration d'un ensemble de réplicas MongoDB

Dans ce tutoriel, nous utilisons le même MongoDB pour réaliser l'expérience primaire-secondaire MongoDB. Les étapes sont les suivantes :

1. Arrêtez le serveur MongoDB en cours d'exécution.

Maintenant, nous démarrons MongoDB en spécifiant l'option --replSet. Le format de syntaxe de base de --replSet est le suivant :

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

L'exemple ci-dessus démarre une instance MongoDB nommée rs0 avec le numéro de port 27017.

Après le démarrage, ouvrez une invite de commandes et connectez-vous au service MongoDB.

Dans le client MongoDB, utilisez la commande rs.initiate() pour démarrer un nouvel ensemble de réplicas.

Nous pouvons utiliser rs.conf() pour afficher la configuration du jeu de réplicas.

Utilisez la commande rs.status() pour afficher l'état du jeu de réplicas.


Ajouter des membres au jeu de réplicas

Pour ajouter des membres au jeu de réplicas, nous devons utiliser plusieurs serveurs pour démarrer le service MongoDB. Entrez dans le client MongoDB et utilisez la méthode rs.add() pour ajouter des membres au jeu de réplicas.

Syntaxe

La syntaxe de base de la commande rs.add() est la suivante :
>rs.add(HOST_NAME:PORT)

Exemple

Supposons que vous ayez démarré un service MongoDB nommé mongod1.net avec le numéro de port 27017. Utilisez la commande rs.add() dans la fenêtre de commande du client pour l'ajouter au jeu de réplicas, comme indiqué ci-dessous :

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

Dans MongoDB, vous pouvez uniquement ajouter un service MongoDB à un jeu de réplicas via le nœud primaire. Vous pouvez utiliser la commande db.isMaster() pour déterminer si le service MongoDB en cours d'exécution est le nœud primaire.

Le jeu de réplicas de MongoDB est différent de la configuration classique primaire-secondaire. Avec primaire-secondaire, tous les services s'arrêtent lorsque l'hôte primaire tombe en panne. Avec un jeu de réplicas, lorsqu'un hôte primaire tombe en panne, un secondaire prend le relais en tant que nœud primaire, il n'y a donc pas d'interruption de service.

Autres extensions