The mongosync program uses change streams to synchronize data between source and destination clusters. mongosync does not access the oplog directly, but when a change stream returns events from the past, the events must be within the oplog time range.
mongosync aplica operações em oplog no cluster de origem aos dados no cluster de destino após a fase de cópia da coleção. Quando as operações que mongosync não aplicaram roll off do oplog no cluster de origem, a sincronização falha e mongosync sai.
Observação
mongosync does not replicate applyOps operations made on the source cluster during sync to the destination cluster.
If you anticipate syncing a large data set, or if you plan to pause synchronization for an extended period of time, you might exceed the oplog window. Use the oplogSizeMB setting to increase the size of the oplog on the source cluster.
Considerações
O cluster de destino deve ter armazenamento em disco suficiente para acomodar o tamanho lógico dos dados que estão sendo migrados e as entradas de oplog de destino da sincronização inicial. Por exemplo, para migrar 10 GB de dados, o cluster de destino deve ter pelo menos 10 GB disponíveis para os dados e outro 10 GB para as entradas de oplog de inserção da sincronização inicial.
Para usar a verificação incorporada, você deve ter um oplog maior no destino. Se você habilitar o verificador incorporado e reduzir o tamanho do oplog de destino, o verificador incorporado pode não conseguir acompanhar, causando erro em mongosync.
Se precisar reduzir a sobrecarga das entradas do oplog de destino e o verificador incorporado estiver desativado, você poderá:
Use the
oplogSizeMBsetting to lower the destination cluster's oplog size.Use to
oplogMinRetentionHourssetting to lower or remove the destination cluster's minimum oplog retention period.
Monitore o tamanho do oplog necessário para a sincronização inicial
Determinar oplog window
To get the difference in seconds between the first and last entry in the oplog run db.getReplicationInfo(). If you are replicating a sharded cluster, run the command on each shard.
db.getReplicationInfo().timeDiff
O valor retornado é a janela oplog mínima do cluster. Se houver vários fragmentos, o menor número será a janela oplog mínima.
Determinar o atraso de replicação do mongosync
Para obter o valor lagTimeSeconds , execute o comando /progress . O tempo de atraso é o tempo em segundos entre o último evento aplicado por mongosync e a hora do evento mais recente atual no cluster de origem.
É uma medida de quão atrasado está o cluster de origem mongosync .
Validar tamanho do oplog
Se o tempo de atraso se aproximar da janela mínima de oplog , faça uma das seguintes alterações:
Increase the
oplogwindow. UsereplSetResizeOplogto setminRetentionHoursgreater than the currentoplogwindow.Observação
replSetResizeOplogis unsupported in Atlas. To resize the oplog in Atlas, see Set Minimum Oplog Window.Escale a instância
mongosync. Adicione CPU ou memória para escalar o nómongosyncpara que ele tenha uma taxa de cópia mais alta.
Observação
A oplog window e a taxa de alteração do atraso de replicação podem variar durante a sincronização. Repita essas etapas durante uma migração para monitorar o progresso.