Начиная с конфигурации реплик в mongodb - программирование
Подтвердить что ты не робот

Начиная с конфигурации реплик в mongodb

Я ошибся при настройке наборов реплик в mongodb. Я думаю, что то, что я сделал неправильно, это то, что я сделал rs.initialize() на обоих узлах, что в некотором роде их смутило. Я не уверен.

Теперь все, что я хочу сделать, это начать заново, но я не смог найти способ де-инициализировать node. Поэтому я пошел за советом, чтобы удалить локальные файлы * db, тем самым сбросив конфигурации. Я сделал это, и теперь ничего не работает.

> rs.initiate()
{
    "info2" : "no configuration explicitly specified -- making one",
    "me" : "0.0.0.0:27017",
    "errmsg" : "couldn't initiate : can't find self in the replset config",
    "ok" : 0
}
> rs.conf()
null

Я попытался удалить и переустановить пакет (я делаю это на серверах Ubuntu), что означало, что мой mongodb.conf исчез и мой init script перестает работать. Это, конечно, достаточно легко решить.

Итак, как мне начать?

Примечание. Я рассмотрел этот ответ, но так как rs.conf() не работает, это тоже не работает.

4b9b3361

Ответ 1

Если вы принудительно перенастроили конфигурацию, которую вы создали, устранит проблему?

Вы можете сделать это аналогично следующему из оболочки {{mongo}}:

> cfg = {
...     "_id" : "rs0",
...     "version" : 1,
...     "members" : [
...         {
...             "_id" : 0,
...             "host" : "0.0.0.0:27017"
...         }
...     ]
... }

>rs.reconfig(cfg, {force:true})

Вам может потребоваться настроить переменную cfg, чтобы иметь имя вашего хоста и имя порта, так как ошибка can't find self in new replset config будет возвращена оболочке, если набор ответов не может найти node, из которого он запущен в конфигурации.

Ответ 2

Вы также получите эту ошибку, если имя хоста машины не вернется к 127.0.0.1. Обновите свой /etc/hosts и/или ваш /etc/hostname, а rs.initiate() без необходимости настройки.

Ответ 3

Если вы просто закомментируете bind_ip в /etc/mongod.conf, это приведет к правильному результату, чтобы вы могли повторно выполнить команду rs.initiate() для настройки или реконфигурации реплики.