Menu Docs

Página inicial do DocsSincronização de Cluster-to-Cluster do MongoDB

mongosync

Nesta página

  • Descrição
  • Opções
  • Opções globais
  • Comportamento
  • Independência do Cluster
  • Arquivo de configuração
  • Consistência
  • Criação de perfil
  • Clusters fragmentados
  • Visualizações
  • Bloqueio de gravação
  • Cometer
  • Preocupação de leitura e gravação
  • readPreference
  • Capped collections
  • Coleções do sistema
  • Resiliência
  • UUIDs
  • Classificação
  • Vários clusters
  • Exemplos

O binário mongosync é o processo primário usado no Cluster-to-Cluster Sync. mongosync migra dados de um cluster para outro e pode manter os clusters em sincronização contínua.

Este documento fornece uma visão geral completa das opções da linha de comando mongosync.

Observação

  • O cluster de origem e o cluster de destino devem usar MongoDB6,0 ou posterior.

  • mongosync suporta conjuntos de réplicas e clusters fragmentados.

  • Instâncias MongoDB independentes não são suportadas. Converta a instância independente para um conjunto de réplica antes de usar o Cluster-to-Cluster Sync.

  • mongosync não suporta clusters compartilhados do Atlas ou instâncias sem servidor.

  • Para obter uma lista completa de limitações, consulte Limitações de Sincronização de Cluster para Cluster.

--cluster0 <URI>

Define o URI de conexão para o primeiro cluster. O primeiro cluster pode servir como origem ou destino no processo de sincronização. Designe os clusters de origem e de destino na chamada para o ponto de extremidade da API start .

Para obter mais informações sobre como conectar o mongosync, consulte Conexões.

Para definir a opção --cluster0 a partir de um arquivo de configuração, consulte a configuração cluster0.

--cluster1 <URI>

Define o URI de conexão para o segundo cluster. O segundo cluster pode servir como origem ou destino no processo de sincronização. Designe os clusters de origem e de destino na chamada para o ponto de extremidade da API start .

Para obter mais informações sobre como conectar o mongosync, consulte Conexões.

Para definir a opção --cluster1 a partir de um arquivo de configuração, consulte a configuração cluster1.

--config <filename>

Define o caminho para o arquivo de configuração.

Para obter mais informações, consulte Independência do Cluster.

--disableTelemetry

Novidades na versão 1,4,0.

Desabilita a collection de dados de telemetria para mongosync.

Por padrão, o mongosync coleta dados de uso agregados e anônimos para melhorar os produtos MongoDB. Ao executar mongosync, você pode desabilitar a coleta desses dados de telemetria.

Para definir a opção --disableTelemetry a partir de um arquivo de configuração, consulte a configuração disableTelemetry.

Para mais informações, consulte Coleta de Dados do Usuário.

--help, -h

Imprime informações de uso em stdout.

--id <ID>

Define um identificador para a instância mongosync.

Use esta opção ao executar múltiplas instâncias de mongosync em um cluster fragmentado, para sincronizar os fragmentos individualmente.

O valor do identificador para esta opção deve corresponder ao ID de fragmento do fragmento que ele sincroniza. Para localizar o ID de shard, utilize o comando listShards .

Para definir a opção --id a partir de um arquivo de configuração, consulte a configuração id.

--loadLevel <level>

Tipo: inteiro

Padrão: 3

Define o nível de volume de trabalho do cluster para sincronizar dados entre os clusters de origem e destino:

  • 4, a configuração mais alta, maximiza a carga de trabalho do cluster e sincroniza os dados mais rapidamente.

  • 1, a configuração mais baixa, minimiza o volume de trabalho do cluster e sincroniza os dados de forma mais lenta.

Para definir a opção --loadLevel a partir de um arquivo de configuração, consulte a configuração loadLevel.

Aviso

Configurar loadLevel maior que o padrão de 3 pode afetar negativamente o desempenho do cluster de destino.

--logPath <DIR>

Define o caminho para o diretório de logs. A sincronização de cluster para cluster grava logs em arquivos neste diretório.

Para obter mais informações, consulte Registro de log.

