A principal função de um conjunto de réplicas é fornecer redundância de dados e alta disponibilidade para sua implantação do MongoDB. Ou seja, se o nó primário em um conjunto de réplicas ficar inativo por qualquer motivo, um secundário assumirá imediatamente o novo primário (em média, em aproximadamente 10 segundos). Consulte Replicação para mais detalhes sobre este tópico.
Os drivers oficiais do MongoDB estão cientes desse evento de eleição do conjunto de réplicas e forneceriam reconexão automática e novas tentativas de operação para o novo primário. Do ponto de vista do aplicativo, nada aconteceu no lado do banco de dados.
Outra vantagem de usar um conjunto de réplicas com vários secundários é a possibilidade de atualização/manutenção sem tempo de inatividade de forma contínua. Isso pode ser feito colocando um secundário offline, fazendo manutenção nele, depois fazendo manutenção nos outros secundários e, finalmente, desativando o primário e fazendo manutenção nele. Novamente, como os drivers oficiais do MongoDB estão cientes desses eventos, você pode tecnicamente fazer manutenção em um banco de dados ativo com impacto mínimo e sem tempo de inatividade no aplicativo.
Esta é uma filosofia diferente de um servidor de banco de dados monolítico, onde há apenas um servidor grande e verdadeiro. Embora existam certos méritos em uma implantação monolítica (que é uma discussão diferente novamente :)), o MongoDB foi projetado como um banco de dados distribuído tolerante a falhas em mente. Uma desvantagem imediata de um único servidor é que o servidor deve estar 100% ativo o tempo todo, caso contrário, o aplicativo será interrompido. Um conjunto de réplicas foi projetado para que seu aplicativo possa ter 100% de tempo de atividade sem pressionar os servidores individuais que precisam ter 100% de tempo de atividade.
Como bônus, um conjunto de réplicas pode ser capaz de fornecer escalabilidade de leitura configurando o driver para ler de secundários (as gravações devem sempre ir para o primário). Observe que deve haver um design cuidadoso caso você queira fazer leituras secundárias, pois isso pode interferir potencialmente no aspecto de alta disponibilidade se for abusado.
Em resumo, um conjunto de réplicas pode fornecer:
- Alta disponibilidade e tolerância a falhas
- Sem manutenção de tempo de inatividade
- Redundância de dados para escalar leituras
sem exigir que o hardware seja 100% confiável. É por isso que um conjunto de réplicas é altamente recomendado em uma implantação de produção.
Consulte Arquiteturas de implantação de conjunto de réplicas para considerações mais detalhadas sobre a implantação do conjunto de réplicas.