MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB als Windows-Dienst und Einrichten von replicaSet

Sie können den Replikatsatz und den MongoDB-Dienst gleichzeitig unter Windows einrichten. Da Sie bereits einen Replikatsatz eingerichtet haben, wissen Sie, dass Sie für jedes Mitglied des Replikatsatzes ein Datenverzeichnis und eine Protokolldatei benötigen. Wenn Sie alle Mitglieder des Replikatsatzes auf einem einzigen Computer ausführen, muss jedem Mitglied des Replikatsatzes eine andere Portnummer zugewiesen werden. Das bereitgestellte Muster dient nur zu Entwicklungs- oder Funktionstests. Das Einrichten aller Mitglieder des Replikatsatzes auf einem einzigen Computer stellt einen einzelnen Fehlerpunkt dar, zusätzlich zu der gesamten Leistungseinbuße.

Erstellen Sie eine Konfigurationsdatei für jedes Mitglied des Replikatsatzes, einschließlich Datenverzeichnis, Protokolldatei, Portnummer und Name des Replikatsatzes. Zum Beispiel habe ich einen Replikatsatz von 3 Mitgliedern, eine primäre Mongodb läuft auf Port 27017 und zwei sekundäre, Mongodb1 auf Port 37017 und Mongodb2 auf Port 47017. Der Name des Replikatsatzes ist rs1.

Hier ist die Konfigurationsdatei zum Beispiel 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 ist die Konfigurationsdatei für einen der Secondaries.

# 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

Der folgende Link bietet eine vollständige Liste der Konfigurationsdateioptionen:http://docs.mongodb.org/manual/reference/configuration-options/

Fügen Sie alle drei MongoDB-Instanzen als Windows-Dienst hinzu. Da ich den Dienst und den Dienstanzeigenamen nicht angegeben habe, verwendet der MongoDB-Dienst den standardmäßigen Dienst/Dienstanzeigenamen MongoDB

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

Installieren Sie die anderen beiden MongoDB-Instanzen mit dem Dienstnamen und dem Dienstanzeigenamen.

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

Starten Sie alle drei Instanzen von 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.

Überprüfen Sie den Status aller drei Windows-Dienste mit dem sc-Befehl mit Abfrageoption.

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

Konfigurieren Sie den Replikatsatz über die MongoDB-Shell. Im folgenden Beispiel ist die MongoDB-Instanz an Port 27017 das primäre Mitglied des Replikatsatzes.

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

Legen Sie die Replikatsatzkonfiguration über die MongoDB-Shell fest.

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

Initialisieren Sie in der MongoDB-Shell den Replikatsatz und überprüfen Sie seinen 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>

Sie können auch den Status der Secondaries überprüfen. Hier verbinde ich mich mit einem der Secondaries auf Port 37017.

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

Die folgende Eingabeaufforderung wird in der MongoDB-Shell angezeigt und zeigt den sekundären Status an.

rs1:SECONDARY>

Ein Tutorial zum Bereitstellen eines Replikatsatzes finden Sie hier:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/