Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Adicione um nó a um shard

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Passos
  • Próximos passos

Você pode adicionar membros a um shard existente em um cluster fragmentado. Talvez você queira adicionar um membro a um fragmento pelos mesmos motivos que gostaria de adicionar um membro a qualquer conjunto de réplicas. Por exemplo, aumentar o número de membros fornece candidatos adicionais para substituir um primário no caso de um failover. Membros adicionais também aumentam a redundância de dados e a disponibilidade do conjunto de réplicas.

Para obter mais informações, consulte Arquiteturas de sistema de conjunto de réplicas.

Antes do MongoDB 5.0, um secundário recém-adicionado ainda conta como membro votante, embora não possa servir leituras nem se tornar primário até que seus dados sejam consistentes. Se você estiver executando uma versão do MongoDB anterior à 5.0 e adicionar um secundário com suas configurações votes e priority maiores que zero, isso pode levar a um caso em que a maioria dos membros votantes está online, mas nenhum primário pode ser eleito. Para evitar tais situações, considere adicionar o novo secundário inicialmente com priority :0 e votes :0 . Em seguida, execute rs.status() para garantir que o membro tenha feito a transição para o estado SECONDARY . Por fim, use rs.reconfig() para atualizar a prioridade e os votos.

Para adicionar um membro a um conjunto de réplicas de shard, você precisa de:

  1. Um conjunto de réplicas de cluster ativo fragmentado.

  2. Um novo servidor host para o novo membro. O novo servidor host deve ser capaz de suportar seu conjunto de dados fragmentados e ser acessível pelo conjunto de réplicas ativas através da rede.

1

Prepare o diretório de dados do novo membro utilizando uma das seguintes estratégias:

  • Faça com que o novo membro sincronize automaticamente os dados de um membro existente. Este processo leva tempo, mas não requer intervenção do administrador.

    Certifique-se que o diretório de dados do novo membro não contém dados. O novo membro copiará os dados de um membro existente.

    Se o novo membro estiver em um estado de recuperação , ele deverá sair e se tornar secundário antes que o MongoDB possa copiar todos os dados como parte do processo de replicação.

  • Copie manualmente o diretório de dados de um membro existente. O novo membro se torna um membro secundário e chegará ao estado atual do conjunto de réplicas. Copiar os dados pode reduzir o tempo necessário para o novo membro sincronizar com os outros membros do conjunto de réplicas.

    Certifique-se de que você pode copiar o diretório de dados para o novo membro e iniciar a replicação dentro da janela permitida pelo oplog. Caso contrário, a nova instância terá que executar uma sincronização inicial, que ressincroniza completamente os dados, conforme descrito em Ressincronizar um membro de um conjunto de réplicas.

    Para verificar o estado atual dos membros do conjunto de réplicas em relação ao oplog, use rs.printReplicationInfo().

Para obter informações sobre os padrões de implementação de replicação, consulte o documento Replica Set Deployment Architectures (Arquiteturas de implementação de conjuntos de réplicas).

2

Especifique o diretório de dados e o nome do conjunto de réplica. O exemplo a seguir especifica o directoria de dados /srv/mongodb/db0 e o conjunto de réplicas rs0 :

mongod --dbpath /srv/mongodb/db0 --replSet rs0 --bind_ip localhost,<ip address of the mongod host>

Aviso

Antes de vincular sua instância a um endereço IP acessível publicamente, você deve proteger seu cluster contra acessos não autorizados. Para obter uma lista completa das recomendações de segurança, consulte Lista de verificação de segurança. No mínimo, considere habilitar a autenticação e fortalecer a infraestrutura de rede.

Para obter mais informações sobre opções de configuração, consulte a página de manualmongod.

Dica

Você pode especificar o diretório de dados, nome do conjunto de réplica e a ligação de IP no mongod.conf arquivo de configuração, e iniciar o mongod com o seguinte comando:

mongod --config /etc/mongod.conf
3

Você só pode adicionar membros enquanto estiver conectado ao primário. Para se conectar ao primário, use mongosh. Substitua os valores host e port por valores relevantes para sua implantação:

mongosh --host mongodb0.example.com --port 28015

Se você não souber qual membro é o principal, conecte a qualquer membro do conjunto de réplica e emita o comando db.hello() .

4

Passe o member configuration document para o método. Por exemplo, para adicionar um membro no host mongodb3.example.net, emita o seguinte comando:

rs.add( { host: "mongodb3.example.net:27017", priority: 0, votes: 0 } )
5

Para verificar o estado dos membros do conjunto de réplicas, execute rs.status():

rs.status()

Depois que o membro recém-adicionado fizer a transição para o estado SECONDARY , use rs.reconfig() para atualizar o priority e o votes do membro recém-adicionado, se necessário.

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, o mongod 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.

Se rs.conf() retornar o documento de configuração para mongodb3.example.net:27017 como o quinto elemento na array members , para atualizar sua prioridade e votos para 1, use a seguinte sequência de operações:

var cfg = rs.conf();
cfg.members[4].priority = 1
cfg.members[4].votes = 1
rs.reconfig(cfg)
← Adicionar shards a um cluster