MongoDB - Replicação
A replicação é o processo de sincronização de dados em vários servidores. A replicação fornece redundância e aumenta a disponibilidade de dados com várias cópias de dados em diferentes servidores de banco de dados. A replicação protege um banco de dados da perda de um único servidor. A replicação também permite a recuperação de falhas de hardware e interrupções de serviço. Com cópias adicionais dos dados, você pode dedicar uma para a recuperação de desastres, relatórios ou backup.
Por que replicação?
- Para manter seus dados seguros
- Alta (24 * 7) disponibilidade de dados
- Recuperação de desastre
- Sem tempo de inatividade para manutenção (como backups, reconstruções de índice, compactação)
- Escala de leitura (cópias extras para leitura)
- O conjunto de réplicas é transparente para o aplicativo
Como funciona a replicação no MongoDB
O MongoDB atinge a replicação pelo uso de um conjunto de réplicas. Um conjunto de réplicas é um grupo demongodinstâncias que hospedam o mesmo conjunto de dados. Em uma réplica, um nó é o nó primário que recebe todas as operações de gravação. Todas as outras instâncias, como secundárias, aplicam operações do primário para que tenham o mesmo conjunto de dados. O conjunto de réplicas pode ter apenas um nó primário.
O conjunto de réplicas é um grupo de dois ou mais nós (geralmente são necessários no mínimo 3 nós).
Em um conjunto de réplicas, um nó é o nó primário e os nós restantes são secundários.
Todos os dados são replicados do nó primário para o secundário.
No momento do failover ou manutenção automática, a eleição estabelece para o primário e um novo nó primário é eleito.
Após a recuperação do nó com falha, ele se junta novamente ao conjunto de réplicas e funciona como um nó secundário.
Um diagrama típico de replicação do MongoDB é mostrado no qual o aplicativo cliente sempre interage com o nó primário e o nó primário, em seguida, replica os dados para os nós secundários.
Recursos do conjunto de réplicas
- Um cluster de N nós
- Qualquer nó pode ser primário
- Todas as operações de gravação vão para o primário
- Failover automático
- Recuperação automática
- Eleição de consenso das primárias
Configurar um conjunto de réplicas
Neste tutorial, converteremos a instância autônoma do MongoDB em um conjunto de réplicas. Para converter para um conjunto de réplicas, a seguir estão as etapas -
Desligue o servidor MongoDB já em execução.
Inicie o servidor MongoDB especificando a opção - replSet. A seguir está a sintaxe básica de --replSet -
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Exemplo
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
Ele iniciará uma instância mongod com o nome rs0, na porta 27017.
Agora inicie o prompt de comando e conecte-se a esta instância do mongod.
No cliente Mongo, emita o comando rs.initiate() para iniciar um novo conjunto de réplicas.
Para verificar a configuração do conjunto de réplicas, emita o comando rs.conf(). Para verificar o status do conjunto de réplicas, emita o comandors.status().
Adicionar membros ao conjunto de réplicas
Para adicionar membros ao conjunto de réplicas, inicie as instâncias do mongod em várias máquinas. Agora inicie um cliente mongo e emita um comandors.add().
Sintaxe
A sintaxe básica de rs.add() o comando é o seguinte -
>rs.add(HOST_NAME:PORT)
Exemplo
Suponha que o nome da sua instância mongod seja mongod1.net e está rodando na porta 27017. Para adicionar esta instância ao conjunto de réplicas, emita o comandors.add() no cliente Mongo.
>rs.add("mongod1.net:27017")
>
Você pode adicionar uma instância mongod ao conjunto de réplicas apenas quando estiver conectado ao nó primário. Para verificar se você está conectado ao primário ou não, emita o comandodb.isMaster() no cliente mongo.