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

Analisar a distribuição de dados fragmentados

Nesta página

  • Sobre esta tarefa
  • Antes de começar
  • Passos
  • Saiba mais

Use este procedimento para analisar a distribuição de dados fragmentados. Você pode usar essas informações para determinar se haverá uma grande quantidade de balanceamento em seu cluster.

Este procedimento mostra como você pode:

Mantenha o balanceador desligado durante o processo de atualização e durante todo este procedimento. Depois de entender a igualdade de suas coleções sob a nova política de balanceamento, você poderá ativar o balanceador novamente.

1

Para atualizar seu cluster de 5.0 6.0para, consulte Atualizar um cluster fragmentado 6.0 para.

2

Você pode se conectar a qualquer mongos no cluster.

3

Para entender como a distribuição de dados de suas coleções impacto o balanceamento, use o $shardedDataDistribution estágio de agregação.

Para retornar todas as métricas de distribuição de dados fragmentados, execute o seguinte:

db.aggregate([
{ $shardedDataDistribution: { } }
])

Saída de exemplo:

[
{
"ns": "test.names",
"shards": [
{
"shardName": "shard-1",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
},
{
"shardName": "shard-2",
"numOrphanedDocs": 0,
"numOwnedDocuments": 6,
"ownedSizeBytes": 366,
"orphanedSizeBytes": 0
}
]
}
]

Se a diferença entre o fragmento com o maior ownedSizeBytes e o fragmento com o menor número de ownedSizeBytes estiver dentro do limite de migração, a coleta será considerada balanceada. Quando o balanceador está habilitado para essas collections, ele não emite migrações.

4

Se sua coleção estiver desequilibrada e você quiser controlar o comportamento do balanceador , poderá usar um ou ambos os métodos a seguir:

  • Configure o balanceador para estar ativo somente em determinados horários modificando a janela de balanceamento.

  • Restringa as operações de balanceamento a collections específicas desativando o balanceador nas collections.

Modificar a janela de balanceamento

  1. Mudar para o banco de banco de dados de configuração.

    Emita o seguinte comando para alternar para o banco de banco de dados config.

    use config
  2. Defina os horários de início e término da janela de balanceamento.

    Para definir a janela ativa, use o updateOne() método:

    db.settings.updateOne(
    { _id: "balancer" },
    { $set: { activeWindow : { start : "<start-time>", stop : "<stop-time>" } } },
    { upsert: true }
    )

    Substitua <start-time> e <end-time> por valores de tempo usando valores de hora e minuto de dois dígitos (ou seja, HH:MM) que especificam os limites inicial e final da janela de balanceamento.

    • Para valores de HH, utilize valores na faixa de hora variando de 00 a 23.

    • Para o valor MM, use valores de minuto que variam de 00 a 59.

    Para clusters fragmentados autogerenciados, o MongoDB avalia os horários de início e parada em relação ao fuso zona do membro primário no conjunto de réplicas do servidor de configuração de configuração.

    Para o Atlas cluster, o MongoDB avalia os horários de início e parada em relação ao fuso horário UTC.

    Observação

    A janela do balanceador deve ser suficiente para concluir a migração de todos os dados inseridos durante o dia.

    Como as taxas de inserção de dados podem mudar de acordo com os padrões de atividade e uso, certifique-se de que a janela de balanceamento selecionada seja suficiente para dar suporte às necessidades de sua implantação.

  3. (Opcional) Certifique-se de que a exclusão do intervalo seja síncrona.

    Use somente esta etapa se quiser restringir a exclusão do intervalo à janela de balanceamento.

    Por padrão, o balanceador não espera que a fase de exclusão da migração em andamento seja concluída antes de iniciar a próxima migração de partes. Para que a fase de exclusão bloqueie o início da próxima migração de fragmento, você pode definir _waitForDelete como true.

    Atualize o valor do _waitForDelete na coleção settings do banco de banco de dados do config. Por exemplo:

    use config
    db.settings.updateOne(
    { "_id" : "balancer" },
    { $set : { "_waitForDelete" : true } },
    { upsert : true }
    )

Desativação do balanceamento para collections específicas

Por padrão, toda coleção tem o balanceamento ativado.

Para desabilitar o balanceamento de uma coleção específica, conecte-se a um mongos com o shell mongosh sh.disableBalancing() e chame o método.

Este exemplo desabilita o equilíbrio na coleção students.grades:

sh.disableBalancing("students.grades")

O sh.disableBalancing() método aceita o namespace completo da coleção como seu parâmetro.

5

Use este procedimento se você tiver desabilitado o balancer e estiver pronto para reativá-lo:

  1. Conecte a qualquer mongos no cluster utilizando o shell mongosh.

  2. Comande uma das seguintes operações para habilitar o balanceador:

    A partir da shell mongosh, execute:

    sh.startBalancer()

    Observação

    Para habilitar o balanceador a partir de um driver, use o comando BalancerStart no admin banco de dados , como mostrado a seguir:

    db.adminCommand( { balancerStart: 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. Para obter detalhes, consulte Alterações na política de balanceamento.

    Nas versões MongoDB anteriores a 6.0.3, o sh.startBalancer() também habilita a divisão automática para o cluster fragmentado.

Voltar

Descartar o índice de hashed shard key