Один экземпляр MongoDB Replica Set-не может выполнять операции запроса / вставки

после установки mongodb я побежал mongod С

mongod --dbpath <pathtodb> --logpath <pathtolog> --replSet rs0

затем я подключился к оболочке монго и побежал

rs.initiate()

затем я попытался вставить документ в коллекции, но получил ошибку:

> db.blah.insert({a:1})
WriteResult({ "writeError" : { "code" : undefined, "errmsg" : "not master" } })

смотрим rs.status(), Я вижу статус REMOVED:

> rs.status()
{
        "state" : 10,
        "stateStr" : "REMOVED",
        "uptime" : 1041,
        "optime" : Timestamp(1429037007, 1),
        "optimeDate" : ISODate("2015-04-14T18:43:27Z"),
        "ok" : 0,
        "errmsg" : "Our replica set config is invalid or we are not a member of it",
        "code" : 93
}

Я понятия не имею, что я мог сделать, чтобы испортить это. Это должны работали, я думаю. Как мне пройти через это?

3 ответов


проблема здесь в том, что вы побежали rs.initiate().. Как пусто! Вы не сказали, какие машины принадлежат к этому набору реплик.

Так..

rs.initiate({
      _id: "rs0",
      version: 1,
      members: [
         { _id: 0, host : "address.to.this.machine:27017" }
      ]
   }
)

Я также сталкиваюсь с той же проблемой, я попытался ниже шагов,

Примечание: если у вас уже есть настройка кластера, выполните мои шаги

  • Я остановил определенный сервер (хост: "адрес.на.это.машина: 27017")
  • удалить команду mongod.lock
  • создать еще один каталог данных - (глухой: / data / db, новый каталог данных: / data / db_rs0)

  • обновить **конфигурация ** файл - изменить dbpath ("/data / db_rs0" ), - проверьте bindIP (по умолчанию: 127.0.0.0 до 0.0.0.0)

  • Проверьте Имя Хоста И Хосты

    хоста

    судо VI /и т. д./хосты

добавить в hosts

         127.0.0.0 hostname

         127.0.1.1 hostname

        (add your Public/Private IP)   hostname 
  • запустите сервер MONGODB в

    команду sudo /usr/Бен/команду mongod -Ф /и т. д./команду mongod.conf &

rs.initiate ({ _id: "rs0", участники: [ { _id: 0, host:" имя хоста:27017"}]})

rs.status ()

{

....

"участники": [

{

  "_id": 0,

  "name": "hostname:27017",

  "health": 1,

  "state": 1,

  "stateStr": "PRIMARY",

  "uptime": 98231,

  "optime": {

    "ts": Timestamp(1474963880, 46),

    "t": NumberLong(339)
  },

  "optimeDate": ISODate("2016-09-27T08:11:20Z"),

  "electionTime": Timestamp(1474956813, 1),

  "electionDate": ISODate("2016-09-27T06:13:33Z"),

  "configVersion": 12,

  "self": true
},

...........

]

"ok": 1

}

-------- СПАСИБО --------


как сказано выше, конфигурация установлена неправильно.

Я попытался повторно ввести реплику, но получил сообщение об ошибке msg:

singleNodeRepl:OTHER> rs.initiate({ _id: "rs0", members: [ { _id: 0, host : "localhost:27017" } ] } )
{
    "info" : "try querying local.system.replset to see current configuration",
    "ok" : 0,
    "errmsg" : "already initialized",
    "code" : 23,
    "codeName" : "AlreadyInitialized"
}

решение:reconf монго:

singleNodeRepl:OTHER> rsconf = rs.conf()
singleNodeRepl:OTHER> rsconf.members = [{_id: 0, host: "localhost:27017"}]
[ { "_id" : 0, "host" : "localhost:27017" } ]
singleNodeRepl:OTHER> rs.reconfig(rsconf, {force: true})
{ "ok" : 1 }
singleNodeRepl:OTHER>
singleNodeRepl:SECONDARY>
singleNodeRepl:PRIMARY>