sql >> Databáze >  >> NoSQL >> MongoDB

Jak inicializovat sadu replikace mongodb bez volání rs.initiate()?

Krátká odpověď / tl;dr

Ne.

Poněkud delší odpověď

Ne, protože má smysl používat shell.

Odpověď

Když nastavujete sadu replik, obvykle máte více než jednoho člena. Dokud není sada replik inicializována, žádný z členů nemá potřebnou konfiguraci. Uzel, na kterém inicializujete sadu replik, se stane primárním a uloží konfiguraci. Nyní přidáte členy buď pomocí rs.add nebo pomocí rs.reconfig . Co se pak stane, je, že primární kontaktuje přidaného člena, synchronizuje se konfigurace a některé další věci. Osvědčenou praxí je, že běžní členové sady replik by si měli být rovni, takže jeden uzel selže, neexistuje žádná nevýhoda, že se jiný uzel stane primárním, a tak nový primární uzel může zůstat primárním, dokud z nějakého důvodu nespadne, nebo druhý uzel sám.

Takže pokud byste spustili člena sady replik, odkud by měl získat svou konfiguraci? Sám se rozhodnout, co má dělat? To by v clusteru nefungovalo dobře. Jak by měl zjistit ostatní členy a jejich konfiguraci? Pamatujte, že členové sady replik mohou být v různých datových centrech. A pokud existuje --IamPrimaryDoAsISay možnost, co by se stalo, kdyby v clusteru byl aktuálně další primární? A jak by se měla řešit situace, kdy s touto možností začalo více členů? Odchod druhého serveru? Možná jen proto, že jsi vyměnil chladič? Nebo by právě spuštěná instance neměla dělat nic, když již existuje primární? Jaký smysl by pak tato možnost měla?

A všechny tyto komplikace jen proto, aby se zabránilo jedinému příkazu z shellu?

Poznámka:Pokud chcete jeden server, stačí spustit samostatnou instanci (mongod bez --replSet Pokud chcete prozkoumat možnosti sady replik, potřebujete více než jednoho člena.



  1. Aktualizujte vložený objekt uvnitř pole uvnitř pole v MongoDB

  2. MongoDB a C# Find()

  3. Použití dynamické hodnoty v agregaci

  4. Jaké parametry jsou předány zpětným voláním Mongoose