ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Menu Docs

Converta um secundário autogerenciado em um árbitro

Se você tiver um secundá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 um dos procedimentos deste tutorial. Ambos os procedimentos são operacionalmente equivalentes:

  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 o secundário do conjunto de réplicas chamando o método rs.remove(). Execute esta operação enquanto estiver 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 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.

    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 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.

    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.