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

Converta um secundário autogerenciado em um árbitro

Nesta página

  • Converter secundário para árbitro e reutilizar o número da porta
  • Converter secundário para árbitro em execução em um novo número de porta

Se você tiver umsecundário em um conjunto de réplicas que não precisa mais manter os dados, mas que precisa permanecer no conjunto para garantir que o conjunto possa eleger um primário, você poderá converter o secundário em um árbitro usando qualquer procedimento nesta tutorial. Ambos os procedimentos são operacionalmente equivalentes:

  • Você pode operar o árbitro na mesma porta do antigo secundário. Neste procedimento, você deve desligar o secundário e remover seus dados antes de reiniciar e reconfigurá-lo como um árbitro.

    Para este procedimento, consulte Converter secundário em árbitro e reutilizar o número da porta.

  • Execute o árbitro em uma nova porta. Neste procedimento, você pode reconfigurar o servidor como árbitro antes de desligar a instância em execução como secundária.

    Para este procedimento, consulte Converter secundário para árbitro em execução em um novo número de porta.

  1. Se seu aplicativo estiver se conectando diretamente ao secundário, modifique o aplicativo para que as consultas do MongoDB não alcancem o secundário.

  2. Desative o secundário.

  3. Remova a secundária do conjunto de réplicas chamando o método rs.remove() . Execute esta operação enquanto conectado ao primário atual em mongosh:

    rs.remove("<hostname><:port>")
  4. Verifique se o conjunto de réplicas não inclui mais o secundário chamando o método rs.conf() em mongosh:

    rs.conf()
  5. Mova o diretório de dados do secundário para uma pasta de arquivo. Por exemplo:

    mv /data/db /data/db-old

    Observação

    Opcional

    Você pode remover os dados.

  6. Crie um novo diretório de dados vazio para apontar ao reiniciar a instância do mongod. Você pode reutilizar o nome anterior. Por exemplo:

    mkdir /data/db
  7. Reinicie a instância do mongod para o secundário, especificando o número da porta, o diretório de dados vazio e o conjunto de réplica. Você pode usar o mesmo número de porta que usou antes. Emita um comando semelhante ao seguinte:

    Aviso

    Antes de vincular a um não localhost (por exemplo, acessível IP ), certifique-se de ter protegido seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte a Lista de verificação de segurança para implementações autogerenciadas. No mínimo, procure habilitar a autenticação e fortalecer a infraestrutura de rede.

    mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  8. Em mongosh, converta o secundário em um árbitro usando o método rs.addArb():

    rs.addArb("<hostname><:port>")
  9. Verifique se o árbitro pertence ao conjunto de réplicas chamando o método rs.conf() em mongosh.

    rs.conf()

    O membro árbitro deve incluir o seguinte:

    "arbiterOnly" : true
  1. Se seu aplicativo estiver se conectando diretamente ao secundário ou tiver uma string de conexão fazendo referência ao secundário, modifique o aplicativo para que as consultas do MongoDB não alcancem o secundário.

  2. Crie um novo diretório de dados vazio para ser usado com o novo número da porta. Por exemplo:

    mkdir /data/db-temp
  3. Inicie uma nova instância do mongod no novo número da porta, especificando o novo diretório de dados e o conjunto de réplica existente. Emita um comando semelhante ao seguinte:

    Aviso

    Antes de vincular a um não localhost (por exemplo, acessível IP ), certifique-se de ter protegido seu cluster contra o acesso não autorizado. Para obter uma lista completa de recomendações de segurança, consulte a Lista de verificação de segurança para implementações autogerenciadas. No mínimo, procure habilitar a autenticação e fortalecer a infraestrutura de rede.

    mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  4. Em mongosh conectado ao primário atual, converta a nova instância mongod em um árbitro usando o método rs.addArb():

    rs.addArb("<hostname><:port>")
  5. Verifique se o árbitro foi adicionado ao conjunto de réplicas chamando o método rs.conf() em mongosh.

    rs.conf()

    O membro árbitro deve incluir o seguinte:

    "arbiterOnly" : true
  6. Desative o secundário.

  7. Remova o secundário do conjunto de réplicas chamando o método rs.remove() em mongosh:

    rs.remove("<hostname><:port>")
  8. Verifique se o conjunto de réplicas não inclui mais o secundário antigo chamando o método rs.conf() em mongosh:

    rs.conf()
  9. Mova o diretório de dados do secundário para uma pasta de arquivo. Por exemplo:

    mv /data/db /data/db-old

    Observação

    Opcional

    Você pode remover os dados.

Voltar

Bloquear prioridade secundária