sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan initialiserer man mongodb-replikeringssæt uden at kalde rs.initiate()?

Kort svar / tl;dr

Nej.

Lidt længere svar

Nej, for det giver mening at bruge skallen.

Svar

Når du opsætter et replikasæt, har du normalt mere end ét medlem. Indtil replikasættet er initialiseret, har ingen af ​​medlemmerne den nødvendige konfiguration. Den node, du initialiserer replikasættet på, bliver primær og gemmer konfigurationen. Nu tilføjer du medlemmer enten ved at bruge rs.add kommando eller ved at bruge rs.reconfig . Hvad der så sker er, at den primære kontakter det tilføjede medlem, konfigurationen synkroniseres og nogle andre ting. Det er bedste praksis, at almindelige replikasætmedlemmer skal være ens, så at en knude fejler, der er ingen ulempe, at en anden knude bliver primær, og så den nye primære kan forblive primær, indtil den går ned af en eller anden grund eller den anden selv.

Så hvis du vil starte et replikasætmedlem, hvor skal det så få dets konfiguration fra? Bestem selv, hvad den skal gøre? Det ville ikke fungere godt i en klynge. Hvordan skal den opdage de andre medlemmer og deres konfiguration? Husk, at medlemmer af replikasæt kan være i forskellige datacentre. Og hvis der var en --IamPrimaryDoAsISay mulighed, hvad ville der ske, hvis der var en anden primær i øjeblikket i klyngen? Og hvordan skal en situation, hvor mere end ét medlem blev startet med den mulighed, håndteres? Et skridt ned af den anden server? Kan det bare være fordi du har udskiftet en køler? Eller skulle den netop startede instans ikke gøre noget, når der allerede var en primær? Hvilken mening ville muligheden så have i første omgang?

Og alle disse komplikationer bare for at forhindre en enkelt kommando fra skallen?

Bemærk:Hvis du vil have en enkelt server, skal du bare starte en selvstændig instans (en mongod uden --replSet option). Hvis du vil udforske mulighederne for et replikasæt, skal du bruge mere end ét medlem.



  1. Få com.mongodb.MongoException$DuplicateKey i mongodb med java ved hjælp af upsert

  2. er procedure findes i mongodb

  3. mongodb $match operation i $lookup for at sammenligne objectId fungerer ikke som forventet

  4. Sådan administreres store databaser effektivt