Introduction à MongoDB

Réplication

La réplication est le processus de synchronisation d'un ensemble de données sur de multiples serveurs.

La réplication fournit la haute disponibilité : si un serveur MongoDB crash, un autre prendra la relève.

Un ensemble de répliques, ou plus communément appelé "Replica Set", correspond à un ensemble de processus mongod qui hébergent le même ensemble de données. Le premier mongod, le mongod primaire, reçoit toutes les opérations de lecture et écriture. Les autres instances mongod, les répliques secondaires, appliquent les instructions reçues par le membre primaire afin d'avoir exactement le même ensemble de données. Un replica set ne peut avoir qu'un seul membre primaire uniquement qui accepte les opérations d'écriture. Afin de supporter la réplication, le membre primaire enregistre tous les changements réalisés sur son ensemble de données dans son oplog (globalement on peut le qualifier de journal enregistrant toutes les opérations d'écritures du membre). De cette façon, les membres secondaires vont pouvoir s'appuyer sur cet oplog afin de répliquer les mêmes opérations sur leur propre ensemble de données.

Il faut au minimum 3 noeuds pour fonctionner : 1 maître, 2 esclaves. En cas de crash du maître, une élection se produit entre les esclaves pour élire le nouveau maître.

alt text

Si jamais le membre primaire devient indisponible pour quelconque raison (crash du serveur, panne matérielle etc ...), le replica set va élire un des membres secondaires pour qu'il devienne primaire et prendre la place de celui qui ne répond plus. Par défaut, les clients lisent les données depuis le membre primaire, par contre, les clients peuvent modifier les préférences de lectures afin de lire depuis l'un des membres secondaires. Afin d'élire efficacement un membre secondaire pour devenir un membre primaire, vous devriez ajouter une instance mongod définit pour jouer le rôle d'arbitre. Les arbitres n'ont aucun pouvoir sur l'ensemble des données, ils ne sont là uniquement pour voter en cas d'élection requise. Si vous avez un nombre pair de membres secondaires, l'arbitre peut déterminer la majorité du vote et désigner le membre secondaire approprié. Un arbitre ne nécessite aucun matériel et ne change jamais de rôle, un secondaire peut passer en primaire, un primaire en tant que secondaire mais l'arbitre reste un arbitre quoiqu'il arrive.

alt text