Oplog replay ile point-in-time restore (yanlış drop/delete öncesine dön)
MongoDBYedeklemeKomut
# 1) Tam yedek + yedek suresince olusan oplog (tum instance, replica set uyesinden):
mongodump --uri="mongodb://admin@mongo2:27017/?authSource=admin&readPreference=secondary" --oplog --gzip --out=/backup/full
# 2) Hatali islemin zamanini bul (mongosh): db.getSiblingDB("local").oplog.rs.find({ "o.drop": "musteri" }).sort({ $natural: -1 }).limit(1)
# 3) Yedekten sonraki oplog'u al (t: tam yedegin baslangic zamani, epoch saniye):
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) Tam yedegi kendi oplog'uyla birlikte yukle:
mongorestore --uri="mongodb://admin@target:27017/?authSource=admin" --gzip --oplogReplay /backup/full
# 5) Oplog'u hatali isleme kadar uygula (oplogLimit haric tutulur):
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/pitrNe yapar?
Tam yedeği --oplog ile tutarlı hale getirir, ardından yedekten sonra biriken oplog'u hatalı işlemin (drop, toplu delete) timestamp'ine kadar uygulayarak veriyi o ana geri getirir.
Ne zaman kullanılır?
Yanlışlıkla bir koleksiyon drop edildiğinde veya hatalı bir toplu update/delete çalıştığında, hasar öncesi son duruma dönmek gerektiğinde.
Dikkat
Restore'u canlı sisteme değil ayrı bir hedefe yap, doğrulandıktan sonra gereken veriyi taşı. Yedeğin başlangıcından hatalı işleme kadarki oplog oplog window içinde kalmalıdır; pencere dışına düşen işlemler kurtarılamaz. --oplog yalnızca tam instance dump'ında çalışır (--db ile kullanılamaz). Sharded cluster'da mongodump ile tutarlı PITR yapılamaz; dosya sistemi snapshot'ı veya bir backup ürünü gerekir.