2015년 7월 3일 금요일

MongoDB의 data파일을 직접 삭제한 경우.. 엿되더라.


MongoDB에서 Collection을 생성하고 Document를 생성하다보면,
DBPATH로 설정한 장소에 collection-name.ns, collection-name.{number}등의 파일들이 생성된다.

예)
db.createCollection("people", { size: 2147483648 } )

MongoDB에 색인데이터를 정재하여 적재하는 엔진을 하나 만들어, 구동했다.
한참을 돈 후에 잘못된 부분을 발견하게 되었고 재구동을 해야만 했다.

데이터 적재 후 결과, 용량은 기억안남)
$ du -ah .
...
513M    ./people.3
129M    ./people.1
65M     ./people.0
17M     ./people.ns
...

mongo 콘솔에서 collection을 제거했다.

db.people.drop()

헌데 데이터 파일은 사라지지 않는것이었다. 파일도 용량도 그대로.. 뭐지;?

당시 뭔생각이었는지 모르겠지만, 얼결에 MySQL 생각해서 파일을 강제삭제를 해버렸다.
(졸면서하면 이래된다. 다들알꺼다. 헐;; ㅋㅋㅋㅋㅋ)

$ rm -rf people.*
보이나? 호환마마보다 무섭다는 옵션 rf?? (배경음: 두둥~~~~~~~!!)

아무튼 깨끗해진 디랙터리는 내 정신을 정화한다. 므흣~
엔진 수정 후 구동을 실행, 어느정도 쌓였을때 다시 확인했다.
응? 뭔가 이상하다? 파일이 다른패턴으로 생성되고 있었다.

확인된 재구동 후 모습, 용량은 기억안남;ㅋ)
$ du -ah .
...
1.1G    ./people.5
1.1G    ./people.4
...

어? 뭐지? 0,1,2,3이 있었다고 4부터 생성??? 뭐??
아무튼 구동하던거 일단 내비뒀다. 데이터가 많아 2일이나 걸렸다. 젠장.

(시간여행: 2일 후)

구동완료, 일단 콘솔을 멈추고 MongoDB를 재시작했다.

> use DBNAME
db.people.find()
>

응? 뭐지? 아무것도 안뜬다?! 인식이 안된다. 헐.. 엿됐다.
인터넷을 찾아봤다.

$ mongod --repair
변화없다. 안된다.

db.repairDatabase() //를 해보란다.
뭔가 쭉쭉 되드만.. 끝났다. 

응? 그나마 있던 파일들이 사라졌다. 헐.............. 엿x2됐다.

결국, 이 글은 2일간 뻘짓에 대한 실록.이 되어버렸다.
(아우.. 그냥 파일시스템을 직접 만들껄 왜 MongoDB를 쓰려고했을까..)

누군가 같은 경우라면 절대, 파일을 직접 삭제하지 말기를 바란다.ㅋ



댓글 없음:

댓글 쓰기