
此時測試表中有7條數據,做個全備。
全備:
mongodump --host=192.168.43.43 --port=37017 --oplog --out=/opt/mongo/fullbackup
在插入一條:
此時做增備,找出oplog中最近新增數據的ts時間:並記錄下這個時間:1574845947, 3,這個時間需要在做增備以及恢復的時候用到。
db.oplog.rs.find({op:{$ne:"n"}}).sort({$natural:-1}).limit(2);

做增備時利用剛剛查詢到的時間去做:
mongodump --host=192.168.43.43 --port=37017 -d local -c oplog.rs --query='{'ts':{$gt:Timestamp(1574845947, 3)}}' --out=/opt/mongo/oplog_cribak
全備時,有七條數據,增備時,新增了一條,共八條。這個時候在模擬誤刪除兩條數據。
刪除后集合中剩余6條數據。
接下來,需要恢復誤刪的兩條數據:
1、先進行全備恢復。看一下全備目錄中的數據,總共7條,和最開始進行全備的數據是一致的,也是7條。
2、增備目錄中的oplog記錄的第八條數據的ts記錄。可以看到增備中的七條數據+增備中的一條ts記錄數據,共八條,是沒問題的。
3、進行恢復。
先全備恢復,在增備恢復。
mkdir -p incre_bak
cp oplog_cribak/local/oplog.rs.bson incre_bak/oplog.bson
全備恢復:
mongorestore --host=192.168.43.43 --port=37017 --oplogReplay --dir=./fullbackup/
增備恢復:
mongorestore --host=192.168.43.43 --port=37017 --oplogReplay --oplogLimit=1574845947:3 --dir=./incre_bak
結果查看:
恢復后,進行登錄數據庫查看:此時是8條數據,已經恢復全。