El programa mongosync utiliza change streams para sincronizar datos entre clústeres de origen y de destino. mongosync no accede directamente al oplog, pero cuando un flujo de cambios devuelve eventos del pasado, los eventos deben estar dentro del rango de tiempo oplog.
mongosync aplica operaciones en el oplog sobre los datos en la clúster de destino después de la fase de copia de colección. Cuando las operaciones que mongosync no ha aplicado se eliminan del oplog en el clúster de origen, la sincronización falla y mongosync termina.
Nota
mongosync no replica applyOps operaciones realizadas en el clúster de origen durante sincronizar en el clúster de destino.
Si prevé sincronizar un conjunto de datos grande, o si planea pausar la sincronización por un período prolongado, podría exceder la oplog window. Utilice la configuración oplogSizeMB para aumentar el tamaño del oplog en el clúster de origen.
Considerations
El clúster de destino debe disponer de suficiente almacenamiento en disco para albergar el tamaño lógico de los datos que se migran y las entradas de destino de oplog desde la sincronización inicial. Por ejemplo, para migrar 10 GB de datos, el clúster de destino debe tener al menos 10 GB disponibles para los datos y otros 10 GB para las entradas de oplog de inserción de la sincronización inicial.
Para usar la verificación integrada, debes tener un oplog más grande en el destino. Si activas el verificador incorporado y reduces el tamaño del oplog de destino, es posible que el verificador incorporado no pueda mantenerse al día, lo que puede causar que mongosync genere un error.
Si necesitas reducir la sobrecarga de los registros del destino del oplog y el verificador incorporado está desactivado, puedes:
Utilice la configuración
oplogSizeMBpara reducir el tamaño del oplog del clúster de destino.Utilice la configuración
oplogMinRetentionHourspara reducir o remover el período mínimo de retención de oplog del clúster de destino.
Supervise el tamaño de oplog necesario para la sincronización inicial
Determina la oplog window.
Para obtener la diferencia en segundos entre la primera y la última entrada en oplog, ejecute db.getReplicationInfo(). Si estás replicando un clúster particionado, ejecuta el comando en cada partición.
db.getReplicationInfo().timeDiff
El valor devuelto es la ventana mínima de oplog para el clúster. Si hay varias particiones, el número más bajo es la ventana mínima oplog.
Determine el atraso de la replicación de mongosync.
Para obtener el valor de lag.overallLagSeconds, ejecuta el comando /progress. El tiempo de retardo es el tiempo en segundos entre el último evento aplicado por mongosync y el momento del último evento actual en el clúster de origen.
Es una medida de qué tan atrasado está el clúster de origen mongosync.
Validar el tamaño del oplog.
Si el tiempo de espera se acerca a la ventana mínima oplog, realice uno de los siguientes cambios:
Aumente la ventana de
oplog. UtilicereplSetResizeOplogpara establecerminRetentionHoursmayor que la ventana actualoplog.Nota
replSetResizeOplogno se admite en Atlas. Para cambiar el tamaño del oplog en Atlas, consulta Establecer oplog window mínimo.Escala la instancia
mongosync. Agrega CPU o memoria para escalar el nodomongosyncy que tenga una velocidad de copia más alta.
Nota
La ventana oplog y la tasa de cambio para el atraso de la replicación pueden variar durante la sincronización. Repita estos pasos durante una migración para supervisar el progreso.