Para definir a opção --logPath a partir de um arquivo de configuração, consulte a configuração logPath.

--port

Padrão: 27182

Define a porta usada pelo servidor HTTP para a API HTTP de Cluster-to-Cluster Sync.

Para definir a opção --port a partir de um arquivo de configuração, consulte a configuração port.

--verbosity <level>

Padrão: DEBUG

Define o nível de verbosidade a ser usado em mensagens de registro. A sincronização de cluster para cluster registra todas as mensagens no nível especificado e todas as mensagens em níveis inferiores.

A opção --verbosity suporta os seguintes valores:

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

  • PANIC

Para definir a opção --verbosity a partir de um arquivo de configuração, consulte a configuração verbosity.

--version, -v

Imprime informações da versão mongosync em stdout.

mongosync sincroniza dados de coleta entre um cluster de origem e um cluster de destino. mongosync não sincroniza usuários ou funções. Como resultado, você pode criar usuários com permissões de acesso diferentes em cada cluster.

As opções para mongosync podem ser definidas em um arquivo de configuração YAML. Utilize a opção --config . Por exemplo:

$ mongosync --config /etc/mongosync.conf

Para obter informações sobre as configurações disponíveis, consulte Configuração.

mongosync oferece suporte à consistência eventual no cluster de destino. A consistência de leitura não é garantida no cluster de destino; os clusters de origem e destino podem ser diferentes em determinado momento. No entanto, se novas gravações forem interrompidas no cluster de origem, os clusters de origem e de destino eventualmente manterão os mesmos dados.

As gravações individuais podem ser reordenadas ou combinadas à medida que são retransmitidas de origem para destino. Para um determinado documento, o número total de gravações pode ser diferente entre a origem e o destino.

As transações podem aparecer de forma não atômica no cluster de destino. As gravações que podem ser repetidas podem não ser repetidas no cluster de destino.

Se o perfil estiver habilitado em um banco de dados de origem, o MongoDB criará uma coleção especial denominada <db>.system.profile. Depois que a sincronização for concluída, o Cluster-to-Cluster Sync não eliminará a coleção <db>.system.profile do destino, mesmo que o banco de dados de origem seja eliminado posteriormente. A coleção <db>.system.profile não alterará a precisão dos dados do usuário no destino.

Cluster-to-Cluster Sync oferece suporte à replicação entre clusters fragmentados. Os fragmentos individuais são replicados em paralelo do cluster de origem para o cluster de destino, no entanto, uma migração de blocos ou atualização de origem semelhante pode mover documentos para um novo fragmento de origem durante a replicação.

Mesmo que os documentos se movam entre os fragmentos de origem durante a replicação, a Cluster-to-Cluster Sync mantém a garantia de consistência eventual no cluster de destino.

Se um banco de dados com visualizações for descartado na origem, o destino poderá mostrar uma coleção system.views vazia nesse banco de dados. A coleção vazia system.views não alterará a precisão dos dados do usuário no destino.

mongosync não habilita o bloqueio de gravação por padrão. Se você habilitar o bloqueio de gravação, mongosync bloqueará as gravações:

  • No cluster de destino durante a sincronização.

  • No cluster de origem quando commit é recebido.

Para ativar o bloqueio de gravação, use a API inicial para definir enableUserWriteBlocking como true. Você não pode ativar o bloqueio de gravação após o início da sincronização.

Você deve ativar o bloqueio de gravação ao iniciar o mongosync se quiser usar a sincronização reversa posteriormente.

Para definir enableUserWriteBlocking, o usuário mongosync deve ter uma função que inclua os ActionTypes setUserWriteBlockMode e bypassWriteBlockingMode .

Observação

Ao usar enableUserWriteBlocking, as gravações são bloqueadas apenas para usuários que não possuem o ActionType bypassWriteBlockingMode . Os usuários que possuem esse ActionType podem realizar gravações.

As operações de leitura no cluster de origem são sempre permitidas.

Quando os relatórios de endpoint /progress canWrite são true, os dados nos clusters de origem e destino são consistentes.

