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.