Membros atrasados do conjunto de réplicas
Nesta página
Membros atrasados contêm cópias de umconjunto de dados de conjunto de réplicas . No entanto, o conjunto de dados de um membro atrasado reflete um estado anterior ou atrasado do conjunto. Por exemplo, se o tempo atual for 09:52 e um membro tiver um atraso de uma hora, o membro atrasado não terá nenhuma operação mais recente do que 08:52.
Como os membros atrasados são um "backup contínuo" ou um snapshot "histórico" em execução do conjunto de dados, eles podem ajudá-lo a se recuperar de vários tipos de erro humano. Por exemplo, um membro atrasado pode possibilitar a recuperação de atualizações de aplicativos malsucedidas e erros de operador, incluindo bancos de dados e coleções descartados.
Considerações
Requisitos
Membros atrasados:
Deve ser prioridade 0 membros. Defina a prioridade para 0 para evitar que um membro atrasado se torne principal.
Deve ser membros ocultos . Sempre evite que os aplicativos vejam e consultem membros atrasados.
Vote nas eleições para primárias, se
members[n].votes
estiver definido como 1. Garantir que os membros atrasados não votem definindomembers[n].votes
como 0 pode ajudar a melhorar o desempenho.
Importante
Se seu conjunto de réplicas contiver membros atrasados, certifique-se de que os membros atrasados estejam ocultos e sem direito a voto.
A ocultação dos membros do conjunto de réplicas atrasadas impede que os aplicativos vejam e consultem os dados atrasados sem uma conexão direta com esse membro. Tornar os membros do conjunto de réplicas atrasadas sem direito a voto significa que eles não contarão para o reconhecimento das operações de gravação com a write concern "majority"
.
Se você não ocultar membros atrasados e um ou mais nós ficarem indisponíveis, o conjunto de réplicas deverá aguardar o membro atrasado e o ponto de confirmação atrasar. Um ponto de confirmação atrasado pode levar a problemas de desempenho.
Por exemplo, considere uma configuração de conjunto de réplicas Primary-Secondary-Delayed onde o secundário atrasado está votando com um atraso de 10 minutos.
Com uma secundária não atrasada indisponível, a configuração degradada de Primary-Delayed deve aguardar pelo menos 10 minutos para reconhecer uma operação de gravação com "majority"
. A maioria dos pontos de confirmação levará mais tempo para avançar, levando a problemas de desempenho semelhantes à pressão de cache com um conjunto de réplicas Primário com um Secundário e Arbitro (PSA).
Para obter mais informações sobre o ponto de confirmação da maioria, consulte Consistência causal e preocupações de leitura e gravação. Para detalhes adicionais sobre como resolver problemas de desempenho, consulte o tutorial de manutenção de conjunto de réplicas.
Comportamento
Membros atrasados copiam e aplicam operações do oplog de origem em um atraso. Ao escolher a quantidade de atraso, considere que a quantidade de atraso:
deve ser igual ou superior às durações esperadas da janela de manutenção.
deve ser menor do que a capacidade do oplog. Para obter mais informações sobre o tamanho do oplog, consulte Tamanho do oplog.
Escreva preocupação
Os membros atrasados do conjunto de réplicas podem reconhecer as operações de gravação emitidas com w: <number>
. Para operações de gravação emitidas com w : "majority"
, no entanto, membros atrasados também devem ser membros votantes (ou seja, members[n].votes
maior que 0
) para reconhecer a operação de gravação do "majority"
. Membros do conjunto de réplicas sem direito a voto (ou seja, members[n].votes
é 0
) não pode contribuir para o reconhecimento de operações de gravação com a referência de escrita majority
.
Os secundários atrasados podem retornar a confirmação de gravação não antes do secondaryDelaySecs
configurado.
Fragmentação
Em clusters fragmentados, membros atrasados têm utilidade limitada quando o balanceador está habilitado. Como os membros atrasados replicam migrações em partes com atraso, o estado dos membros atrasados em um cluster fragmentado não é útil para a recuperação para um estado anterior do cluster fragmentado se alguma migração ocorrer durante a janela de atraso.
Exemplo
No conjunto de réplica de 5 membros a seguir, os primários e todos os secundários têm cópias do conjunto de dados. Um membro aplica operações com um atraso de 3600 segundos (uma hora). Este membro atrasado também é oculto e é um membro da prioridade 0.
Configuração
Um membro atrasado tem seu members[n].priority
igual a 0
, members[n].hidden
igual a true
e seu members[n].secondaryDelaySecs
igual ao número de segundos de atraso:
{ "_id" : <num>, "host" : <hostname:port>, "priority" : 0, "secondaryDelaySecs" : <seconds>, "hidden" : true }
Para configurar um membro atrasado, consulte Configurar um membro do conjunto de réplicas autogerenciado atrasado.