2014-02-25 3 views
2

mongoDB 및 현재의 우분투 12.04 데스크탑 컴퓨터에 공간 문제가 있습니다. 나는 항상 데이터가 물리적으로/var/lib/mongodb에 저장된다는 것을 의미하는 기본 설정을 사용했다. 그때까지는 데이터베이스 크기가 엄청나게 커지면서 지금은 하드 드라이브에 빈 공간이 생길 수 있도록 컬렉션을 일부 삭제하려고합니다. 나는 this과 다른 방법을 선택했다하지만이 제거 기능을 실행 할 때마다 나는 다음과 같은 오류 메시지가 계속 : 외부 하드 디스크 또는 USB에 MongoDB를의 경로를 설정MongoDB 데이터베이스 및 콜렉션 삭제

Can't take a write lock while out of disk space 

첫 번째 솔루션은 내 마음에 와서입니다 디스크에 넣고 rm -rf을 사용하여 폴더를 물리적으로 제거하십시오. 그게 안전한 해결책일까요? 이 문제에 대한 다른 해결책이 있습니까?

+0

먼저 데이터 파일을 외장 디스크에 복사해야합니다. 그렇지 않으면 모든 데이터가 삭제됩니다. :) 그러나 원칙적으로 문제가 해결 될 수 있습니다. 사용 가능한 디스크가 더 많으면 데이터를 선택적으로 삭제하고 압축을 사용할 수 있습니다. 또는 외부 디스크에 mongodump를 수행하고 필요없는 콜렉션 파일을 제거하고 데이터 파일을 제거한 다음 데이터를 다시 가져올 수 있습니다. 말할 필요도없이 언제나 백업을 가지고 있습니다. – mnemosyn

+0

또한 하드 드라이브에있는 다른 파일을 제거하여 mongo가 더 많은 공간을 확보하고 방울을 처리 할 수 ​​있도록 할 수 있습니다. – xlembouras

답변

3

Mongodb는 데이터 디렉토리 전체를 다른 곳으로 복사 한 다음 새로운 mongod 프로세스를 가리키면 작동 할 수 있기 때문에 데이터베이스 복사에 매우 좋습니다.

따라서 당신의 단계는 다음과 같습니다

  • 다른 위치
  • 이 다시로드에서 몽고 중지 (디렉토리에 .lock있는 모든 파일을 삭제하려면 현재 데이터 디렉토리를
  • 복사이 찾기

    mongod --dbpath <path to new directory on new disk> --port 27020 
    
  • :)
  • 이제 다음 명령을 사용하여 다른 몽고를 시작

이제 새로운 몽고 데이터베이스가 열릴 것입니다 (이미 실행중인 mongod와 관련된 문제를 피하기 위해 다른 포트에 있습니다). 이제 collections \ dbs를 삭제하지 않고 새 디스크에 대해 새로운 mongod를 실행하게됩니다. Mongodb는 욕심이 많으며 컬렉션을 삭제할 때 기꺼이 디스크 공간을 포기하지 않는다는 것을 기억하십시오. 당신은 당신이 행복하면 안전하게 이전 MongoDB의 데이터 디렉토리를 삭제 한 후 그 위에 새로운 하나를 복사 할 수 있습니다

db.repairDatabase() 

를 실행해야합니다.

관련 문제