Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
MongoDB Mongosync
/ /

Verificar com o verificador incorporado

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.

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.

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 como never, a migração falhará se mongosync 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.

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

1

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"
2

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}
3

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.

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.

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.

Voltar

Verificação da transferência de dados

Nesta página