mongodb - 根据备份文件和 oplog恢复数据到某个时间点,为什么报不能恢复?
怪我咯
怪我咯 2017-05-02 09:21:31
0
0
917

1 进行备份到/var/lib/dumps/

2 误操作删除了一个表

3备份oplog到/root/dump/目录

4 将/root/dump/local/oplog.rs.bson 复制为/root/dump/oplog.bson

5 通过bsondump找到误删除的时间点

6 根据找到的时间点来恢复到误删除之前 报错:

[root@cd_spy2 /var/lib/dumps]# /usr/local/mongodb/bin/mongorestore --port 27020 --oplogReplay --oplogLimit 1472547691:1 /var/lib/dumps
connected to: 127.0.0.1:27020
Tue Aug 30 17:13:35.270 Latest oplog entry on the server is 1472547691:1
Tue Aug 30 17:13:35.270 Only applying oplog entries matching this criteria: { "ts" : { "$gt" : { "$timestamp" : { "t" : 1472547691, "i" : 1 } }, "$lt" : { "$timestamp" : { "t" : 1472547691, "i" : 1 } } } }
Tue Aug 30 17:13:35.271 /var/lib/dumps/admin/system.profile.bson
Tue Aug 30 17:13:35.271 skipping
Tue Aug 30 17:13:35.271 /var/lib/dumps/test/foo.bson
Tue Aug 30 17:13:35.271 ERROR: The oplogLimit option cannot be used if normal databases/collections exist in the dump directory.

字面意思是先找到当前最新的oplog, 然后apply最新的oplog到我oplogLimit 指定的点位之间的事件(这个例子也就是什么都不做)。这个我不理解,应该是apply 从我备份数据开始的时间点 到oplogLimit指定的时间点指点的时间。

然后我再数据库误操作的那个表再insert了一条数据,那系统最新的oplog就比我oplogLimit 指定的点位还要新了,再执行

[root@cd_spy2 /var/lib/dumps]# /usr/local/mongodb/bin/mongorestore --port 27020 --oplogReplay --oplogLimit 1472547691:1 /var/lib/dumps
connected to: 127.0.0.1:27020
Tue Aug 30 17:16:08.756 The oplogLimit is not newer than the last oplog entry on the server.

报错:说我oplogLimit 指定的点位没有系统的oplog新(这不是废话么,我要恢复当然是恢复到以前,难道还能恢复到未来么 - -!!!!!!!!!!!)

怪我咯
怪我咯

走同样的路,发现不同的人生

모든 응답(0)
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