MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да инициализирате набор за репликация на mongodb, без да извиквате rs.initiate()?

Кратък отговор / tl;dr

Не.

Малко по-дълъг отговор

Не, защото има смисъл да се използва обвивката.

Отговор

Когато създавате набор от реплики, обикновено имате повече от един член. Докато наборът реплики не бъде инициализиран, нито един от членовете не притежава необходимата конфигурация. Възелът, на който инициализирате набора реплики, става основен, съхранявайки конфигурацията. Сега добавяте членове или чрез rs.add команда или чрез rs.reconfig . Това, което се случва тогава, е, че основният се свързва с добавения член, конфигурацията се синхронизира и някои други неща. Най-добрата практика е членовете на обикновения набор от реплики да са равни, така че един възел да се провали, няма недостатък друг възел да стане първичен и така новият първичен да може да остане първичен, докато не падне поради някаква причина или самият друг.

Така че, ако стартирате член на набор от реплики, откъде трябва да вземе своята конфигурация? Да реши сам какво да прави? Това няма да работи добре в клъстер. Как трябва да открие другите членове и тяхната конфигурация? Не забравяйте, че членовете на набора реплики могат да бъдат в различни центрове за данни. И ако имаше --IamPrimaryDoAsISay опция, какво би се случило, ако в момента в клъстера имаше друга основна? И как трябва да се действа в ситуация, в която повече от един член е стартиран с тази опция? Стъпка надолу от другия сървър? Може би само защото си сменил охладител? Или току-що стартираният екземпляр трябва да не прави нищо, когато вече има основен? Какъв смисъл би имала тогава опцията на първо място?

И всички тези усложнения само за да се предотврати една команда от обвивката?

Забележка:Ако искате един сървър, просто стартирайте самостоятелен екземпляр (mongod без --replSet опция).ако искате да проучите възможностите на набор от реплики, имате нужда от повече от един член.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Java драйвер, създаващ база данни и колекция

  2. Възможно ли е да се приложи Multi-Version Concurrency Control (MVCC) върху MongoDB?

  3. Филтрирайте масива с помощта на оператора $in на етап $project

  4. mongo-go-driver:вложен филтър за заявка ИЛИ/И

  5. Изложете MongoDB на Kubernetes с StatefulSets извън клъстера