Menu Docs

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

Construção contínua de índices em conjuntos réplicas

Nesta página

  • Considerações
  • Pré-requisitos
  • Procedimento

As compilações de índice podem impacto o desempenho do conjunto de réplicas. Por padrão, o MongoDB cria índices simultaneamente em todos os membros do conjunto de réplicas portadoras de dados. Para cargas de trabalho que não toleram a diminuição do desempenho devido à criação de índices, considere usar o procedimento a seguir para criar índices de forma contínua.

As construções de índices contínuas retiram no máximo um membro do conjunto de réplicas de cada vez, começando pelos membros secundários, e constroem o índice nesse membro como standalone. As construções de índices contínuas exigem pelo menos uma eleição de conjunto de réplicas.

Para criar índices únicos usando o procedimento a seguir, você deve parar todas as gravações na collection durante o procedimento.

Se não for possível parar todos os escritos na coleção durante este procedimento, não use o procedimento nesta página. Em vez disso, crie seu índice único na coleção emitindo db.collection.createIndex() no principal para um conjunto de réplicas.

Certifique-se de que seu oplog seja grande o suficiente para permitir que a operação de indexação ou reindexação seja concluída sem ficar muito para trás para recuperar o atraso. Consulte a documentação de dimensionamento do oplog para obter informações adicionais.

Para construir índices únicos

Para criar índices únicos usando o procedimento a seguir, você deve interromper todas as gravações na coleção durante a criação do índice. Caso contrário, você pode acabar com dados inconsistentes nos membros do conjunto de réplica.

Aviso

Se não for possível parar todos os escritos na coleção, não use o procedimento a seguir para criar índices únicos.

Importante

O procedimento a seguir para criar índices de forma contínua se aplica a sistemas de conjunto de réplicas, e não a clusters fragmentados. Para o procedimento para clusters fragmentados, consulte Rolling Index Builds on Sharded Clusters.

Interrompa o processo mongod associado a uma secundária. Reinicie depois de fazer as seguintes atualizações de configuração:

[1](1, 2) Ao executar o mongod em uma porta diferente, você garante que os outros membros do conjunto de réplicas e todos os clientes não entrem em contato com o membro enquanto você estiver construindo o índice.

Conecte-se diretamente à instânciamongodem execução como standalone na nova porta e crie o novo índice para essa instância.

Por exemplo, conecte mongosh à instância e use createIndex() para criar um índice ascendente no campo username da collection records :

db.records.createIndex( { username: 1 } )

Quando a construção de índice finalizar, desligue a instância do mongod. Desfaça as alterações de configuração feitas ao iniciar como standalone para retornar a configuração original e reiniciar como membro do conjunto de réplicas.

Importante

Certifique-se de remover o parâmetro disableLogicalSessionCacheRefresh .

Por exemplo, para reiniciar seu membro do conjunto de réplicas:

Permitir que a replicação alcance este membro.

Quando o membro alcançar os outros membros do conjunto, repita o procedimento um membro por vez para os membros secundários restantes:

  1. A. Pare um secundário e reinicie como autônomo

  2. B. Construir o Índice

  3. C. Reinicie o programa mongod como um membro do conjunto de réplicas

Quando todos os secundários tiverem o novo índice, retire o primário, reinicie-o como standalone usando o procedimento descrito acima e crie o índice no primário anterior:

  1. Use o método rs.stepDown() em mongosh para diminuir o primário. Após a redução bem-sucedida, a primária atual se torna secundária e os membros do conjunto de réplicas elegem uma nova primária.

  2. A. Pare um secundário e reinicie como autônomo

  3. B. Construir o Índice

  4. C. Reinicie o programa mongod como um membro do conjunto de réplicas

← O índice se baseia nas coleções preenchidas