Limitações
Nesta página
Aviso
mongosync
não verifica a conformidade com as limitações documentadas. Certifique-se de que seu aplicativo não seja afetado pelas limitações. Executar mongosync
na presença de uma dessas limitações pode levar a um comportamento indefinido no cluster de destino.
Você deve aderir a essas limitações durante toda a duração da migração, inclusive quando a migração for pausada ou interrompida, se ela for retomada.
Limitações gerais
Observação
Para obter informações sobre compatibilidade do servidor MongoDB , consulte Compatibilidade da versão do MongoDB Server .
O
mongosync
não suporta atualizações de versão do servidor no local que alteram a versão principal ou secundária durante uma migração.mongosync
permite atualizações de versão de patch. Para saber mais, consulte as instruções de atualização do servidor .O cluster de destino deve estar vazio.
mongosync
não valida se os clusters ou o ambiente estão configurados corretamente.Outros clientes não devem gravar no cluster de destino enquanto o
mongosync
estiver em execução.Se deseja iniciar o processo de commit e não definiu
enableUserWriteBlocking
como"sourceAndDestination"
quando usou o endpoint,start
você deverá impedir gravações no cluster de origem antes de iniciar o processo de commit.sistema.* coleções não são replicadas.
Documentos com nomes de campo prefixados em dólar (
$
) não são aceitos. Consulte Nomes de campos com pontos e cifrões.Clusters sem servidor não são suportados.
Uma camada compartilhada MongoDB não é suportada.
Não há suporte Queryable Encryption.
Não é possível sincronizar uma coleção que tenha um índice exclusivo e um índice não exclusivo definidos no(s) mesmo(s) campo(s).
Antes de você tentar executar o
mongosync
com um cluster do AtlasM10+
, desabilite a opção Require Indexes for All Queries.mongosync
não sincroniza usuários ou funções.mongosync
não replica operaçõesapplyOps
feitas no cluster de origem durante a sincronização com o cluster de destino.mongosync
deve ler do cluster de origem usando a preferência de leituraprimary
.mongosync
não é compatível com clusters de origem ou destino que estejam atualizando versões do MongoDB no momento.mongosync
não é compatível com a sincronização de índices do Atlas Search.mongosync
suporta apenas clusters que utilizam o mecanismo de armazenamento WiredTiger .Não é possível sincronizar uma coleção com documentos que tenham um carimbo de data/hora vazio, como
Timestamp(0,0)
na pré-6.0 clusters de origem.mongosync
não aceita documentos com nomes de campo duplicados. Para obter detalhes, consulte O MongoDB não suporta nomes de campo duplicados.
MongoDB Community Edition
O MongoDB não testa a Cluster-to-Cluster Sync com compilações da Community e, na maioria dos casos, o MongoDB não oferece suporte para a Cluster-to-Cluster Sync com sistemas da Community. Se você quiser usar o Cluster-to-Cluster Sync com o MongoDB Community Edition, entre em contato com um representante de vendas do MongoDB para discutir requisitos e opções individualizadas.
Tipos de coleção não suportados
Coleções de séries temporais não são suportadas.
Não há suporte para coleções clusterizadas com a definição expireAfterSeconds.
Clusters fragmentados
mongosync
não suporta sincronização de um cluster fragmentado para um conjunto de réplicas.O
mongosync
não suporta sincronização com uma topologia de cluster fragmentado com um ou mais arbiters.mongosync
não suporta sincronização de ou para clusters globais.A sincronização de um conjunto de réplicas para um cluster fragmentado tem as seguintes limitações:
mongosync
permite que os usuários renomeiem collections que a opçãosharding.shardingEntries
inclui durante a sincronização com algumas limitações. Para obter detalhes, consulte Renomeando durante a sincronização.Se você usar a opção
sharding.createSupportingIndexes
, os índices serão criados automaticamente no cluster de destino durante a sincronização. Você não poderá criar esses índices posteriormente no cluster de origem.Se você quiser criar um índice para suportar chaves de shard manualmente, deverá criar o índice antes que o
mongosync
inicie ou depois que a migração for concluída e omongosync
for interrompido.
Dentro de uma coleção, o campo
_id
deve ser único em todos os fragmentos no cluster. Consulte Clusters fragmentados e índices exclusivos para obter mais detalhes.O comando
movePrimary
não pode ser utilizado para reatribuir o fragmento primário durante a sincronização.Não há replicação para configuração de zona.
mongosync
replica dados, não herda zonas.Não é possível adicionar ou remover compartilhamentos durante a sincronização.
mongosync
sincroniza apenas índices que existem em todos os shards.mongosync
sincroniza apenas índices que têm especificações de índice consistentes em todos os shards.Observação
Para verificar se há inconsistências de índices, consulte Localizar índices inconsistentes entre fragmentos.
Se o cluster de origem ou destino for um cluster fragmentado e você não estiver executando
mongosync
com filtragem de namespace, será necessário desabilitar o balanceador do cluster de origem executando o comandobalancerStop
e aguardando 15 minutos para que o comando seja concluído.Se o cluster de origem ou destino for um cluster fragmentado e você estiver executando
mongosync
com filtragem de namespace, poderá habilitar globalmente o balanceador do cluster de origem, mas deverá desativá-lo para todas as collections dentro do filtro de namespace. Consulte Desativar o Balanceador para Coleções na Sincronização Filtrada. Você também pode desabilitar totalmente o balanceador do cluster de origem.Você deve sempre desabilitar o balanceador em um cluster de destino fragmentado usando
balancerStop
.Se você habilitou o balanceador do cluster de origem, mas o desabilitou para coleções dentro do filtro de namespace, não execute
shardCollection
em coleções dentro do filtro de namespace. Se você executarshardCollection
em collections dentro do filtro de namespace durante a migração,mongosync
retornará um erro e será interrompido, o que exigirá que você inicie a migração do zero.Você não deve executar os comandos
moveChunk
emoveRange
nos clusters de origem ou destino.A tecla de fragmento não pode ser refinada durante a sincronização.
As operações
reshardCollection
do cluster de origem não são suportadas durante a sincronização.O número máximo de índices por coleção fragmentada é 63, um a menos do que o limite padrão de 64.
mongosync
suporta apenas a sincronização de coleções fragmentadas que tenham configurações de agrupamento padrão.
Reversão
Se a fonte antiga tiver índices exclusivos parcialmente distribuídos entre os fragmentos, a reversão poderá causar falhas. Certifique-se de que existem índices únicos em todos os fragmentos antes de reverter.
Os clusters de origem e destino devem ter o mesmo número de shards. Não é possível fazer a sincronização reversa quando os clusters têm topologias ou versões principais diferentes.
Vários clusters
mongosync
não suporta a sincronização de vários clusters de origem para um cluster de destino.Um cluster não pode ser ao mesmo tempo um cluster de origem em uma instância
mongosync
e um cluster de destino em outra instânciamongosync
.
Sincronização filtrada
A filtragem não é compatível com a sincronização reversível.
O cluster de destino não deve conter dados de usuários antes de iniciar.
O cluster de destino não deve conter o banco de dados do sistema
mongosync_reserved_for_internal_use
antes de iniciar.Não é possível modificar um filtro em uso. Para criar um novo filtro, consulte Como substituir um filtro existente.
Você só pode renomear coleções em determinadas situações. Para obter mais detalhes, consulte: Adicionar e renomear coleções.
Se um filtro incluir um modo de exibição, mas não a coleção base, somente os metadados do modo de exibição serão sincronizados com o cluster de destino. Para incluir os documentos de visualização, você também deve sincronizar a coleção base.
Não é possível especificar coleções do sistema ou bancos de dados do sistema em um filtro.
Para utilizar o estágio de agregação
$out
ou o comandomapReduce
(quando definido para criar ou substituir uma coleção) com filtragem, você deve configurar o filtro para utilizar o banco de dados inteiro. Você não pode limitar o filtro às coleções dentro do banco de dados.Para obter mais informações, consulte Filtragem com mapReduce e $out.
A filtragem não oferece suporte ao bloqueio de gravação dupla . Você pode usar o bloqueio de gravação somente de destino.
Capped collections
A partir de 1.3.0, O Cluster-to-Cluster Sync oferece suporte a coleções limitadas com algumas limitações.
convertToCapped
não é compatível. Se você executarconvertToCapped
,mongosync
será encerrado com um erro.cloneCollectionAsCapped
não é compatível.
As coleções limitadas no cluster de origem funcionam normalmente durante a sincronização.
As coleções limitadas no cluster de destino apresentam alterações temporárias durante a sincronização:
Não há nenhum número máximo de documentos.
O tamanho máximo da coleção é 1PB.
mongosync
restaura os valores originais para o número máximo de documentos e o tamanho máximo do documento durante o commit.
Coleções do sistema
O Cluster-to-Cluster Sync não replica coleções de sistemas para o cluster de destino.
Se você emitir um comando dropDatabase
no cluster de origem, essa alteração não será diretamente aplicada no cluster de destino. Em vez disso, o Cluster-to-Cluster Sync descarta coleções e visualizações de usuários no banco de dados no cluster de destino, mas não descarta as coleções do sistema nesse banco de dados.
Por exemplo, no cluster de destino:
A operação de descarte não afeta uma coleção do
system.js
criada pelo usuário.Se você habilitar o perfil, a coleção
system.profile
permanecerá.Se você criar exibições no cluster de origem e depois descartar o banco de dados, a replicação do descarte removerá as exibições, mas descartará uma coleção
system.views
vazia.
Nesses casos, a replicação do dropDatabase
remove todas as coleções criadas pelo usuário do banco de dados, mas deixa suas coleções do sistema no cluster de destino.
Construção contínua de índices
mongosync
não suporta compilações de índice contínuo durante a migração. Para evitar a criação de índices de forma contínua durante a migração, use um dos métodos a seguir para garantir que seus índices de destino correspondam aos índices de origem:
Construa o índice na origem antes da migração.
Construa o índice na origem durante a migração com uma construção de índice padrão.
Construa o índice no destino após a migração.
Verificador incorporado
A partir de 1.9, mongosync
pode usar um verificador incorporado para confirmar a sincronização bem-sucedida de coleções do cluster de origem para o cluster de destino.
Compatibilidade
O verificador incorporado não está disponível no mongosync 1.8 e anterior.
Para métodos de verificação alternativos, consulte Verificar transferência de dados.
Limitações
O verificador incorporado tem as seguintes limitações:
mongosync
armazena o estado do verificador na memória, o que pode resultar em uma sobrecarga significativa de memória. Para executar o verificador,mongosync
requer aproximadamente 10 GB de memória, além de 500 MB adicionais para cada 1 milhões de documentos.O verificador não pode ser retomado. Se um usuário interromper ou pausar a sincronização e, em seguida, iniciar
mongosync
novamente por qualquer motivo, o processo de verificação será reiniciado desde o início. Isso pode fazer com que a verificação fique significativamente atrás da migração.Se você iniciar a sincronização com a verificação ativada e
buildIndexes
definido comonever
, a migração falhará semongosync
encontrar uma coleção TTL no cluster de origem. Isso pode acontecer depois de chamar o endpoint/start
ou muito mais tarde, como quando um usuário cria um índice TTL no cluster de origem enquanto uma migração está em andamento.Para sincronizar coleções TTL sem construir índices no cluster de destino, você deve iniciar a sincronização com o verificador desabilitado.
Verificações de verificação não suportadas
O verificador não verifica os seguintes namespaces:
Capped collections
Coleções com índices TTL, incluindo índices TTL que são adicionados ou descartados durante a migração
Coleções que não usam o agrupamento padrão
Visualizações
O verificador não verifica as seguintes funcionalidades da collection:
Metadados da coleção
Indexes
Para verificar os dados e metadados acima, crie verificações adicionais por script para essas collections e recursos de collection. Para mais informações, consulte Verificar Transferência de Dados.
Observação
A partir da 1.10 versão, o verificador verifica se há inconsistências de dados de um evento DDL que ocorreu na pré-6.0 cluster de origem durante a migração. Isso ocorre porque pré-6.0 as migrações não suportam eventos DDL.
Para saber mais, consulte Limitações de migração pré-.6.0
Configurações de query persistente
mongosync
não migra as Configurações de query persistente (PQS), que foram introduzidas no MongoDB 8.0. Se o cluster de origem usa PQS, você deve migrá-los manualmente.
Migrações anteriores6.0
A partir de 1.10, o mongosync
suporta migrações de clusters de origem que executam versões do servidor MongoDB anteriores a 6.0. Para obter informações sobre os caminhos de migração suportados, consulte Compatibilidade da versão do MongoDB Server .
As seguintes limitações se aplicam ao pré-6.0 migrações:
As gravações que produzem eventos DDL não podem ocorrer no cluster de origem durante a migração. Os seguintes eventos não podem ocorrer:
collMod
create
createIndexes
drop
dropDatabase
dropIndexes
refineCollectionShardKey
rename
reshardCollection
shardCollection
Isso inclui operações que podem criar novas collections, como
mapReduce
$out
, e$merge
. Isso também inclui collections criadas implicitamente a partir de inserções. Somente gravações que produzem eventos CRUD podem ocorrer durante a migração.Observação
As gravações que produzem eventos DDL em coleções de origem fora do filtro de namespace são permitidas.
geoHaystack
índices não são suportados.O endpoint/reverse não é suportado. Você não pode habilitar a
reversible
opção na solicitação /start.Não é possível definir a opção
enableUserWriteBlocking
como"sourceAndDestination"
na solicitação/start
, portanto, o bloqueio duplo de gravação não é suportado. O bloqueio de gravação somente de destino é suportado. Certifique-se de que nenhuma gravação seja feita no cluster de origem depois de chamar o endpoint/commit
.Você não pode habilitar o
createSupportingIndexes
parâmetro de fragmentação . Em vez disso, crie um índice para dar suporte à sua chave de shard no cluster de origem.Se houver algum índice com especificações inconsistentes ou que esteja faltando
mongosync
retornará um erro. Para verificar inconsistências de índice, consulte Localizar índices inconsistentes em shards.Para clusters de origem que executam o MongoDB 4.4, Não há suportepara connection strings SRV. Você deve usar uma string de conexão padrão .