Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Reiniciar um cluster fragmentado autogerenciado

Nesta página

  • Desabilitar o balancer
  • Parar cluster fragmentado
  • Iniciar cluster fragmentado
  • Reative o balancer
  • Validar acessibilidade do cluster

O tutorial é específico do MongoDB 7.0. Para versões anteriores do MongoDB, consulte a versão correspondente do Manual MongoDB.

Este procedimento demonstra a sequência de desligamento e inicialização para reiniciar um cluster fragmentado. Parar ou iniciar os componentes de um cluster fragmentado em uma ordem diferente pode causar erros de comunicação entre membros. Por exemplo, servidores defragmento podem parecer travar se não houver servidores de configuração disponíveis.

Importante

Esse procedimento só deve ser realizado durante um período de manutenção planejado. Durante esse período, os aplicativos devem interromper todas as leituras e gravações no cluster para evitar possíveis perdas de dados ou leitura de dados obsoletos.

Desative o balancer para interromper a migração de chunk e não execute nenhuma operação de gravação de metadados até que o processo seja concluído. Se houver uma migração em andamento, o balancer concluirá a migração em andamento antes de encerrar.

Para desabilitar o balancer, conecte-se a uma das instâncias do mongos do cluster e emita o seguinte comando: [1]

sh.stopBalancer()

Para verificar o estado do balancer, emita o comando sh.getBalancerState().

Para mais informações, consulte Desabilitar o Balancer.

[1] A partir do MongoDB 6.0.3, a divisão automática de partes não é executada. Isso se deve a melhorias na política de balanceamento. Os comandos de divisão automática ainda existem, mas não executam uma operação. Nas versões do MongoDB anteriores a 6.0.3, o sh.stopBalancer() também desabilita a divisão automática para o cluster fragmentado.
1

Execute db.shutdownServer() a partir do banco de dados admin em cada roteador mongos:

use admin
db.shutdownServer()
2

Execute db.shutdownServer() do banco de dados admin em cada membro do conjunto de réplicas de shards para encerrar seu processo mongod . Desligue todos os membros secundários antes de desligar a primária em cada conjunto de réplicas.

3

Execute db.shutdownServer() do banco de dados admin em cada um dos servidores de configuração para encerrar o processo mongod. Desligue todos os nós secundários antes de desligar o primary.

1

Ao iniciar cada mongod, especifique as configurações do mongod utilizando um arquivo de configuração ou a linha de comando. Para mais informações sobre parâmetros de inicialização, consulte a página de referência do mongod.

Arquivo de configuração

Se estiver usando um arquivo de configuração, inicie o mongod com a opção --config definida como o caminho do arquivo de configuração.

mongod --config <path-to-config-file>

Linha de comando

Se utilizar as opções da linha de comando, inicie o mongod com o --configsvr, --replSet, --bind_ip e outras opções conforme apropriado para seu sistema. Por exemplo:

mongod --configsvr --replSet <replica set name> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

Após iniciar todos os servidores de configuração, conecte ao mongod primário e execute o rs.status() para confirmar a integridade e disponibilidade de cada membro do CSRS.

2

Ao iniciar cada mongod, especifique as configurações do mongod utilizando um arquivo de configuração ou a linha de comando.

Arquivo de configuração

Se estiver usando um arquivo de configuração, inicie o mongod com a opção --config definida como o caminho do arquivo de configuração.

mongod --config <path-to-config-file>

Linha de comando

Se estiver usando a opção de linha de comando, inicie o mongod com as opções --replSet, --shardsvr e --bind_ip e outras opções, conforme apropriado para seu sistema. Por exemplo:

mongod --shardsvr --replSet <replSetname> --dbpath <path> --bind_ip localhost,<hostname(s)|ip address(es)>

Após iniciar todos os membros de cada shard, conecte a cada mongod primário e execute rs.status() para confirmar a integridade e disponibilidade de cada membro.

3

Inicie roteadores do mongos utilizando um arquivo de configuração ou um parâmetro da linha de comando para especificar os servidores de configuração.

Arquivo de configuração

Se utilizar um arquivo de configuração, inicie o mongos especificando a opção --config e o caminho para o arquivo de configuração.

mongos --config <path-to-config>

Para obter mais informações sobre o arquivo de configuração, consulte opções de configuração.

Linha de comando

Se utilizar parâmetros da linha de comando, inicie o mongos e especifique o --configdb, --bind_ip e outras opções conforme apropriado para seu sistema. Por exemplo:

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.

mongos --configdb <configReplSetName>/cfg1.example.net:27019,cfg2.example.net:27019 --bind_ip localhost,<hostname(s)|ip address(es)>

Inclua quaisquer outras opções, conforme apropriado para seu sistema.

Reative o balancer para retomar as migrações em partes.

Conecte a uma das instâncias do mongos do cluster e execute o comando sh.startBalancer(): [2]

sh.startBalancer()

Para verificar o estado do balancer, emita o comando sh.getBalancerState().

Para mais informações, consulte Habilitar o Balancer.

[2] A partir do MongoDB 6.0.3, a divisão automática de chunks não é executada. Isso se deve a melhorias na política de balanceamento. Os comandos de divisão automática ainda existem, mas não executam uma operação. Nas versões do MongoDB anteriores a 6.0.3, sh.startBalancer() também permite a divisão automática para o cluster fragmentado.

Conecte uma shell do mongo a um dos processos do mongos do cluster. Utilize o sh.status() para verificar o status geral do cluster.

Para confirmar que todos os shards estão acessíveis e comunicados, insira os dados de teste em uma coleção fragmentada temporária. Confirme se os dados estão sendo divididos e migrados entre cada shard em seu cluster. Você pode conectar uma shell mongo a cada shard primário e usar db.collection.find() para validar se os dados foram fragmentados como esperado.

Importante

Para evitar possíveis perdas de dados ou leitura de dados obsoletos, não inicie leituras e gravações de aplicativos no cluster até depois de confirmar que o cluster está íntegro e acessível.

Voltar

Substituir um servidor de configuração autogerenciado