U kunt een replicaset en MongoDB-service tegelijkertijd instellen op Windows. Aangezien u al een replicaset hebt ingesteld, weet u dat u voor elk lid van de replicaset een gegevensmap en een logbestand nodig hebt. Als u alle replicasetleden op één computer uitvoert, moet aan elk replicasetlid een ander poortnummer worden toegewezen. Het verstrekte voorbeeld is alleen bedoeld voor ontwikkeling of functioneel testen. Het instellen van alle leden van de replicaset op een enkele machine vormt niet alleen een punt van falen, maar ook een totale prestatiebelemmering.
Maak een configuratiebestand voor elk lid van de replicaset, inclusief de gegevensdirectory, het logbestand, het poortnummer en de naam van de replicaset. Ik heb bijvoorbeeld een replicaset van 3 leden, een primaire Mongodb op poort 27017 en twee secundaire, Mongodb1 op poort 37017 en Mongodb2 op poort 47017. De naam van de replicaset is rs1.
Hier is het configuratiebestand, bijvoorbeeld Mongodb.
# mongod.conf
# data directory
dbpath=C:\data\db
# log file
logpath=C:\mongodb-win32-i386-2.4.4\log\mongo.log
logappend=true
#port number
port=27017
#replica set name
replSet=rs1
Hier is het configuratiebestand voor een van de secundairen.
# mongo.conf
# data directory
dbpath=C:\data\db2
# log file
logpath=C:\mongodb-win32-i386-2.4.4\log2\mongo.log
logappend=true
# port number
port=47017
# replica set name
replSet=rs1
De volgende link biedt een volledige lijst met opties voor configuratiebestanden:http://docs.mongodb.org/manual/reference/configuration-options/
Voeg alle drie MongoDB-instanties toe als Windows-service. Aangezien ik de service en serviceweergavenaam niet heb gespecificeerd, gebruikt de MongoDB-service de standaard service-/serviceweergavenaam MongoDB
C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod.cfg --install
Installeer de andere twee MongoDB-instanties met de servicenaam en de weergavenaam van de service.
C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod1.cfg --serviceName MongoDB1 --serviceDisplayName MongoDB1 --install
C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod2.cfg --serviceName MongoDB2 --serviceDisplayName MongoDB2 --install
Start alle drie de instanties van MongDB
C:\mongodb-2.4.4\bin>net start mongodb
The Mongo DB service is starting.
The Mongo DB service was started successfully.
C:\mongodb-2.4.4\bin>net start mongodb1
The MongoDB1 service is starting.
The MongoDB1 service was started successfully.
C:\mongodb-2.4.4\bin>net start mongodb2
The MongoDB2 service is starting.
The MongoDB2 service was started successfully.
Controleer de status van alle drie de Windows-services met behulp van de sc-opdracht met query-optie.
C:\mongodb-2.4.4\bin>sc query mongodb
C:\mongodb-2.4.4\bin>sc query mongodb1
C:\mongodb-2.4.4\bin>sc query mongodb2
Configureer de replicaset vanuit de MongoDB-shell. In het volgende voorbeeld is het MongoDB-exemplaar op poort 27017 het primaire lid van de replicaset.
C:\mongodb-2.4.4\bin>mongo --port 27017
Stel de configuratie van de replicaset in vanuit de MongoDB-shell.
> config = { _id: "rs1", members:[
... { _id : 0, host : "localhost:27017"},
... { _id : 1, host : "localhost:37017"},
... { _id : 2, host : "localhost:47017"}
... ] }
Initialiseer bij MongoDB-shell de replicaset en verifieer de status ervan.
> rs.initiate(config)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
> rs.status()
{
"set" : "rs1",
"date" : ISODate("2013-07-02T18:40:27Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "localhost:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 651,
"optime" : {
"t" : 1372790393,
"i" : 1
},
"optimeDate" : ISODate("2013-07-02T18:39:53Z"),
"self" : true
},
{
"_id" : 1,
"name" : "localhost:37017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 31,
"optime" : {
"t" : 1372790393,
"i" : 1
},
"optimeDate" : ISODate("2013-07-02T18:39:53Z"),
"lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 0,
"syncingTo" : "localhost:27017"
},
{
"_id" : 2,
"name" : "localhost:47017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 31,
"optime" : {
"t" : 1372790393,
"i" : 1
},
"optimeDate" : ISODate("2013-07-02T18:39:53Z"),
"lastHeartbeat" : ISODate("2013-07-02T18:40:26Z"),
"lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
"pingMs" : 0,
"syncingTo" : "localhost:27017"
}
],
"ok" : 1
}
rs1:PRIMARY>
U kunt ook de status van de secundairen controleren. Hier maak ik verbinding met een van de secondaries op poort 37017.
C:\mongodb-2.4.4\bin>mongo --port 37017
De volgende prompt wordt weergegeven in de MongoDB-shell en toont de secundaire status.
rs1:SECONDARY>
Een zelfstudie over het implementeren van een replicaset vindt u hier:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/