Impedir que um secundário autogerenciado se torne primary
Visão geral
Em um conjunto de réplicas, por padrão, todos os membros secundários são elegíveis para se tornarem primários por meio do processo de eleição. Você pode usar priority
para afetar o resultado dessas eleições, deixando alguns membros mais propensos a se tornarem primários e outros menos propensos ou incapazes de se tornarem primários.
Os secundários que não podem se tornar primários também não conseguem desencadear eleições. Em todos os outros aspectos esses segundários são idênticos a outros segundários.
Para evitar que um membro secundário se torne primário em um failover, atribua ao secundário uma prioridade de 0
, conforme descrito aqui. Para obter uma descrição detalhada dos membros somente secundários e suas finalidades, consulte Membros do conjunto de réplicas de prioridade 0.
Considerações
Ao atualizar o objeto de configuração da réplica, acesse os membros do conjunto de réplicas na array members
com o índice da array. O índice da array começa com 0
. Não confunda esse valor de índice com o valor do campo members[n]._id
em cada documento da array members
.
Observação
O MongoDB não permite que o primário atual tenha uma prioridade de 0
. Para evitar que o primário atual se torne novamente um primário, você deve primeiro reduzir o primário atual usando rs.stepDown()
.
Procedimento
Este tutorial utiliza uma amostra de réplica configurada com 5 membros.
Aviso
O método
rs.reconfig()
shell pode forçar o primário atual a se retirar, o que causa uma eleição. Quando as etapas primárias são desativadas, omongod
fecha todas as conexões do cliente. Embora isso normalmente leve de 10 a 20 segundos, tente fazer essas alterações durante os períodos de manutenção programados.Evite reconfigurar conjuntos de réplicas que contenham membros de diferentes versões do MongoDB, pois as regras de validação podem diferir entre as versões do MongoDB.
Recupere a configuração atual do conjunto de réplicas.
O método rs.conf()
retorna um documento de configuração do conjunto de réplica que contém a configuração atual para um conjunto de réplicas.
Em mongosh
, quando conectado a um primary, execute o método rs.conf()
e atribua o resultado a uma variável:
cfg = rs.conf()
O documento retornado contém um campo members
que contém uma array de documentos de configuração de membro, um documento para cada membro do conjunto de réplicas.
Assign priority value of 0
.
Para evitar que um nó secundário se torne um primary, atualize o nó secundário members[n].priority
para 0
.
Para atribuir um valor de prioridade a um membro do conjunto de réplicas, acesse o documento de configuração do membro usando o índice da array. Neste tutorial, o membro secundário a ser alterado corresponde ao documento de configuração encontrado na posição 2
da array members
.
cfg.members[2].priority = 0
A alteração de configuração não entra em vigor até que você reconfigure o conjunto de réplica.
Reconfigure o conjunto de réplicas.
Use o método rs.reconfig()
para reconfigurar o conjunto de réplicas com o documento de configuração do conjunto de réplicas atualizado.
Passe a variável cfg
para o método rs.reconfig()
:
rs.reconfig(cfg)