2012-02-21 2 views
2

MongoDB 인스턴스를 하나의 노드와 함께 사용하고 있습니다. 데이터 파일을 fsync하는 웹 서비스를 작성하여 백업 폴더로 압축합니다.MongoDB Java 드라이버를 사용하여 데이터 디렉토리를 찾는 방법

이상적으로는 구성 파일을 읽는 대신 프로그래밍 방식으로 데이터 디렉토리의 위치를 ​​얻으므로 개발 경로에서 설치 경로가 다른 프로덕션 시스템으로 쉽게 이식 할 수 있습니다. Java 드라이버를 사용하여이 작업을 수행 할 수있는 방법이 있습니까?

+0

입니다. 파일을 손상시킬 가능성이 큽니다. 그래서'mongoexport' 도구가 존재합니다. –

+0

데이터베이스를 중지하더라도? 파일을 복사하는 것이 더 빠를 수도 있다는 인상을 받습니까? – Eduardo

+0

글쎄, ['mongodump'] (http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongodump)를 사용하십시오. 파일을 복사하는 것이 더 빠르거나 파일에 많은 여유 공간을 복사하는 등 속도가 느려질 수 있습니다. 그러나 파일 백업에서 복원하는 것은 나중에 가지고있는 것 (구성 및 전체)을 나중에 다시 만들 수있는 옵션을 제공합니다. 데이터베이스의 이식성있는 표현으로 백업하면 나중에 데이터를 병합하거나 데이터베이스의 특정 부분 만 백업하는 것과 같은 가능성을 가능하게합니다. –

답변

3

설명 here으로 관리자 db.runCommand ({getCmdLineOpts : 1})를 사용한 다음 반환 된 데이터로 재생 해 봅니다.

예 반환 데이터는 그냥 백업하여 MongoDB에 그 방법을 시도하고 문제를 요구하고

{ 
     "argv" : [ 
       "mongod", 
       "--port", 
       "6669", 
       "--dbpath=c:\\data\\mongo2", 
       "--rest" 
     ], 
     "parsed" : { 
       "dbpath" : "c:\\data\\mongo2", 
       "port" : 6669, 
       "rest" : true 
     }, 
     "ok" : 1 
} 
0

mongoexport을 사용하여 데이터를 가져올 수 있습니다. 생산 기계에서 실행하고 개발 기계의 호스트/포트/콜렉션을 지정하십시오. 데이터는 mongoimport을 사용하여 프로덕션 시스템으로 가져올 수 있습니다.

+0

개발 및 호스트 컴퓨터가 동일한 네트워크에 있지 않습니다. 데이터를 서로간에 전송할 필요가 없습니다. 백업을 트리거하는 것은 내 응용 프로그램입니다. 차라리 fsync 및 압축 (mongoexport + 압축이 얼마나 빨라지는지 확신 할 수 없음)을 원합니다. 나는 많이 보았고 프로그램 방식으로 데이터 디렉토리의 위치를 ​​알 수있는 방법이없는 것으로 보인다. 나는 구성을 통해 그것을해야 할 것 같아요. – Eduardo

관련 문제