Me dieron la tarea de configurar copias de seguridad incrementales para el conjunto de réplicas MongoDB, como punto de partida, por supuesto, lo busqué en Google y no pude encontrar nada en los documentos de MongoDB, sin embargo, encontré esta pregunta en Stack Overflow, que me animó a desarrollar mi propia solución ya que no encontró a Tayra muy activa.
Leí sobre oplogy me di cuenta de que era muy fácil desarrollar algo para reproducir el registro, pero resulta que no tenía que hacerlo, mongorestorelo mismo que yo.
Ahora tengo una solución de trabajo con scripts de bash y fue bastante fácil, esa es la razón por la que pregunto aquí si hay algún defecto en mi lógica, o tal vez algo que me muerda en el futuro.
A continuación, cómo implementé eso:
Procedimiento de respaldo completo
- bloqueo escribe en un miembro secundario db.fsyncLock()
- Tomar instantáneas
- Grabar la última posición del oplog - db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts
- Desbloquear escribe - db.fsyncUnlock()
Procedimiento de respaldo incremental
- bloqueo escribe en un miembro secundario
- Volcar el registro de operaciones desde la posición de registro registrada en la copia de seguridad completa (o la última incremental): - mongodump --host <secondary> -d local -c oplog.rs -o /mnt/mongo-test_backup/1 --query '{ "ts" : { $gt : Timestamp(1437725201, 50) } }'
- Registre la última posición del registro de operaciones (de la misma manera que para las copias de seguridad completas) 
- Desbloquear escribe
Procedimiento de restauración de respaldo completo
- detener todas las instancias de mongod
- copie la instantánea en el directorio de datos del cuadro que será el principal, pero asegúrese de excluir todo local*ymongod.lockesta técnica de restauración se llama reconfigurar al romper el espejo
- Comience primaria
- reconfigurar el conjunto de réplicas
- inicie los secundarios sin ningún dato, permítales realizar la sincronización inicial. O copie los datos del nuevo primario con una nueva localbase de datos
Restaurar copia de seguridad incremental
Cuando creamos una copia de seguridad incremental, la almacenaba así:
/mnt/mongo-test_backup/1/local/oplog.rs.bson
/mnt/mongo-test_backup/1/local/oplog.rs.metadata.jsonEstamos inscritos oplog.rs.bsonpero tendremos que cambiarle el nombre, así que aquí están los pasos:
- cambiar el directorio a la copia de seguridad: cd /mnt/mongo-test_backup/1/local
- eliminar el archivo json rm *.json
- renombrar el archivo bson mv oplog.rs.bson oplog.bson
- restaurarlo: - mongorestore -h <primary> --port <port> --oplogReplay /mnt/mongo-test_backup/1/local
Lo tengo todo escrito, puedo comprometerlo en GitHub más tarde.
La pregunta es si hay algún defecto en la lógica. Sospecho un poco, ya que el procedimiento es bastante sencillo y aún así no pude encontrarlo documentado en ningún lado.

Respuestas:
Para responder tu pregunta. ¡No! No hay fallas en su lógica y debería funcionar sin problemas. Sin embargo, si se pueden usar instantáneas LVM, es una mejor manera de hacer copias de seguridad.
fuente