Один экземпляр 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>