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. A execução de 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 .
mongosyncdoes not support in-place server version upgrades or downgrades that change the major or minor version during a migration.mongosyncdoes allow patch version upgrades. To learn more, see the server upgrade instructions.mongosyncnão valida se os clusters ou o ambiente estão configurados corretamente.Outros clientes não devem gravar no cluster de destino enquanto o
mongosyncestiver em execução.system.* collections aren't replicated.
Documents that have dollar (
$) prefixed field names aren't supported. See Field Names with Periods and Dollar Signs.Clusters sem servidor não são suportados.
Uma camada compartilhada MongoDB não é suportada.
Clusters Atlas Infinite não são suportados.
Queryable Encryption isn't supported.
Client-Side Field Level Encryption isn't supported.
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).
Before you attempt to run
mongosyncwith anM10+Atlas cluster, disable the Require Indexes for All Queries option to setnotablescantofalseon both the source and destination clusters.mongosyncnão sincroniza usuários ou roles.mongosyncdoes not replicateapplyOpsoperations made on the source cluster during sync to the destination cluster.mongosyncmust read from the source cluster using theprimaryread preference.mongosyncnão oferece suporte a clusters de origem ou de destino que estão atualmente atualizando ou fazendo downgrade de versões do MongoDB.mongosyncnão suporta a sincronização de índices do Atlas Search.mongosyncsuporta 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.mongosyncdoes not support documents with duplicate field names. For details, see MongoDB does not support duplicate field names.mongosyncnão oferece suporte à migração de um namespace para um cluster de destino que já contenha um namespace conflitante.mongosyncnão oferece suporte a clusters de destino sem usuários provisionados.Em todas as versões do MongoDB anteriores a 8.0.20, se uma operação
replaceadicionar um campo chamado$va um documento,mongosyncsai com um erro fatal irrecuperável durante a aplicação do evento de alteração. Retomar a sincronização sempre falha com o mesmo erro.Para resolver esse problema, reinicie a sincronização do zero, excluindo o banco de dados de metadados do
mongosyncno destino ou atualize o cluster de origem para 8.0.20+.
MongoDB Community Edition
O MongoDB não testa o Mongosync com compilações da Comunidade e, na maioria dos casos, o MongoDB não oferece suporte para o Mongosync com sistemas da Comunidade. Se você quiser usar o Mongosync 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 agrupadas com a definição expireAfterSeconds.
Espaço em disco de destino
Novidades na versão 1.22.
Antes que mongosync inicie uma migração, ele verifica o espaço em disco disponível no cluster de destino. mongosync estima o tamanho em disco das coleções e índices de origem que você selecionou para migração e, em seguida, compara essa estimativa com o espaço disponível no sistema de arquivos de destino. mongosync aplica um fator de segurança de 1.25x na estimativa para levar em conta as diferenças de compactação do mecanismo de armazenamento, o espaço temporário que as construções de índice usam e o crescimento do oplog durante a migração.
Se o espaço estimado necessário exceder o espaço disponível, /start retorna um erro InsufficientDestinationDiskSpace, e mongosync não inicia a migração. Para resolver o erro, libere espaço em disco no cluster de destino e chame /start novamente.
mongosync ignora a verificação para destinos onde não pode recuperar estatísticas do sistema de arquivos.
Importante
Esta verificação é uma salvaguarda de melhor esforço. Não garante que a migração caiba no cluster de destino. Alterações que ocorrem durante a migração e diferenças na forma como mongosync distribui o espaço em disco entre os shard de destino afetam a estimativa.
Para desativar a verificação, defina skipDiskSpaceCheck como true na solicitação /start. Use esta opção quando as estatísticas do sistema de arquivos de destino não representarem com precisão o armazenamento disponível para a migração. Para aprender mais, consulte Parâmetros do corpo da solicitação.
Clusters fragmentados
mongosyncnão suporta sincronização de um cluster fragmentado para um conjunto de réplicas.mongosyncnão suporta sincronização com uma topologia de cluster fragmentado com um ou mais árbitros.mongosyncdoesn't support sync to or from global clusters.A sincronização de um conjunto de réplicas para um cluster fragmentado tem as seguintes limitações:
mongosyncpermite aos usuários renomear coleções que a opçãosharding.shardingEntriesinclui 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
mongosyncinicie ou depois que a migração for concluída e omongosyncfor interrompido.
Dentro de uma coleção, o campo
_iddeve ser único em todos os fragmentos no cluster. Consulte Clusters fragmentados e índices exclusivos para obter mais detalhes.The
movePrimarycommand cannot be used to reassign the primary shard while syncing.Não há replicação para configuração de zona.
mongosyncreplica dados, não herda zonas.Não é possível adicionar ou remover compartilhamentos durante a sincronização.
mongosyncsincroniza apenas índices que existem em todos os shards.Se o
mongosyncdetectar especificações de índice inconsistentes em fragmentos, ele sairá com um erro fatal. Ao verificar inconsistências,mongosyncignora os campos de índicensebackground.Observação
To check for index inconsistencies, see Find Inconsistent Indexes Across Shards. This method surfaces
nsandbackgroundfield differences, whichmongosyncignores when checking for inconsistencies.If the source or destination cluster is a sharded cluster and you are not running
mongosyncwith namespace filtering, you must disable the source cluster's balancer by running thebalancerStopcommand and waiting 15 minutes for the command to complete.Se o cluster de origem ou destino for um cluster fragmentado e você estiver executando
mongosynccom 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.You must always disable the balancer on a sharded destination cluster by using
balancerStop.If you have enabled the source cluster's balancer, but disabled it for collections within the namespace filter, do not run
shardCollectionon collections within the namespace filter. If you runshardCollectionon collections within the namespace filter during the migration,mongosyncreturns an error and stops, which requires you to start the migration from scratch.mongosyncdoesn't support running the commandtransitionFromDedicatedConfigServerduring execution.The shard key cannot be refined while syncing.
The
reshardCollectionoperations from the source cluster are not supported during sync.The maximum number of indexes per sharded collection is 63, which is one less than the default limit of 64.
mongosyncnão oferece suporte a coleções com um agrupamento não padrão em clusters fragmentados. Isso se aplica a collections fragmentadas e não fragmentadas.mongosyncerros em índices inconsistentes ou ausentes em alguns fragmentos portadores de dados.mongosyncfails if there is a balancing window configured on the source or destination cluster.mongosyncnão suporta a migração para namespaces de destino com tags de zona de shard pré-configuradas. Antes de iniciar uma migração, remova todos os intervalos de tags de fragmento, ou zonas, de qualquer namespace para o qual omongosyncmigrará no destino. Você pode adicionar novamente os intervalos de zona desejados depois que a migração atingir o estadoCOMMITTED.
Reversão
Se você não chamar o ponto de extremidade /commit para finalizar a sincronização reversa, o cluster de origem original permanecerá em um estado intermediário e inutilizável.
Se a fonte antiga tiver índices exclusivos parcialmente distribuídos entre os shards, a reversão poderá causar falhas. Certifique-se de que existem índices únicos em todos os shards antes de reverter.
Os clusters de origem e destino devem ter o mesmo número de fragmentos. Não é possível fazer a sincronização reversa quando os clusters têm topologias diferentes.
Os clusters de origem e destino devem executar a mesma versão principal do MongoDB .
- To reverse direction,
mongosyncrequires that all unique indexes on the source cluster (except for_id) do not have legacy unique index keys.
Vários clusters
mongosyncnão oferece suporte à sincronização de vários clusters de origem em um cluster de destino.Um cluster não pode ser ao mesmo tempo um cluster de origem em uma instância
mongosynce 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 do usuário antes de iniciar, a menos que você defina o parâmetro preExistingDestinationData como
trueao chamar/start.O cluster de destino não deve conter o banco de dados do sistema
__mdb_internal_mongosyncantes 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.
To use the
$outaggregation stage or themapReducecommand (when set to create or replace a collection) with filtering, you must configure the filter to use the entire database. You cannot limit the filter to collections within the database.Para obter mais informações, consulte Filtragem com mapReduce e $out.
Capped collections
A partir de 1.3.0, O Mongosync suporta capped collections com algumas limitações.
A partir de 1.20.0, você deve passar o sinalizador --enableCappedCollectionHandling ao iniciar o mongosync para permitir a criação de novas coleções limitadas durante uma migração.
convertToCappedis not supported. If you runconvertToCapped,mongosyncexits with an error.cloneCollectionAsCappednão é suportado.
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 Mongosync não replica coleções de sistemas para o cluster de destino.
If you issue a dropDatabase command on the source cluster, this change is not directly applied on the destination cluster. Instead, Mongosync drops user collections and views in the database on the destination cluster, but it does not drop system collections on that database.
Por exemplo, no cluster de destino:
The drop operation does not affect a user-created
system.jscollection.If you enable profiling, the
system.profilecollection remains.If you create views on the source cluster and then drop the database, replicating the drop removes the views, but leaves an empty
system.viewscollection.
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ções de índices
When buildIndexes is set to "afterDataCopy", mongosync might fail to apply Rename DDL events. If this occurs, restart the migration from scratch with buildIndexes set to "beforeDataCopy" or "never". Setting buildIndexes to beforeDataCopy can increase the migration time, and setting buildIndexes to never requires you to build indexes manually after the migration completes.
Construção contínua de índices
mongosync does not support rolling index builds during migration. To avoid building indexes in a rolling fashion during migration, use one of the following methods to ensure that your destination indexes match your source indexes:
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 anteriores.
Para métodos de verificação alternativos, consulte Verificar transferência de dados.
Limitações
O verificador incorporado tem as seguintes limitações:
mongosyncarmazena o estado do verificador na memória, o que pode resultar em uma sobrecarga significativa de memória. Para executar o verificador,mongosyncrequer 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
mongosyncnovamente 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.Ao migrar de um conjunto de réplicas para um cluster fragmentado, não é possível renomear as coleções de origem especificadas nas opções de fragmentação. Se você renomear uma collection incluída nas opções de fragmentação durante a fase de ECA, o verificador relatará uma incompatibilidade de fragmentação.
Se você iniciar a sincronização com a verificação ativada e
buildIndexesdefinido comonever, a migração falhará semongosyncencontrar uma coleção TTL no cluster de origem. Isso pode acontecer depois de chamar o endpoint/startou 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:
Coleções limitadas
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
Para verificar coleções não suportadas, adicione código de script adicional para examinar as coleções. Para mais informações, consulte Verificar Transferência de Dados.
Observação
Starting in version 1.10, the verifier checks for data inconsistencies from a DDL event that occurred on the pre-6.0 source cluster during migration. This is because pre-6.0 migrations do not support DDL events.
To learn more, see Pre-6.0 Migration Limitations.
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:
The source cluster cannot have orphaned documents. To clean up any orphaned documents, run the
cleanupOrphanedcommand on themongodinstances on every shard's primary node on their source cluster. Wait for this command to complete with a status{ok:1}before starting the migration.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:
collModcreatecreateIndexesdropdropDatabasedropIndexesrefineCollectionShardKeyrenamereshardCollectionshardCollection
This includes operations that may create new collections such as
mapReduce,$out, and$merge. This also includes collections created implicitly from inserts. Only writes that produce CRUD events can occur during the migration.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
reversibleopção na solicitação /start.Certifique-se de que nenhuma gravação seja feita no cluster de origem depois de chamar o ponto de extremidade
/commit.Você não pode habilitar o
createSupportingIndexesparâmetro de fragmentação . Em vez disso, crie um índice para dar suporte à sua chave de shard no cluster de origem.If there are any indexes with inconsistent specs or that are missing on one or more shards,
mongosyncreturns an error. To check for index inconsistencies, see Find Inconsistent Indexes Across Shards.