Вот основные шаги, которые я затем, чтобы создать реплику установки в моей локальной машине.
Step 1 :
Start all mongods with replSet argument
mongod --replSet SriReplSet --dbpath /Volumes/Data/Replica-DBS/1 --port 27001 --logpath /Volumes/Data/Replica-DBS/log/log.1 --logappend --fork
mongod --replSet SriReplSet --dbpath /Volumes/Data/Replica-DBS/2 --port 27002 --logpath /Volumes/Data/Replica-DBS/log/log.2 --logappend --fork
mongod --replSet SriReplSet --dbpath /Volumes/Data/Replica-DBS/3 --port 27003 --logpath /Volumes/Data/Replica-DBS/log/log.3 --logappend --fork
"SriReplSet" - это название вашей реплики. Очевидно, что dbpath и порт будут меняться в соответствии с вашей конфигурацией.
Я планирую сделать первый (с номером порта 27001) в качестве основного. Итак, вошел в первый mongod и установил мою конфигурацию, как показано ниже. Обратите внимание, что я использую localhost, поскольку все на моей локальной машине.
Step 2 :
>x={
_id :"SriReplSet",
members : [
{_id : 0, host :"localhost:27001"},
{_id : 1, host :"localhost:27002"},
{_id : 2, host :"localhost:27003"},
]
}
> rs.initiate(x)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
Над командой будет инициировать набор реплик и появится сообщение о том, «Config теперь сохраняются локально. Если прийти в Интернете примерно через минуту.» и вы сделали :)
Step 3 :
SriReplSet:PRIMARY> rs.status()
{
"set" : "SriReplSet",
"date" : ISODate("2013-05-16T05:35:18Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "localhost:27001",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 370,
"optime" : Timestamp(1368682493000, 1),
"optimeDate" : ISODate("2013-05-16T05:34:53Z"),
"self" : true
},
{
"_id" : 1,
"name" : "localhost:27002",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 20,
"optime" : Timestamp(1368682493000, 1),
"optimeDate" : ISODate("2013-05-16T05:34:53Z"),
"lastHeartbeat" : ISODate("2013-05-16T05:35:18Z"),
"pingMs" : 0
},
{
"_id" : 2,
"name" : "localhost:27003",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 18,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2013-05-16T05:35:17Z"),
"pingMs" : 736
}
],
"ok" : 1
}
Обратите внимание, что первый из них является первичным.
Я не парень из C#, но в Java мы можем подключиться к набору реплик с использованием драйвера Java (в основном это относится к C#, я думаю), передав несколько списков ServerAddress для конструктора Mongo. Драйверы осведомлены о репликах, они будут соответственно изменяться, если первичные изменения.
По умолчанию все операции чтения и записи будут выполняться на основном. Надеюсь, это поможет :)