Mise en place et entretien d'un replica set#
Configuration initiale d'un replica set#
- Installer MongoDB sur chaque serveur
- utiliser la version stable et compatible entre les membres
- Configurer les fichiers de configuration (
mongod.conf
) :replicaSet
: spécifier le nom unique du replica setbindIp
: définir l'adresse IP du serveur pour écouter les connexionsport
: déterminer le port d'écoute (par défaut : 27017)
- Démarrer le service MongoDB sur chaque serveur
systemctl start mongod
ouservice mongod start
- Se connecter à l'instance principale avec mongo shell
mongosh --host adresse_IP_du_serveur --port port_d'écoute
- Initialiser le replica set :
rs.initiate({
_id: "nom_du_replica_set",
members: [
{ _id: 0, host: "adresse_IP_serveur1:port" },
{ _id: 1, host: "adresse_IP_serveur2:port" },
{ _id: 2, host: "adresse_IP_serveur3:port" }
]
})
Ajout et suppression de membres#
Ajouter un membre au replica set :
rs.add("adresse_IP_serveur4:port")
Supprimer un membre du replica set :
rs.remove("adresse_IP_serveur2:port")
Gestion des priorités et votes des membres#
Intérêt#
- Les priorités déterminent l'ordre de préférence pour l'élection d'un membre en tant que primaire.
- Les votes servent à attribuer un poids aux membres lors de l'élection d'un nouveau primaire.
Modifier la priorité d'un membre#
cfg = rs.conf()
cfg.members[1].priority = 2
rs.reconfig(cfg)
Modifier les votes d'un membre#
cfg = rs.conf()
cfg.members[1].votes = 0
rs.reconfig(cfg)
Surveillance et maintenance d'un replica set#
Vérifier l'état#
- Vérifier l'état du replica set :
rs.status(
) - Vérifier l'état des membres et les rôles actuels avec
rs.isMaster()
- Consulter les logs :
db.adminCommand({ logRotate: 1 })
Surveiller#
- Utiliser les outils de surveillance :
mongostat
: statistiques en temps réelmongotopa
: activité des collections
Maintenance#
- Gérer la maintenance planifiée :
- Mettre un membre en mode maintenance :
rs.stepDown(temps)
(où temps est la durée en secondes) - Redémarrer un membre avec une configuration modifiée :
rs.reconfig(cfg, { force: true })
(attention, forcer une reconfiguration peut entraîner une perte de données)
- Mettre un membre en mode maintenance :