Verificar com o verificador incorporado
Nesta página
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.
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.
Novidades na versão 1.9.
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.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.
Se você fizer a atualização ao vivo de qualquer versão anterior a 1.9.0,
mongosync
desabilita a verificação incorporada.
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
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
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"
Iniciar a sincronização
Para começar a sincronizar dados do cluster de origem para o de destino, use o endpoint /start.
curl localhost:27182/api/v1/start -XPOST \ --data ' { "source": "cluster0", "destination": "cluster1", } '
Saída de exemplo:
{"success":true}
Observe que o verificador está habilitado por padrão para migrações de conjunto de réplicas.
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.
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.