2016-11-21 7 views
0

Я изучаю MongoDBUniversityM101P: MongoDB для разработчиков курс.«Этот узел не был запущен с опцией replSet»

Я использую WiredTiger на MongoDB 3,2.

Я в настоящее время по теме наборы реплик.

Курса требует создать набор реплик, используя следующий код:

mongod --replSet rs1 --logpath "1.log" --dbpath /data/rs1 --port 27017 --fork 

Но я использую Windows, который не поддерживает fork, поэтому использование this сути (в соответствии с рекомендациями курса администратором) я провел эти линии одновременно в 3-х различных консолей после того, как я создал каталоги (с mongod бега):

mongod --replSet rs1 --logpath "1.log" --dbpath rs1 --port 27018 --smallfiles --oplogSize64 
mongod --replSet rs1 --logpath "2.log" --dbpath rs2 --port 27019 --smallfiles --oplogSize64 
mongod --replSet rs1 --logpath "3.log" --dbpath rs3 --port 27020 --smallfiles --oplogSize64 

что все, кажется, работает нормально; Я вижу, что каталоги были заполнены, и файлы журнала, все из которых показывают «ожидание соединения» с соответствующим номером порта.

Наконец, я бегу следующий код, чтобы объединить серверы в виде набора реплик:

config = {_id: "rs1", members: [ 
      { _id: 0, host: "localhost:27018"}, 
      { _id: 1, host: "localhost:27019"}, 
      { _id: 2, host: "localhost:27020"} 
           ] 
     } 

rs.initiate(config) 
rs.status() 

Который метания:

"errmsg" : "This node was not started with the replSet option", 
"code" : 76 

Что я не могу получить мою голову вокруг, как и Я четко использовал параметр --replSet для каждого сервера и действительно предоставлял такое же имя replSet, что и в конфигурационном файле.

Я рассмотрел другие вопросы по этой теме, но их немного, и я не могу найти адрес и решить эту проблему для меня. This один утверждает, что выглядит очевидным из ошибки: мой конфигурационный файл должен включать в себя --replSet=rs1, но от чтения documentation мне дает впечатление, что _id от конфигурации я определила для этой цели служит:

_id
Type: string

The name of the replica set. Once set, you cannot change the name of a replica set.

_id must be identical to the replication.replSetName or the value of –replSet specified to mongod on the command line.

Кроме того, это ясно показано, что он функционирует правильно в демонстрационных видеоматериалах курса именно так, как я пытаюсь его использовать.

Я нахожусь на своем остроумие и очень ценю помощь.
Джейк

ответ

3

Так как я закончил писать этот вопрос, ответ просто пришел ко мне, как лампочка, который, кажется, часто случается ... но на этот раз я думал, что я хотел бы оставить ответ здесь для всех, кто боролся с этим, учитывая несколько недостаток вопросов/ответов на эту тему на форуме.

Это был простой случай использования порта по умолчанию при запуске моего файла конфигурации.
Я использовал mongo < init_replica.js для запуска моей конфигурации и объединения серверов для создания набора реплик.

Просто добавить порт, используемый одним из действительных серверов, то правильно гласило:

mongo --port 27020 < init_replica.js 

Горе мне, что одна, но я надеюсь, что это помогает тем, также изучает курс, которые находят сами застряли где-то аналогичный.

Jake