Gerenciar coleções fragmentadas
Nesta página
Importante
A interface de usuário de coleções fragmentadas gerenciadas está obsoleta. MongoDB Ops Manager 7.0.0 não incluirá esse recurso.
Visão geral
a fragmentação distribui dados por várias máquinas. O MongoDB usa fragmentação para oferecer suporte a implantações com conjuntos de dados muito grandes e operações de alto rendimento. O MongoDB Ops Manager pode criar clusters fragmentados e collections fragmentadas nesses clusters.
Esta página explica como o MongoDB Ops Manager pode gerenciar coleções fragmentadas, incluindo determinar como os documentos são distribuídos dentro de coleções fragmentadas.
A fragmentação envolve a definição de uma chave de shard que é então usada para dividir documentos dentro de uma collection. Consulte o manual do MongoDB para obter uma explicação mais detalhada sobre fragmentação.
Uma chave de shard consiste em um ou mais campos indexados que existem em todos os documentos de uma collection. Uma chave de fragmento em um índice composto é conhecida como uma chave de fragmento composta. Cada collection só pode ter uma chave de shard. Você não pode alterar a chave de shard depois de fragmentar uma coleção. Um cluster fragmentado pode oferecer suporte a collections fragmentadas e não fragmentadas. Consulte o manual do MongoDB para obter as melhores práticas de escolha de uma chave de shard.
O cluster fragmentado tenta distribuir os documentos em uma coleção fragmentada uniformemente entre os fragmentos no cluster. Você pode usar zonas de fragmentação para gerenciar a distribuição de documentos dentro da collection.
A fragmentação por zona associa intervalos dos valores de chave de shard de uma collection a um ou mais shards no cluster chamado de zona. O MongoDB eventualmente roteia documentos dentro de um determinado intervalo para a zona associada . Isso permite a distribuição direcionada de dados. O MongoDB Ops Manager oferece suporte à fragmentação por zonas e padrão. Consulte o manual do MongoDB para obter uma explicação mais detalhada da fragmentação da zona .
Observação
A Fragmentação com reconhecimento de tags e a Fragmentação de zonas são intercambiáveis. Transições de fragmentação com reconhecimento de tags para o zone sharding com o lançamento do MongoDB 3.4.
Os procedimentos a seguir explicam como o MongoDB Ops Manager pode:
Gerencie suas coleções compartilhadas
Alterar quando o cluster fragmentado é executado
Criar novas coleções fragmentadas
Importar suas coleções fragmentadas para o MongoDB Ops Manager
Definir zonas para clusters fragmentados
Definir intervalos para collections fragmentadas
Cada procedimento pressupõe que você clicou no botão Deployment para exibir a página Deployment primeiro.
Habilitar gerenciamento de collection fragmentado
Você pode usar o MongoDB Ops Manager para gerenciar collections fragmentadas. Se quiser que o MongoDB Ops Manager gerencie as collections fragmentadas, execute o processo de importação no MongoDB Ops Manager primeiro. Isso garante que nenhuma collection tenha suas configurações substituídas acidentalmente.
Solucione quaisquer importações com falha. (Opcional)
Existem alguns erros possíveis que podem ocorrer ao importar coleções fragmentadas.
- Intervalos sobrepostos
MongoDB Ops Manager não permite faixas definidas sobrepostas.
Exemplo
Uma chave de shard composta pode parecer ter faixas sobrepostas quando não tem. Este exemplo explica a diferença.
Uma chave de shard composta simples compreende dois números inteiros com valores entre 1 e 10. Os intervalos de chunk para uma collection onde cada chunk tem aproximadamente 64 MB são:
minmax[$min, $min]
[1, 8]
[1,8]
[3,1]
[3,1]
[5,2]
[5,2]
[5,10]
[5,10]
[7,3]
[7,3]
[$max,$max]
Os intervalos são baseados nos dois valores combinados (ou compostos) e não em cada valor individualmente. O segundo valor aumenta e diminui em cada bloco, mas a combinação sempre aumenta do mínimo para o máximo.
Você pode usar
mongosh
para resolver esse problema diretamente no banco de dados de dados.Verifique o status dos intervalos de fragmentos.
Revise os intervalos para possível sobreposição.
Adicione uma nova tag a um intervalo de chaves de fragmento.
- Incompatibilidade de tipo de dados
Para cada faixa, o MongoDB Ops Manager exige que os valores mínimo e máximo de cada campo em uma chave de shard sejam do mesmo tipo de dados BSON . Uma chave de shard composta em um intervalo pode usar um tipo BSON diferente para cada campo na chave. O MongoDB Ops Manager verifica isso quando as collections fragmentadas são importadas e quando os intervalos são criados.
Observação
A chave Min e a chave Max são tipos de dados diferentes e são a única exceção a não misturar tipos de dados BSON no intervalo.
Você pode usar
mongosh
para resolver esse problema diretamente no banco de dados de dados.Verifique o status dos intervalos de fragmentos.
Tipo Verificação dos valores mínimos e máximos.
Adicione uma nova tag a um intervalo de chaves de fragmento.
- Data type invalid
Os valores mínimo e máximo para uma faixa só podem usar oito tipos de dados BSON:
String
Inteiro
Double
Long
Data
Timestamp
ObjectId
MinKey / MaxKey
Você pode usar
mongosh
para resolver esse problema diretamente no banco de dados de dados.Verifique o status dos intervalos de fragmentos.
Tipo Verificação dos valores mínimos e máximos.
Adicione uma nova tag a um intervalo de chaves de fragmento.
Alterar quando o balanceador de cluster fragmentado é executado
Você pode usar o MongoDB Ops Manager para definir quando seu cluster fragmentado equilibra os dados entre os fragmentos.
Cada cluster fragmentado tem um processo chamado balanceador que trabalha para garantir uma distribuição uniforme de blocos em cada fragmento. A migração de chunks pelo cluster fragmentado pode impacto o desempenho. A eficiência do balancer depende da seleção da chave de shard. Use a interface do gerenciador do Balancer do MongoDB Ops Manager para definir Windows específico durante o qual o Balancer pode ser executado, como o agendamento de rodadas de balanceamento durante os horários de pico.
Se você quiser alterar a janela de balanceamento do cluster fragmentado:
Configure uma janela de tempo quando o Balanceador for executado.
Para alterar quando o Balanceador for executado:
Clique em à direita de Schedule the Balancer.
Na Start caixa , digite a hora em que a janela deve começar a usar 24-horas.
Na Stop caixa , digite a hora em que a janela deve terminar usando 24-horas.
Clique em Save.
Observação
Os valores para Start e Stop podem estar entre 00:00
e 23:59
, mas Stop pode ser um valor anterior a Start. Se Stop for anterior a Start, então Stop será tratado como sendo no dia seguinte.
Exemplo
Se quiser que a janela de migração esteja entre 11:00 pm e 2:00 hs, defina Start como 23:00
e Stop como 02:00
no dia seguinte.
Crie uma nova coleção fragmentada
Você pode criar uma nova collection fragmentada usando o MongoDB Ops Manager.
Importante
Se o campo ou campos escolhidos como a chave de fragmento não forem indexados, a automação criará o índice da chave de fragmento em primeiro plano. Essa operação pode impacto potencialmente o volume de trabalho de produção. Para obter mais informações sobre a compilação de índices em primeiro plano, consulte Operações de compilação de índices em uma coleção preenchida.
MongoDB Ops Manager não oferece suporte a índices compostos que abranjam chaves de shard. Para saber mais sobre um índice composto na chave de shard, consulte Índices de chave de shard.
Digite o nome da chave Shard Key 1 de shard no campo.
Existem duas opções mutuamente exclusivas para chaves de shard:
Marque hashed se quiser usar uma hashed shard key. Você pode expandir o Advanced Settings para otimizar opcionalmente a distribuição de documentos em sua coleção. Para otimizar, você pode fazer o seguinte:
Marque a caixa de seleção
presplitHashedZones
para executar a criação e a distribuição inicial de chunks para uma collection vazia ou inexistente com base nas zona e faixas de zonas definidas para a collection.Especifique o número mínimo de chunks a serem criados inicialmente ao fragmentar uma coleção vazia com uma chave fragmentada com hash. Recomendamos
2
blocos, mas você pode especificar até8192
por fragmento. Esta configuração corresponde à configuração MongoDBnumInitialChunks
para collections fragmentadas.
Para saber mais sobre essas opções, consulte sh.shardCollection().
Marque Enforce Unique Key se você deseja ter nomes de chave exclusivos.
Uma chave de fragmento não pode ser única e com hash.
Se você deseja criar uma chave de shard composta, clique + add another field em .
Você pode fazer hash de até uma chave em uma chave de shard composta.
Marque Enforce Unique Key se você deseja ter nomes de chave exclusivos.
Uma chave de shard composta não pode incluir mais de três chaves.
Importante
O hash de uma chave de shard composta é compatível a partir da versão 4.4 do MongoDB . Se você fizer hash de uma chave de shard composta e quiser fazer o downgrade para FCV 4.2, primeiro descartará a collection fragmentada com uma chave de hash.
Clique em Set Up Ranges para zona os shards. (Opcional)
Se quiser usar a fragmentação de zonas nessa collection, siga as etapas em Definir como as collections são fragmentadas usando faixas.
Configurar fragmentação por zonas
Observação
Siga os próximos dois procedimentos nesta seção se pretende usar a fragmentação por zonas para suas collections fragmentadas. Caso contrário, você pode pular esta seção.
Agrupar shards em zonas
As zonas são um projeto nomeado de um ou mais shards. Após criar uma ou mais zonas, você pode atribuir uma faixa de valores de chave de shard e seus documentos correspondentes a uma zona. O MongoDB eventualmente roteia documentos dentro de um determinado intervalo para a zona associada . Cada zona pode incluir várias faixas e vários shards. Cada fragmento pode pertencer a mais de uma zona. Cada shard exibe sua(s) zona(s) à direita de seu nome em Deployment.
Clique em Review and Deploy.
Se você tentar excluir uma zona de fragmento que tenha um intervalo marcado associado a ela, ela falhará. Se você tentar remover o último fragmento de uma zona que tenha faixas marcadas para ela, isso também falhará. Você deve mover todos os intervalos marcados para outra zona antes de remover o último fragmento dessa zona.
Definir como as coleções são fragmentadas usando intervalos
Os intervalos especificam valores mínimos e máximos para cada campo em uma chave de shard. Cada faixa definida está associada a uma única zona. O MongoDB eventualmente roteia documentos dentro de um determinado intervalo para a zona associada. O valor mínimo é um limite inferior inclusivo dos valores da chave de shard. O valor máximo é o limite superior exclusivo dos valores da chave de shard. Uma faixa pode pertencer a somente uma zona, mas uma zona pode ter várias faixas.
Os documentos são roteados com base nas zonas e faixas configuradas quando o balancer move o intervalo para a zona desejada. Quando isso ocorre, os documentos dentro de um intervalo são roteados para a zona associada e aqueles fora de um intervalo podem ser roteados para qualquer fragmento no cluster.
Selecione o tipo de dados para a chave de shard.
Importante
Depois de automatizar a fragmentação, a automação reverte todas as alterações de configuração não feitas por meio da interface do MongoDB Ops Manager .
A automação não muda nada em collections fragmentadas que não sejam gerenciadas pelo MongoDB Ops Manager.
Para cada chave de shard, insira os valores mínimo e máximo e selecione a zona associada.
As chaves de shard compostas têm um intervalo por chave de shard componente , mas juntas estão associadas a apenas uma zona.
Observação
Se sua chave de shard for uma chave de shard composta com um campo com hash, os tipos de valor de faixa válidos para o campo com hash serão:
NumberLong
minKey
maxKey
O valor mínimo de uma faixa é inclusivo e o valor máximo é exclusivo.
Exemplo
Os dois intervalos a seguir não se sobrepõem:
min | max | zona |
---|---|---|
1 | 10 | uma |
10 | 20 | B |
Observação
Min e Max são valores absolutos: o valor mínimo absoluto e máximo de qualquer faixa sem listar explicitamente um valor específico.
Cada faixa pode ser associada somente a uma única zona. Você não pode atribuir o mesmo intervalo a mais de uma zona.
Desativar gerenciamento de collection fragmentado
Clique em Unmanage.
Importante
Quando uma collection fragmentada não é gerenciada, suas collections fragmentadas e zonas não são excluídas. Essas collections e zonas não podem mais ser gerenciadas a partir da interface do MongoDB Ops Manager .