MongoDB - Criando Replicas
Com
a necessidade de criar um blog para um curso, tive a ideia de
aproveitar o blog e junto com alguns amigos fazer postagens de
assuntos relacionados a Computação, como: Teoria para grafos,
Telecomunicações, Sistemas Operacionais, Desenvolvimento, entre
outros.
As
postagens servirão como estudo tanto para os autores dos post's,
como para todos os leitores que tem interesse nos assuntos abordados
e que desejam aprender cada vez mais. Essa é a nossa forma de poder
ajudar amigos e colegas da área, compartilhando conhecimentos
adquiridos de forma simples e didática para um fácil
entendimento.
Nesse
post irei explicar passo a passo como construir Replicas
no MongoDB, onde construiremos localmente um conjunto de 3 Replicas.
Todos
os comandos serão executados no terminal.
Primeiro
De
inicio precisamos criar 3 pastas novas dentro de data
(aquela mesma pasta que foi preciso criar na instalação do
MongoDB), são nessas pastas que serão armazenados os dados das
Replicas.
Segue o comando para criar as pastas pelo termial:
cd / mkdir /data/rs1 mkdir /data/rs2 mkdir /data/rs3
Segundo
Pare
todos os processos do mongod
caso esteja com algum rodando. E execute os seguintes comandos, cada
um em uma aba/janela do terminal:
cd /mongod --replSet replica_set --port 27017 --dbpath /data/rs1cd /mongod --replSet replica_set --port 27018 --dbpath /data/rs2cd /mongod --replSet replica_set --port 27019 --dbpath /data/rs3
Depois do parâmetro --replSet é colocado o nome do nosso
conjunto de replicas, logo em seguida é passado o número da porta
que será usado e o caminho da pasta que ficará as Replicas.
Terceiro
Agora
vamos levantar o nosso client
em uma nova aba/janela, passando a porta da nossa replica
primária, que no caso é a primeira que criamos.
Mongo --port 27017
Quarto
No
mongo client,
criaremos uma variável que conterá as configurações para a
criação da nossa ReplicaSet:
rsconf = {_id: "replica_set",members: [{_id: 0,host: "127.0.0.1:27017"}]}
Onde
como você pode ver, no _id
passamos o nome do nosso grupo de replicas e uma array de membros
adicionando nossa primeira replica, a
nossa replica primária.
Quinto
Agora
iremos inicializar a nossa ReplicaSet
ainda no mongo client,
passando a variável que criamos no passo anterior:
rs.initiate(rsconfig)
Se
após você receber a configuração da inicialização e você for
na aba que está sendo executado o servidor mongo de endereço
127.0.0.1:27017,
você verá algumas mensagem como a criação do oplog
e o seu tamanho, a alocação dos arquivos, a inicialização a
replicação e a transação do status, onde no final ficará como
PRIMARY.
Sexto
Agora
iremos adicionar as outras duas replicas, com o seguinte comando
(ainda no mongo client):
rs.add(“127.0.0.1:27018”)rs.add(“127.0.0.1:27019”)
Pronto!
Replicas criadas.
Os
comandos de escrita são feitos apenas na replica primária,
se você tentar fazer uma
alteração ou até mesmo uma seleção na
replica secundaria, verá que o MongoDB não vai deixar. As
modificações feitas na replica primaria serão automaticamente
sincronizadas
com as outras replicas.
Status
Você
pode executar o comando
rs.status()
Para
ver o status da replica, vendo o nome do grupo, os membros que fazem
parte, o estado de cada membro (primário ou secundário). É muito
interessante.
Também
podemos ver o status do oplog, executando
rs.printReplicationInfo()
Onde
mostra o tamanho do oplog e quando foram registrado as alterações.
No
MongoDB temos um comando para rebaixar nossa replica primária,
isso serve para você poder simular o que aconteceria se o servidor
da nossa replica caísse. O comando é o seguinte:
rs.stepDown()
Quando
a replica primaria cai. As outras replicas fazem uma votação entre
elas para eleger qual será a replica principal, essa é a nossa
garantia de que mesmo que nosso servidor principal caia, nossa base
de dados continuara ativa, disponível.
Não
perca nossos post's ;)
Aaaaah!
Caso
você crie um número par de replicas é preciso criar um arbitro,
pois se sua replica primaria cair, pode haver um empate na votação,
precisando de um arbitro que terá o voto do desempate.
Para
criarmos devemos criar outra pasta, dentro de data
no diretório raiz.
cd / mkdir /data/arb
Depois
levante o mongod
em uma outra aba/janela utilizando o comado:
mongod --port 30000 --dbpath /data/arb –replSet replica_set
Fazendo
isso, vá no client
da nossa replica primária e adicione o árbitro:
rs.addArb(“127.0.0.1:30000”)

0 comentários:
Postar um comentário