Я изучаю курс MongoDBUniversity M101P: MongoDB для разработчиков.
Я использую WiredTiger в MongoDB 3.2.
В настоящее время я занимаюсь темой наборов реплик.
Курс требует, чтобы я создал набор реплик, используя следующий код:
mongod --replSet rs1 --logpath "1.log" --dbpath /data/rs1 --port 27017 --fork
Но я использую Windows, которая не поддерживает fork
, поэтому использую эту суть (как рекомендуется администратором курса) Я запустил эти строки одновременно на 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, что и в файле конфигурации.
Я просмотрел другие вопросы по этой теме, но их мало, и я не могу найти адрес и решить эту проблему для меня. Это говорит о том, что выглядит очевидным из ошибки: мой файл конфигурации должен включать --replSet=rs1
, но после прочтения документации я у меня сложилось впечатление, что _id
конфигурации, которую я определил, служит этой цели:
_id
Тип: строкаИмя набора реплик. После установки вы не можете изменить имя набора реплик.
_id должен совпадать с replication.replSetName или значением –replSet, указанным для mongod в командной строке.
Кроме того, это ясно показано в видеодемонстрациях материалов курса, как это работает правильно именно так, как я пытаюсь его использовать.
Я в отчаянии и буду очень признателен за помощь.
Джейк