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
다음에 연결됨: 127.0.0.1:27020
Tue Aug 30 17:13:35.270 서버의 최신 oplog 항목은 1472547691:1입니다.
Tue Aug 30 17:13:35.270 이 기준과 일치하는 oplog 항목만 적용됩니다: { "ts": { "$gt" : { "$타임스탬프" : { "t" : 1472547691, "i" : 1 } }, "$lt" : { "$timestamp" : { "t" : 1472547691, "i" : 1 } } } }
8월 30일 화요일 17: 13:35.271 /var/lib/dumps/admin/system.profile.bson
8월 30일 화요일 17:13:35.271 건너뛰기
8월 30일 화요일 17:13:35.271 /var/lib/dumps/test/foo.bson
8월 30일 화요일 17:13:35.271 오류: The 덤프 디렉터리에 일반 데이터베이스/컬렉션이 있는 경우 oplogLimit 옵션을 사용할 수 없습니다.
문자 그대로의 의미는 먼저 최신 oplog를 찾은 다음 최신 oplog와 내 oplogLimit에 지정된 지점 사이에 이벤트를 적용하는 것입니다(이 예에서는 아무것도 하지 않음). 이게 이해가 안가네요. 데이터 백업을 시작한 시점부터 oplogLimit에서 지정한 시간까지 Apply에서 지정한 시간이어야 합니다.
그런 다음 데이터베이스 오작동이 발생한 테이블에 다른 데이터 조각을 삽입합니다. 그런 다음 시스템의 최신 oplog가 내 oplogLimit에 지정된 지점보다 최신입니다.
[root@cd_spy2 /var/lib/dumps]# /usr/local/mongodb/bin/mongorestore --port 27020 --oplogReplay --oplogLimit 1472547691:1 /var/lib/dumps
다음에 연결됨: 127.0.0.1:27020
8월 30일 화요일 17:16:08.756 oplogLimit이 서버의 마지막 oplog 항목보다 최신이 아닙니다.
오류 보고: 내 oplogLimit에 지정된 지점에 시스템의 새로운 oplog가 없다고 나와요(말도 안되는 소리 아닌가요? 물론 과거로 복원하고 싶은데 미래로 복원할 수 있나요? - -!!!!!!!!! )