2017-09-18 23 views
0

Supposons que j'ai un ensemble de répliques (Maître et un groupe d'esclaves)! Je veux automatiser le fait qu'un nouveau noeud mongodb puisse être auto-enregistré dans le ReplicaSet sans savoir qui est le maître, et sans s'y connecter.Ajouter un membre à l'ensemble de répliques MongoDB, du côté du membre

Est-il possible d'ajouter un nouveau membre à un ensemble de réplicas MongoDB sans exécuter la commande shell rs.add() à partir du côté du noeud principal?

Est-ce que le membre peut s'enregistrer dans le jeu de réplicas en utilisant des paramètres spéciaux? peut-être une sorte d'authentification!

Répondre

1

Est-il possible d'ajouter un nouveau membre à un ensemble de réplicas MongoDB sans exécuter la commande shell rs.add() à partir du côté du noeud principal?

Il est possible, vous pouvez exécuter rs.reconfig() avec option force d'un secondary member. Bien que noter que l'utilisation de rs.reconfig() avec { force: true } peut conduire à rollback d'écritures validées. Considérez également un cas où, en raison de la partition réseau, vous vous connectez à un membre qui n'a pas pu voir la majorité des membres de l'ensemble de réplicas.

Une manière plus sûre serait de se connecter à n'importe quel membre du jeu de réplicas, de déterminer le membre principal via rs.status() et d'exécuter rs.add() via le jeu primaire du jeu de réplicas.

Voir aussi database command isMaster()

Est-il possible pour le membre de s'inscrire au jeu de réplicas en utilisant certains paramètres spéciaux? À partir de MongoDB v3.4.x, ce n'est actuellement pas possible.

Pour diverses raisons, il est important de s'assurer que seul le membre principal qui pourrait modifier le Replica Set Configuration pour la cohérence entre les membres.