0

Я создаю базу данных MongoDB через терминал linux, и я пытаюсь создать коллекцию для базы данных.MongoDB как стать мастером

Но когда я запускаю команду: db.createCollection("mainCollection") я получаю следующее сообщение об ошибке: { "note" : "from execCommand", "ok" : 0, "errmsg" : "not master" }

Я не совсем уверен, что это значит. Как я могу сделать мастер базы данных?

Благодаря

+0

попробовать 'rs.slaveOk()' в Монго оболочки – yhussain

+0

Нету , он по-прежнему дает мне ту же ошибку – Viratan

+0

, какую версию монго вы используете? – yhussain

ответ

1

Вы начали mongod с --replSet опции (или эквивалентный вариант файла configuratin). Это ставит mongod в режим, когда он не разрешает записывать любые, пока не получит конфигурацию набора реплик.

Для существующего набора реплик это выполняется путем выполнения rs.add("<host>:<port>") существующего первичного для набора реплик.

Основываясь на разговоре вокруг этого вопроса, я думаю, что у вас есть единственный экземпляр MongoDB и не планируете иметь настоящий набор реплик с несколькими членами. Если это так, у вас есть два варианта:

  • Stop пытается запустить набор репликаций
    1. Остановите mongod.
    2. Протрите каталог данных для процесса mongod.
    3. Перезапустите процесс mongod без опции --replSet в командной строке/config.
  • Инициализировать mongod как набор реплик одного узла.
    1. Запустить rs.initiate() из оболочки (без необходимости настройки конфигурации).Вы отключитесь, но оболочка будет автоматически подключаться, а затем вы сможете создавать коллекции и делать другие записи.
+0

Спасибо, я выполнил первый вариант. – Viratan

+0

При выполнении следующих шагов на шаге «4» появляется следующая ошибка: (Инициализировать mongod в качестве одного набора узлов реплик.): { "КИ": 0, "ErrMsg": "Этот узел не был запущен с опцией replSet", "кода": 76 } делает смысл! Итак, я бы предложил, чтобы этот шаг не нужен ?! Или почему вы должны это делать? Я думаю, что он уже инициирован как «набор реплик единственного узла» (когда это правильное слово ...) – MUmla

+0

Вы должны сделать 1-3 для автономного mongod _or_ rs.initiate(), а не для обоих. –

0

То ожидаемое поведение «Viratan», если вы запрашиваете на реплику набора и оболочки вы связаны с не Primary.

Вы можете сделать любую из этих двух вещей.

  1. Отсоедините от текущей оболочки и подключитесь к Первичному. В оболочке монго вы увидите, что она написана «ПЕРВИЧНАЯ» или «ВТОРИЧНАЯ».

  2. В случае, если вы хотите, чтобы тот же самый член был основным, вы можете увеличить приоритет этого конкретного члена и/или заставить первичный формар к stepDown. как только основной шаг вниз, выборы будут происходить и потому, что желаемый член имеет более высокий приоритет, который станет первичным. вы можете следовать ссылке ниже, чтобы изменить приоритет члена http://docs.mongodb.org/manual/tutorial/force-member-to-be-primary

После того, как вы связаны с первичным либо в отношениях, вы можете запросить DB и сделать ваши вещи.

Счастливый Mongoing .. :-)

- $

+0

Спасибо за ответ. Я не создал/не инициировал набор реплик, должен ли я сделать это первым? – Viratan

+0

не нужен, просто для быстрой перспективы вы устанавливаете mongo и сразу начинаете выполнение команд, не беспокоясь о наборе реплик или осколках ... однако эта ошибка возникает, когда вы подключены к вторичному узлу и пытаетесь выполнить некоторую операцию. –

+0

Я вижу. Но когда я выполняю команду: rs.config(), я получаю следующую ошибку: Ошибка: не удалось получить конфигурацию реплики: { «информация»: «запустите rs.initiate (...), если еще не сделано для set ", " ok ": 0, " errmsg ":" no replset config получено ", " code ": 94 } – Viratan

0

вы пытаетесь создать новую коллекцию на secondary.thats почему он дает как ошибка, пожалуйста, используйте первичный, чтобы создать новый

Смежные вопросы