sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB como servicio de Windows y configuración de replicaSet

Puede configurar el conjunto de réplicas y el servicio MongoDB al mismo tiempo en Windows. Dado que ya configuró un conjunto de réplicas, sabe que necesita tener un directorio de datos y un archivo de registro para cada miembro del conjunto de réplicas. Si está ejecutando todos los miembros del conjunto de réplicas en una sola máquina, cada miembro del conjunto de réplicas debe tener asignado un número de puerto diferente. La muestra proporcionada es solo para desarrollo o pruebas funcionales. La configuración de todos los miembros del conjunto de réplicas en una sola máquina constituirá un único punto de falla además de ser un lastre total para el rendimiento.

Cree un archivo de configuración para cada miembro del conjunto de réplicas, incluido el directorio de datos, el archivo de registro, el número de puerto y el nombre del conjunto de réplicas. Por ejemplo, tengo un conjunto de réplicas de 3 miembros, un Mongodb principal que se ejecuta en el puerto 27017 y dos secundarios, Mongodb1 en el puerto 37017 y Mongodb2 en el puerto 47017. El nombre del conjunto de réplicas es rs1.

Aquí está el archivo de configuración para la instancia de 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

Aquí está el archivo de configuración para uno de los secundarios.

# 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

El siguiente enlace proporciona una lista completa de opciones de archivos de configuración:http://docs.mongodb.org/manual/reference/configuration-options/

Agregue las tres instancias de MongoDB como servicio de Windows. Dado que no especifiqué el servicio ni el nombre para mostrar del servicio, el servicio MongoDB utilizará el nombre para mostrar predeterminado del servicio/servicio MongoDB

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

Instale las otras dos instancias de MongoDB con el nombre del servicio y el nombre para mostrar del servicio.

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

Inicie las tres instancias 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.

Verifique el estado de los tres servicios de Windows usando el comando sc con la opción de consulta.

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

Configure el conjunto de réplicas desde el shell de MongoDB. En el siguiente ejemplo, la instancia de MongoDB en el puerto 27017 será el miembro principal del conjunto de réplicas.

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

Establezca la configuración del conjunto de réplicas desde el shell de MongoDB.

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

En el shell de MongoDB, inicialice el conjunto de réplicas y verifique su estado.

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

También puede consultar el estado de los secundarios. Aquí estoy conectándome a uno de los secundarios en el puerto 37017.

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

El siguiente mensaje se presentará en el shell de MongoDB mostrando el estado secundario.

rs1:SECONDARY>

Puede encontrar un tutorial sobre la implementación de un conjunto de réplicas aquí:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/