Начиная с конфигурации реплик в 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() не работает, это тоже не работает.
Ответы
Ответ 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()
для настройки или реконфигурации реплики.