.ns 및 .0, .1, . ... 파일?

.ns 및 .0, .1, . ... 파일?

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로 시도했지만 예상대로 해당 파일을 처리하지 않습니다).

감사해요

답변1

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

문제가 손상 및/또는 다른 문제 시작을 암시하므로 mongod(해당 문제를 해결하려면 별도의 질문에 시작 메시지 로그 파일을 게시해야 함) 대안이 있습니다. 참고로 가장 일반적인 문제는 권한 관련입니다. 특히 사람들이 수동으로(자체로) 또는 sudo(루트로)를 사용하여 mongod를 시작하고 다양한 디렉터리에 문제가 있는 권한을 생성하려고 할 때 더욱 그렇습니다.

mongorestore이러한 데이터 파일을 직접 사용할 수는 없지만 mongodump해당 파일을 읽고 예상되는 BSON 파일에 데이터를 덤프할 수 있다는 것이 맞습니다 mongorestore.

여기서 원하는 옵션은DB경로. 경로가 이라고 언급했으므로 /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인스턴스로 다시 가져올 수 있습니다.

관련 정보