Membros de um conjunto de réplicas: primário, secundário e árbitro
Você descreverá o papel de cada membro do conjunto de réplicas e acompanhará como as gravações fluem do primário para os secundários por meio do oplog.
Membros de um conjunto de réplicas: primário, secundário e árbitro é uma aula grátis de MongoDB Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de MongoDB Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de MongoDB Academy inclui 4 aulas no total.
O que é um conjunto de réplicas?
Um conjunto de réplicas é um grupo de servidores MongoDB que mantém os mesmos dados, fornecendo alta disponibilidade e redundância. Se um servidor falhar, outro assumirá automaticamente. Um conjunto de réplicas típico tem três ou mais membros: pelo menos um primário, um ou mais secundários e, opcionalmente, um árbitro.
O primário: fonte da verdade
O primário é o único membro que aceita operações de escrita. Todos os clientes enviam inserções, atualizações e exclusões ao primário. Ele registra cada operação de escrita em um registro especial chamado registro de operações (registro de operações), que os secundários leem para permanecer sincronizados.
// Check which member is primary in mongosh
rs.isMaster()
// or
rs.status()O secundário: reserva ativa
Um secundário replica os dados do primário acompanhando continuamente o registro de operações do primário e aplicando as mesmas operações à sua própria cópia dos dados. Os secundários podem atender consultas de leitura, com a preferência de leitura adequada, e assumirão a função de primário se o primário atual ficar indisponível.
// View oplog on a secondary
use local
db.oplog.rs.find().sort({$natural: -1}).limit(5)Registro de operações: a base da replicação
O registro de operações é uma coleção limitada especial armazenada no banco de dados local em cada membro do conjunto de réplicas. Cada escrita no primário é adicionada ao registro de operações. Os secundários leem o registro de operações e reproduzem cada entrada na ordem, mantendo seus dados idênticos aos do primário. O tamanho do registro de operações determina o quanto um secundário pode ficar atrasado antes de precisar de uma ressincronização completa.
// Check oplog size and time range
use local
db.oplog.rs.stats().maxSize
db.oplog.rs.find({},{ts:1,op:1,ns:1}).sort({$natural:-1}).limit(3)O árbitro: membro de desempate
Um árbitro é um membro leve do conjunto de réplicas que não contém dados. Seu único objetivo é participar das eleições, emitindo um voto quando um novo primário precisa ser escolhido. Árbitros são usados em conjuntos com número par de membros, por exemplo, dois membros que contêm dados, para garantir que uma maioria possa sempre ser alcançada sem o custo de um terceiro nó completo com dados.
// Add an arbiter to the replica set
rs.addArb('hostname:27017')Visão geral dos votos e das eleições
Cada membro do conjunto de réplicas tem um voto (0 ou 1). Um primário é eleito por maioria de votos. Com 3 membros, cada um com 1 voto, a maioria é 2. Se o primário ficar indisponível, os dois membros restantes realizam uma eleição, e aquele com o registro de operações mais atualizado normalmente vence. Em condições normais de rede, as eleições são concluídas em segundos.
// View all members and their vote configuration
rs.conf().members.forEach(m => {
print(m.host, 'votes:', m.votes, 'priority:', m.priority)
})Prioridades dos membros
Cada membro tem um valor de prioridade, cujo padrão é 1. Um membro com prioridade mais alta é preferido como primário nas eleições. Definir a prioridade como 0 impede que um membro se torne primário — isso é útil para secundários em centros de dados distantes que devem atender leituras locais, mas não receber escritas da região do primário.
// Set a member to never become primary (priority 0)
let cfg = rs.conf()
cfg.members[2].priority = 0
rs.reconfig(cfg)Secundários ocultos e atrasados
Secundários ocultos (priority 0, hidden: true) são invisíveis para os drivers e usados apenas para backups ou análises, sem afetar o grupo de candidatos à eleição do primário. Secundários atrasados ficam intencionalmente atrás do primário por um número configurado de segundos, fornecendo uma janela de recuperação contínua caso ocorra uma corrupção acidental dos dados.
// Configure a delayed secondary (e.g., 1 hour behind)
let cfg = rs.conf()
cfg.members[2].hidden = true
cfg.members[2].priority = 0
cfg.members[2].secondaryDelaySecs = 3600
rs.reconfig(cfg)Verificação do atraso da replicação
O atraso da replicação é o intervalo entre o momento em que uma escrita é confirmada no primário e o momento em que aparece em um secundário. Um atraso elevado significa que os secundários fornecem dados obsoletos. Você pode monitorar o atraso com rs.printSecondaryReplicationInfo() ou comparando os registros de data e hora do registro de operações entre os membros. O Atlas fornece alertas integrados de atraso.
// Print replication lag for each secondary
rs.printSecondaryReplicationInfo()
// Example output:
// source: secondary1:27017
// syncedTo: Sat Jun 21 2025 10:00:00
// 0 secs (0 hrs) behind the primaryExplicação da saída de rs.status()
rs.status() retorna o instantâneo completo da saúde do conjunto de réplicas. Principais campos a serem examinados: stateStr (PRIMARY / SECONDARY / ARBITER / DOWN), optimeDate (última entrada do registro de operações aplicada), health (1 = saudável, 0 = inacessível) e lastHeartbeatMessage, que contém detalhes de erros sobre membros com problemas.
rs.status().members.forEach(m => {
print(m.name, m.stateStr, 'health:', m.health)
})Fluxo completo das escritas de dados
Quando um cliente escreve um documento, o fluxo é: 1) o driver envia a escrita ao primário; 2) o primário aplica a escrita ao armazenamento WiredTiger; 3) o primário adiciona a operação ao próprio registro de operações; 4) os secundários obtêm a entrada do registro de operações e a aplicam; 5) o primário confirma a operação para o cliente de acordo com o writeConcern configurado.
// Write with w:majority ensures secondaries have acknowledged
db.orders.insertOne(
{ item: 'laptop', qty: 1 },
{ writeConcern: { w: 'majority', wtimeout: 5000 } }
)Verificação rápida
Teste sua compreensão dos conceitos de MongoDB e bancos de dados NoSQL desta lição.
Recapitulação da lição
Nesta lição, você aprendeu que: o primário aceita todas as escritas e as registra no registro de operações; os secundários replicam a partir do registro de operações para manter cópias idênticas; e os árbitros não contêm dados, mas emitem votos nas eleições. A seguir, veremos como o MongoDB elege automaticamente um novo primário quando o atual falha.
Aprenda JavaScript com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Membros de um conjunto de réplicas: primário, secundário e árbitro” é grátis?
Sim — o texto completo de “Membros de um conjunto de réplicas: primário, secundário e árbitro” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de MongoDB Academy, atualize para CoddyKit PRO. O curso de MongoDB Academy inclui 4 aulas no total.
O que vou aprender em “Membros de um conjunto de réplicas: primário, secundário e árbitro”?
Você descreverá o papel de cada membro do conjunto de réplicas e acompanhará como as gravações fluem do primário para os secundários por meio do oplog. Você pratica MongoDB Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar MongoDB Academy?
Nenhuma experiência prévia é necessária. MongoDB Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.
Quanto tempo leva a aula “Membros de um conjunto de réplicas: primário, secundário e árbitro”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de MongoDB Academy?
Sim. Cada aula de MongoDB Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Membros de um conjunto de réplicas: primário, secundário e árbitro
- Eleições e failover automático
- Garantias de gravação e durabilidade confirmada
- Preferências de leitura: distribuindo a carga de leitura