.ns 및 .0, .1,에서 MongoDB 데이터베이스를 복구 할 수 있습니까? … 파일?


14

Ubuntu 12.10에 MongoDB 2.0.4 설치가 있습니다. 최근에 외부에서 데이터베이스에 연결하는 데 문제가 있었고 MongoDB가 올바르게 시작되지 못하게하는 것이 있다는 것을 알았습니다. 여러 소스에서 제안한 것처럼 (StackOverflow 참조) 제거 /var/lib/mongodb/mongodb.lock하고 실행했습니다 mongod --repair. 이것은 문제를 해결하지 못했습니다. MongoDB는 실행되지 않고 나중에 제거를 처리하지 않는 잠금 파일을 계속 생성했습니다. 로그를 살펴보면라는 폴더에 액세스 할 수 없다는 것을 깨달았습니다. $tmpSomething(이름이 임시 폴더를 제안했기 때문에) 제거한 후 나중에는 하나만 있다는 사실을 제외하고는 모두 작동했습니다 ... 내 /var/lib/mongodb/폴더가 여전히 가득 차 있기 때문에 다른 데이터베이스는 여전히 존재하지만 이전 데이터베이스 는.ns .0 .1 .n무게가 큰 파일. 그것들을 데이터베이스로 복원하는 방법이 있습니까? (Mongorestore로 시도했지만 예상대로 해당 파일을 처리하지 않습니다).

감사

답변:


19

.ns .0 .1등의 파일은 데이터 파일 자체입니다. 해당 폴더를 가리키는 인수를 사용 하여 mongod인스턴스 를 시작 --dbpath했거나 내용을 다른 곳으로 이동하고 해당 항목을 가리키는 옵션을 사용한 경우 mongod는 정상적으로 읽습니다.

문제가 손상 및 / 또는 다른 문제 시작을 제안하기 때문에 mongod(시작 메시지 로그 파일을 해당 문제를 해결하기 위해 별도의 질문으로 게시해야 함) 다른 대안이 있습니다. 참고로 가장 일반적인 문제는 권한 관련이며, 특히 사람들이 mongod를 수동으로 (자체적으로) 시작하거나 sudo (루트로) 시작하여 다양한 디렉토리에 문제가있는 권한을 만들려고 할 때 발생합니다.

당신이 올바른지 mongorestore바로 이러한 데이터 파일을 사용할 수 없지만 mongodump그 BSON 파일로에서 그들과 덤프 데이터를 읽을 수 있습니다 mongorestore기대하고있다.

여기서 원하는 옵션은 dbpath 입니다. 당신은 path가 언급 /var/lib/mongo되어 있으므로 다음과 같이 실행할 수 있습니다.

mongodump --dbpath /var/lib/mongo -d <database name> -o /path/to/put/files

선택적으로 --repair여기 를 사용 하여 극한 상황에서 쿼리 옵션과 함께 손상을 수정하여 손상된 섹션을 피할 수 있습니다 (드물지만 필요한 경우). 다양한 옵션이 mongodump페이지에 설명되어 있습니다 .

http://docs.mongodb.org/manual/reference/mongodump/

파일을 덤프하면 mongorestore다른 mongod인스턴스 로 다시 가져올 수 있습니다 .



2
Mongo 3.0에서 옵션은 지정된 파일을 mongod --dbpath ./사용하여 mongo 서버를 시작한 다음--dbpath
Shwaydogg

3
참고로 Mongo 3.0을 실행 중이고 파일에 mongod --dbpath ./데이터베이스를 제공하지 않으면 .ns .0스토리지 엔진이 이전 MMapV1 엔진 대신 새 WiredTiger 엔진으로 기본 설정되어있을 수 있습니다. mongod --storageEngine mmapv1 --dbpath ./대신 기존 엔진을 사용하여 연결 하십시오 .
flamebaud

1
.ns, .0 및 .1 파일에서 mongo 3.0으로 데이터를 마이그레이션하는 사람을 도와 줄 수 있습니까?
Mandeep Singh

1
@flamebaud가 말했듯이 기본 엔진이 변경되었습니다. Mongo 문서에서 기본 스토리지 엔진 변경 을 확인하십시오 . 당신은 또한에 문서의 시작 부분에보고하도록 할 수 있습니다 WiredTiger 저장소 엔진
루도빅 Kuty
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.