Menu Docs
Página inicial do Docs
/
Manual 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 fragmento existente em umcluster fragmentado 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 evento 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 implantação de conjuntos 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 fragmentado ativo fragmentado.

  2. Um novo servidor host para o novo nó. O novo servidor host deve ser compatível com seu conjunto de dados fragmentados e poder ser acessado 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:

  • Fazer o novo nó sincronizar automaticamente os dados de um nó 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 autogerenciado.

    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 diretório 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 o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte Lista de verificação de segurança para implantações autogerenciadas. 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 primário, conecte-se 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()

Após o membro recém-adicionado fazer a transição para o estado SECONDARY, use rs.reconfig() para atualizar priority e 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)

Voltar

Adicionar fragmentos