Replicação de Dados com MongoDB

Olá, vamos para mais um post sobre NoSQL, hoje irei explicar como funciona a replicação de dados com MongoDB.

Hoje em dia uma das dificuldades das empresas de software é a replicação de dados, as vezes não por culpa delas mas sim do banco dados não ser robusto suficiente para facilitar ou por simplesmente não ter uma ferramenta para o mesmo.

Com o MongoDB é muito fácil usar replicação de dados, em poucos passos já é possível fazer uma replicação confiável e de fácil manutenção.

Vamos la então:

->Primeiro faça download da ultima versão estável do MongoDB aqui.
->Após descompacte na sua unidade C.
->Crie um arquivo de configuração com essas informações:

Arquivo 1:
# mongo.conf
# diretorio dos dados
dbpath=C:\data\db
# log
logpath=C:\mongodb\log\mongo.log
logappend=true
#porta
port=27017
#nome do conjunto de replicas
replSet=rs1

Arquivo 2:
# mongo2.conf
# diretorio dos dados
dbpath=C:\data\db2
# log
logpath=C:\mongodb\log2\mongo.log
logappend=true
#porta
port=27018
#nome do conjunto de replicas
replSet=rs1

Agora inicie os dois servidores mongodb (usando o prompt do windows).

C:\mongodb\bin>mongod --config C:\mongodb\mongo.conf 
C:\mongodb\bin>mongod --config C:\mongodb\mongo2.conf

Agora iremos conectar ao servidor master e após iniciarmos a replicação.

C:\mongodb\bin>mongo --port 27017
> config = { _id: "rs1", members:[
... { _id : 0, host : "localhost:27017"},
... { _id : 1, host : "localhost:27018"}
... ] }

> 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("2014-08-02T18:39:53Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "localhost:27018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 31,
                        "optime" : {
                                "t" : 1372790393,
                                "i" : 1
                        },
                        "optimeDate" : ISODate("2014-08-02T18:39:53Z"),
                        "lastHeartbeat" : ISODate("2014-08-02T18:40:26Z"),
                        "lastHeartbeatRecv" : ISODate("1970-01-01T00:00:00Z"),
                        "pingMs" : 0,
                        "syncingTo" : "localhost:27017"
                }
        ],
        "ok" : 1
}
rs1:PRIMARY>

Para conectar ao servidor secundário é só mudar a porta ao final ficando assim:

C:\mongodb\bin>mongo --port 27018

Agora quando for inserir no cluster master os dados serão replicados aos secundários. Se o servidor master for cair um dos secundários ira assumir o lugar dele, com isso dando alta disponibilidade dos dados (nesse exemplo não mostrei como configurar o arbitro que define qual irá assumir o posto de master).

Imagem abaixo mostro como ficam configurados os servidores, mostrando qual é o cluster primário e qual são os secundários.

replicacao

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s