Página inicial do Docs → Sincronizaçã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
Descrição
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.
Opções
Opções globais
--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çãocluster0
.
--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çãocluster1
.
--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 executarmongosync
, 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çãodisableTelemetry
.Para mais informações, consulte Coleta de Dados do Usuário.
--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çãoid
.
--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çãoloadLevel
.Aviso
Configurar
loadLevel
maior que o padrão de3
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çãologPath
.
--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çãoport
.
--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çãoverbosity
.
Comportamento
Independência do Cluster
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.
Arquivo de configuração
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.
Consistência
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.
Criação de perfil
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.
Clusters fragmentados
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.
Visualizações
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.
Bloqueio de gravação
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.
Permissões de usuário
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.
Leituras permitidas
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.
Gravações permitidas
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
forfalse
, 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
.
Cometer
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 estadoCOMMITTED
.
Preocupação de leitura e gravação
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.
readPreference
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.
Capped collections
A partir de 1.3.0, A Cluster-to-Cluster Sync oferece suporte a capped collections com algumas limitações.
convertToCapped
não é suportado. Se você executarconvertToCapped
,mongosync
será encerrado com um erro.cloneCollectionAsCapped
nã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 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.
Resiliência
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.
UUIDs
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.
Classificação
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.
Vários clusters
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.
Exemplos
Implemente uma origem e um cluster de destino.
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.Para iniciar o processo de sincronização, use um cliente HTTP como o cURL para enviar o comando
start
paramongosync
:curl localhost:27182/api/v1/start -X POST \ --data '{ "source": "cluster0", "destination": "cluster1" }' Exemplo de saída:
{ "success": true }