Novidades na versão 1.9.
mongosync
inclui um verificador incorporado para realizar uma série de verificações no cluster de destino para verificar a sincronização das coleções suportadas. mongosync
habilita o verificador por padrão em clusters de conjuntos de réplicas.
A partir da versão 1.10, mongosync
ativa o verificador por padrão em clusters fragmentados.
Observação
mongosync
lê usando primary
preferência de leitura , então preserva a ordem dos campo do documento a partir do nó primary do cluster de origem. O verificador incorporado também verifica documentos com base no nó primário do cluster de origem, mas em um momento diferente de quando mongosync
os lê. Devido a isso, em casos raros, discrepâncias na ordem dos campo do documento entre os nós do cluster de origem podem fazer com que o verificador incorporado falhe na migração, mesmo que mongosync
tenha copiado os documentos corretamente.
Sobre esta tarefa
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.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
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:
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
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
Passos
Inicializar mongosync
Inicialize o processo mongosync
:
./bin/mongosync \ --logPath /var/log/mongosync \ --cluster0 "mongodb://clusterAdmin:superSecret@clusterOne01.fancyCorp.com:20020,clusterOne02.fancyCorp.com:20020,clusterOne03.fancyCorp.com:20020" \ --cluster1 "mongodb://clusterAdmin:superSecret@clusterTwo01.fancyCorp.com:20020,clusterTwo02.fancyCorp.com:20020,clusterTwo03.fancyCorp.com:20020"
Examinar o progresso
Para examinar o status da sincronização, use o endpoint /progress:
curl localhost:27182/api/v1/progress -XGET
Saída de exemplo:
{ "progress": { "state":"RUNNING", "canCommit":true, "canWrite":false, "info":"change event application", "lagTimeSeconds":0, "collectionCopy": { "estimatedTotalBytes":694, "estimatedCopiedBytes":694 }, "directionMapping": { "Source":"cluster0: localhost:27017", "Destination":"cluster1: localhost:27018" }, "verification": { "source": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" }, "destination": { "estimatedDocumentCount": 42, "hashedDocumentCount": 42, "lagTimeSeconds": 2, "totalCollectionCount": 42, "scannedCollectionCount": 10, "phase": "stream hashing" } } }, "success": true }
Examine o campo de resposta do verification
para obter informações sobre o status do verificador embarcado.
Comportamento
Verificações
O verificador incorporado executa uma série de verificações no cluster de destino. Ele verifica todas as coleções suportadas para confirmar que mongosync
teve sucesso na transferência de documentos do cluster de origem para o de destino.
Se o verificador encontrar erros, ele falhará na migração com um erro. Se o verificador não encontrar erros, o endpoint /progress
retornará canWrite: true
. Para saber mais sobre o canWrite
campo, consulte canWrite e Committed.
A partir da versão 1.15, o verificador incorporado examina metadados, índices e visualizações da coleção. Se o verificador encontrar uma incompatibilidade durante a verificação de metadados, ele retornará um erro que contém os tipos de incompatibilidade e uma contagem de suas ocorrências.
Entre em contato com o suporte para investigar problemas de verificação.
Requisitos de memória
A verificação requer 10 GB de memória e 500 MB adicionais para cada 1 milhão de documentos na migração.
Se a memória disponível for insuficiente, o endpoint /start
retornará um erro. Se isso ocorrer, para usar o mongosync
com o verificador, você deve primeiro aumentar a memória do servidor e retomar a migração.
Se aumentar a memória do servidor não for uma opção, reinicie mongosync
o com o verificador desabilitado.