
Estou procurando alguns conselhos sobre o que fazer com um conjunto de réplicas primário que é desconectado da rede (por exemplo, interrupção da rede do data center) a ponto de promovermos um dos secundários para primário para restaurar o serviço do aplicativo usando o banco de dados .
Antes da reconexão da rede, deveríamos eliminar o mongodb em execução na caixa para permitir que seja adicionado novamente como secundário? Ou um primário está desconectado do modo de alteração definido?
O que aconteceria se permitíssemos que o servidor mongodb voltasse à rede com o mongodb rodando como primário, embora isolado até a reconexão?
Peço desculpas se isso for respondido nos documentos em outro lugar que tentei procurar, mas posso não estar procurando os termos corretos.
Responder1
Estou procurando alguns conselhos sobre o que fazer com um conjunto de réplicas primário que é desconectado da rede (por exemplo, interrupção da rede do data center) a ponto de promovermos um dos secundários para primário para restaurar o serviço do aplicativo usando o banco de dados .
O failover automático é um dos recursos inerentes ao MongoDBréplica de cenografia, portanto, você não deverá precisar fazer failover manualmente para um secundário, a menos que tenha alterado intencionalmente sua configuração padrão. Ambos primary
e secondary
sãoestados membros(ou funções) dentro de um conjunto de réplicas e destinado a ser diferente da topologia mestre/escravo, que normalmente requer intervenção manual para failover.
Se o primário atual não for acessível pela maioria dos membros votantes configurados de um conjunto de réplicas do MongoDB, o resultado esperado é que:
- o primário isolado deixará o cargo e se tornará um secundário
- uma nova primária pode ser eleita se a maioria dos membros votantes ainda tiver conectividade entre si e um membro elegível para eleger.
VerEleições do conjunto de réplicasno manual do MongoDB para obter mais informações.
Antes da reconexão da rede, deveríamos eliminar o mongodb em execução na caixa para permitir que seja adicionado novamente como secundário? Ou um primário está desconectado do modo de alteração definido?
Um membro isolado do conjunto de réplicas que contém dados permanecerá no estado secundário, mas será exibido como "não íntegro/acessível" se você verificar rs.status()
outros membros do conjunto de réplicas. Geralmente, é uma boa ideia provisionar todos os seus membros elegíveis que contêm dados de forma idêntica, para que qualquer membro possa assumir a função de primário, se necessário (em vez de ter um membro primário especialmente provisionado).
Se quiser que seu conjunto de réplicas se recupere automaticamente, deixe todos os membros funcionando como estão e eles retomarão a sincronização (se possível) assim que a conectividade for restaurada. Na configuração padrão, um membro isolado que anteriormente era primário retomará a sincronização como secundário. Se você tiver uma forte preferência sobre qual membro será eleito principal (por exemplo, com base na localização do data center), poderáajustar a prioridadepara membros do conjunto de réplicas. Se um primário preferencial tiver sido isolado, ele se juntará novamente ao conjunto de réplicas como secundário e retomará a sincronização até que esteja suficientemente atualizado para ser elegível para se tornar primário e acionar uma eleição.
A ressalva ao retomar a sincronização é que os membros isolados ainda devem ter sobreposição suficiente com olog de replicaçãode um membro íntegro do conjunto de réplicas para acompanhar qualquer atividade de gravação que ocorreu enquanto o membro estava isolado. Um secundário cujo oplog não tenha mais sobreposição com nenhum outro membro do conjunto de réplicas será sinalizado como "obsoleto" e precisará serressincronizado.
O que aconteceria se permitíssemos que o servidor mongodb voltasse à rede com o mongodb rodando como primário, embora isolado até a reconexão?
Não é possível ter um primário isolado, a menos que você reconfigure à força seu conjunto de réplicas para que não haja outros membros votantes. Você não pode ter dois primários em um conjunto de réplicas. Se um antigo primário isolado aceitar qualquer gravação que não tenha sido propagada para a maioria dos membros do conjunto de réplicas, essas gravações serãorevertido(exportado para disco para intervenção administrativa) quando o antigo primário retoma a conectividade com os outros membros do conjunto de réplicas. Você pode tomar medidas adicionais paraevite reversões, incluindo o uso demajority
escreva preocupação.
Se você for novo nos conjuntos de réplicas do MongoDB, recomendo usar a configuração e o provisionamento padrão para ativar o failover e a recuperação automáticos. A intervenção manual só deve ser necessária em circunstâncias excepcionais.