sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB som Windows-tjänst och inställning av replicaSet

Du kan ställa in replikuppsättning och MongoDB-tjänst samtidigt på Windows. Eftersom du redan har ställt in en replikuppsättning är du medveten om att du behöver ha en datakatalog och en loggfil för varje replikuppsättningsmedlem. Om du kör alla replikuppsättningsmedlemmar på en enda dator måste varje replikuppsättningsmedlem tilldelas ett annat portnummer. Provet som tillhandahålls är endast för utveckling eller funktionstestning. Att ställa in alla replikuppsättningsmedlemmar på en enda dator kommer att utgöra en enda felpunkt förutom att vara en total prestandadrag.

Skapa en konfigurationsfil för varje replikuppsättningsmedlem inklusive datakatalog, loggfil, portnummer och replikuppsättningens namn. Till exempel har jag en replikuppsättning med 3 medlemmar, en primär Mongodb som körs på port 27017 och två sekundär, Mongodb1 på port 37017 och Mongodb2 på port 47017. Replikuppsättningens namn är rs1.

Här är konfigurationsfilen till exempel 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

Här är konfigurationsfilen för en av sekundärerna.

# 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

Följande länk ger en komplett lista över konfigurationsfilalternativ:http://docs.mongodb.org/manual/reference/configuration-options/

Lägg till alla tre MongoDB-instanserna som Windows-tjänst. Eftersom jag inte angav tjänstens och tjänstens visningsnamn kommer MongoDB-tjänsten att använda standardtjänstens/tjänstens visningsnamn MongoDB

C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod.cfg --install

Installera de andra två MongoDB-instanserna med tjänstens namn och tjänstens visningsnamn.

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

Starta alla tre instanserna av 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.

Verifiera statusen för alla tre Windows-tjänsterna med hjälp av sc-kommandot med frågealternativ.

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

Konfigurera replikuppsättning från MongoDB-skalet. I följande exempel kommer MongoDB-instansen på port 27017 att vara den primära replikuppsättningsmedlemmen.

C:\mongodb-2.4.4\bin>mongo --port 27017

Ställ in replikuppsättningskonfiguration från MongoDB-skalet.

> config = { _id: "rs1", members:[
... { _id : 0, host : "localhost:27017"},
... { _id : 1, host : "localhost:37017"},
... { _id : 2, host : "localhost:47017"}
... ] }

På MongoDB-skalet, initiera replikuppsättningen och verifiera dess status.

> 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>

Du kan också kontrollera status för sekundärerna. Här ansluter jag till en av sekundärerna på port 37017.

C:\mongodb-2.4.4\bin>mongo --port 37017

Följande prompt visas i MongoDB-skalet och visar den sekundära statusen.

rs1:SECONDARY>

En handledning om hur du distribuerar en replika-set finns här:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/



  1. Kör flera instanser av Redis på Centos

  2. Hur tar man bort dubbletter baserade på en nyckel i Mongodb?

  3. 5 sätt att infoga dokument i MongoDB

  4. Vad är fördelen med att använda Gorilla sessions anpassad backend?