MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB en tant que service Windows et configuration de replicaSet

Vous pouvez configurer le jeu de répliques et le service MongoDB en même temps sous Windows. Étant donné que vous avez déjà configuré un jeu de répliques, vous savez que vous devez disposer d'un répertoire de données et d'un fichier journal pour chaque membre du jeu de répliques. Si vous exécutez tous les membres du jeu de répliques sur une seule machine, chaque membre du jeu de répliques doit se voir attribuer un numéro de port différent. L'échantillon fourni est uniquement destiné au développement ou aux tests fonctionnels. La configuration de tous les membres du jeu de répliques sur une seule machine constituera un point de défaillance unique en plus d'être un frein total aux performances.

Créez un fichier de configuration pour chaque membre du jeu de répliques, y compris le répertoire de données, le fichier journal, le numéro de port et le nom du jeu de répliques. Par exemple, j'ai un jeu de répliques de 3 membres, un Mongodb principal exécuté sur le port 27017 et deux secondaires, Mongodb1 sur le port 37017 et Mongodb2 sur le port 47017. Le nom du jeu de répliques est rs1.

Voici le fichier de configuration par exemple 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

Voici le fichier de configuration pour l'un des secondaires.

# 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

Le lien suivant fournit une liste complète des options de fichier de configuration :http://docs.mongodb.org/manual/reference/configuration-options/

Ajoutez les trois instances MongoDB en tant que service Windows. Comme je n'ai pas spécifié le service et le nom d'affichage du service, le service MongoDB utilisera le nom d'affichage du service/service par défaut MongoDB

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

Installez les deux autres instances MongoDB avec le nom du service et le nom d'affichage du 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

Démarrez les trois instances de 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.

Vérifiez l'état des trois services Windows à l'aide de la commande sc avec l'option de requête.

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

Configurez le jeu de répliques à partir du shell MongoDB. Dans l'exemple suivant, l'instance MongoDB sur le port 27017 sera le membre principal du jeu de réplicas.

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

Définissez la configuration du jeu de répliques à partir du shell MongoDB.

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

Au niveau du shell MongoDB, initialisez le jeu de répliques et vérifiez son état.

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

Vous pouvez également vérifier l'état des secondaires. Ici, je me connecte à l'un des secondaires sur le port 37017.

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

L'invite suivante s'affichera dans le shell MongoDB indiquant le statut secondaire.

rs1:SECONDARY>

Un tutoriel sur le déploiement d'un jeu de répliques peut être trouvé ici :https://docs.mongodb.com/manual/tutorial/deploy-replica-set/