Para ver em que estado mongosync está, chame o endpoint da API /progress. A saída /progress inclui um valor booleano, canWrite.

  • Quando canWrite é true, é seguro escrever no cluster de destino.

  • Quando canWrite for false, não escreva no cluster de destino.

Você pode gravar com segurança no cluster de origem enquanto mongosync estiver sincronizando. Não grave no cluster de destino a menos que canWrite seja true.

Para interromper a sincronização, use o comando commit no cluster de destino para converter os índices e finalizar as alterações. Se você ativar o bloqueio de gravação:

  • commit bloqueia gravações no cluster de origem.

  • commit os blocos gravam no cluster de destino até mongosync iniciar a validação do índice.

Para monitorar o processo commit, use o comando progress:

  • O cluster de destino é gravável quando canWrite é verdadeiro.

  • A conversão de índice é concluída quando mongosync introduz o estado COMMITTED.

Por padrão, mongosync define o nível de preocupação de leitura como "majority" para leituras no cluster de origem. Para gravações no cluster de destino, mongosync define o nível de write concern como "majority" com j: true.

Para obter mais informações sobre a configuração e o comportamento da preocupação com leitura e gravação, consulte Read Concern e Write Concern.

mongosync requer a preferência de leitura primary ao se conectar ao cluster de origem. Para obter mais informações, consulte Opções de preferência de leitura.

A partir de 1.3.0, A Cluster-to-Cluster Sync oferece suporte a capped collections com algumas limitações.

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.

O Cluster-to-Cluster Sync não replica coleções de sistemas para o cluster de destino.

Se você emitir um comando dropDatabase no agrupamento de origem, esta alteração não será diretamente aplicada no agrupamento de destino. Em vez disso, Cluster-to-Cluster Sync descarta coleções e exibições de usuários no banco de dados no cluster de destino, mas não descarta coleções do sistema nesse banco de dados.

Por exemplo, no cluster de destino:

  • A operação de soltar 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 visualizações no cluster de origem e depois descartar o banco de dados, replicar a queda removerá as visualizações, mas deixará 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.

mongosync é resiliente e consegue lidar com erros não fatais. Os logs que contêm a palavra "erro" ou "falha" não indicam que mongosync está falhando ou corrompendo os dados. Por exemplo, se ocorrer um erro de rede, o log mongosync poderá conter a palavra "erro", mas mongosync ainda poderá concluir a sincronização. Caso uma sincronização não seja concluída, mongosync grava uma entrada de log fatal.

mongosync cria collections com novos UUIDs no cluster de destino. Não há relacionamento entre UUIDs no cluster de origem e no cluster de destino. Se os aplicativos contiverem UUIDs codificados (o que o MongoDB não recomenda), pode ser necessário atualizar esses aplicativos antes que funcionem corretamente com o cluster migrado.

mongosync insere documentos no cluster de destino em uma ordem indefinida que não preserva a ordem de classificação natural do cluster de origem. Se os aplicativos dependerem da ordem dos documentos, mas não tiverem um método de classificação definido, talvez seja necessário atualizar esses aplicativos para especificar a ordem de classificação esperada antes que os aplicativos funcionem corretamente com o cluster migrado.

Para sincronizar um cluster de origem com vários clusters de destino, use uma instância mongosync para cada cluster de destino. Para obter mais informações, consulte Limitações de vários clusters.

  1. Implemente uma origem e um cluster de destino.

  2. Inicializar sincronização Cluster-to-Cluster:

    mongosync \
    --cluster0 "mongodb://192.0.2.10:27017,192.0.2.11:27017,192.0.2.12:27017" \
    --cluster1 "mongodb://192.0.2.20:27017,192.0.2.21:27017,192.0.2.22:27017"

    Use as cadeias de conexão apropriadas para os --cluster0 e --cluster1 para que eles possam se conectar aos seus conjuntos de réplicas.

  3. Para iniciar o processo de sincronização, use um cliente HTTP como o cURL para enviar o comando start para mongosync:

    curl localhost:27182/api/v1/start -X POST \
    --data '{ "source": "cluster0", "destination": "cluster1" }'

    Exemplo de saída:

    { "success": true }
← Referência