sql >> Database >  >> NoSQL >> MongoDB

Hoe de mongodb-replicatieset te initialiseren zonder rs.initiate() aan te roepen?

Kort antwoord / tl;dr

Nee.

Iets langer antwoord

Nee, want het is logisch om de shell te gebruiken.

Antwoord

Wanneer u een replicaset instelt, heeft u meestal meer dan één lid. Totdat de replicaset is geïnitialiseerd, beschikt geen van de leden over de benodigde configuratie. Het knoop punt waarop u de replicaset initialiseert, wordt primair en slaat de configuratie op. Nu voeg je leden toe met behulp van de rs.add commando of met behulp van rs.reconfig . Wat er dan gebeurt, is dat de primaire contactpersoon contact opneemt met het toegevoegde lid, de configuratie wordt gesynchroniseerd en nog wat andere dingen. Het is de beste gewoonte dat gewone replicasetleden gelijk zijn, zodat één knooppunt faalt, er geen nadeel is dat een ander knooppunt primair wordt en dus de nieuwe primaire primair kan blijven totdat het om de een of andere reden zelf uitvalt.

Dus als u een lid van een replicaset zou starten, waar zou het dan zijn configuratie vandaan moeten halen? Zelf bepalen wat het moet doen? Dat zou niet goed werken in een cluster. Hoe zou het de andere leden en hun configuratie moeten ontdekken? Onthoud dat replicasetleden zich in verschillende datacenters kunnen bevinden. En als er een --IamPrimaryDoAsISay . was optie, wat zou er gebeuren als er momenteel een andere primaire in het cluster is? En hoe moet worden omgegaan met een situatie waarin meer dan één lid met die mogelijkheid is gestart? Een stap naar beneden van de andere server? Misschien omdat je een koeler hebt vervangen? Of moet de zojuist gestarte instantie niets doen als er al een primaire was? Wat voor zin zou de optie dan hebben?

En al deze complicaties alleen maar om een ​​enkel commando vanuit de shell te voorkomen?

Opmerking:als u een enkele server wilt, start u gewoon een zelfstandige instantie (een mongod zonder de --replSet optie).Als je de mogelijkheden van een replicaset wilt verkennen, heb je meer dan één lid nodig.



  1. Handmatig argumenten leveren aan een MongoDB-query om de sorteerfunctie te ondersteunen (voor hoofdletterongevoelige index)

  2. Hoe vind ik vergelijkbare documenten in MongoDB?

  3. mongodb deel van objectid hoogstwaarschijnlijk uniek

  4. Hoe kan ik tweets van de streaming-api van Twitter consumeren en opslaan in mongodb