DBAtlas · Atlas de operaciones de bases de datos

Restauración a un punto en el tiempo con replay del oplog (volver a antes de un drop/delete erróneo)

MongoDBBackup

Comando

# 1) Full backup + oplog written during the backup (whole instance, from a replica set member):
mongodump --uri="mongodb://admin@mongo2:27017/?authSource=admin&readPreference=secondary" --oplog --gzip --out=/backup/full
# 2) Find the time of the bad operation (mongosh): db.getSiblingDB("local").oplog.rs.find({ "o.drop": "musteri" }).sort({ $natural: -1 }).limit(1)
# 3) Dump the oplog after the backup (t: start time of the full backup, epoch seconds):
mongodump --uri="mongodb://admin@mongo2:27017/?authSource=admin" --db=local --collection=oplog.rs --query='{"ts":{"$gte":{"$timestamp":{"t":1791400000,"i":1}}}}' --out=/backup/oplog
# 4) Restore the full backup together with its own oplog:
mongorestore --uri="mongodb://admin@target:27017/?authSource=admin" --gzip --oplogReplay /backup/full
# 5) Replay the oplog up to the bad operation (oplogLimit is exclusive):
mkdir /backup/pitr && mv /backup/oplog/local/oplog.rs.bson /backup/pitr/oplog.bson
mongorestore --uri="mongodb://admin@target:27017/?authSource=admin" --oplogReplay --oplogLimit=1791403600:1 /backup/pitr

Qué hace

Hace que el backup completo sea consistente con --oplog y luego reproduce el oplog acumulado tras el backup hasta el timestamp de la operación errónea (drop, borrado masivo), devolviendo los datos a ese momento.

Cuándo usarlo

Cuando se eliminó una colección por error o se ejecutó un update/delete masivo defectuoso y necesita el último estado anterior al daño.

Precaución

Restaure en un destino aparte, no en el sistema activo, y mueva los datos necesarios tras verificarlos. El oplog desde el inicio del backup hasta la operación errónea debe seguir dentro de la ventana del oplog; las operaciones que salieron de la ventana no se pueden recuperar. --oplog solo funciona con un dump completo de la instancia (no se puede combinar con --db). En un clúster shardeado no es posible un PITR consistente con mongodump; se requiere un snapshot del sistema de archivos o un producto de backup.

Abrir en DBAtlas →

Relacionado