MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB como serviço do Windows e configurando replicaSet


Você pode configurar o conjunto de réplicas e o serviço MongoDB ao mesmo tempo no Windows. Como você já configurou um conjunto de réplicas, sabe que precisa ter um diretório de dados e um arquivo de log para cada membro do conjunto de réplicas. Se você estiver executando todos os membros do conjunto de réplicas em uma única máquina, cada membro do conjunto de réplicas deverá receber um número de porta diferente. A amostra fornecida é apenas para desenvolvimento ou teste funcional. A configuração de todos os membros do conjunto de réplicas em uma única máquina constituirá um único ponto de falha, além de prejudicar o desempenho total.

Crie um arquivo de configuração para cada membro do conjunto de réplicas, incluindo diretório de dados, arquivo de log, número da porta e nome do conjunto de réplicas. Por exemplo, tenho um conjunto de réplicas de 3 membros, um Mongodb primário em execução na porta 27017 e dois secundários, Mongodb1 na porta 37017 e Mongodb2 na porta 47017. O nome do conjunto de réplicas é rs1.

Aqui está o arquivo de configuração, por exemplo, 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

Aqui está o arquivo de configuração para um dos secundários.
# 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

O link a seguir fornece uma lista completa de opções do arquivo de configuração:http://docs.mongodb.org/manual/reference/configuration-options/

Adicione todas as três instâncias do MongoDB como serviço do Windows. Como não especifiquei o serviço e o nome de exibição do serviço, o serviço MongoDB usará o nome de exibição padrão do serviço/serviço MongoDB
C:\mongodb-2.4.4\bin>mongod --config C:\mongodb-2.4.4\mongod.cfg --install

Instale as outras duas instâncias do MongoDB com o nome do serviço e o nome de exibição do serviço.
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 todas as três instâncias do 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 o status de todos os três serviços do Windows usando o comando sc com a opção 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 o conjunto de réplicas do shell do MongoDB. No exemplo a seguir, a instância do MongoDB na porta 27017 será o membro do conjunto de réplicas primário.
C:\mongodb-2.4.4\bin>mongo --port 27017

Defina a configuração do conjunto de réplicas do shell do MongoDB.
> config = { _id: "rs1", members:[
... { _id : 0, host : "localhost:27017"},
... { _id : 1, host : "localhost:37017"},
... { _id : 2, host : "localhost:47017"}
... ] }

No shell do MongoDB, inicialize o conjunto de réplicas e verifique seu 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>

Você também pode verificar o status dos secundários. Aqui estou me conectando a um dos secundários na porta 37017.
C:\mongodb-2.4.4\bin>mongo --port 37017

O prompt a seguir será apresentado no shell do MongoDB mostrando o status secundário.
rs1:SECONDARY>

Um tutorial sobre como implantar um conjunto de réplicas pode ser encontrado aqui:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/