2012-01-19 4 views
8

제목과 마찬가지로 MongoDBGridFS 개의 파일 유형 (예 : text, pdf, xls)의 데이터베이스가 있으며이 데이터베이스를 가장 쉬운 방법으로 백업하고 싶습니다.MongoDB GridFS 데이터베이스를 가장 쉽게 백업 할 수 있습니까?

복제 옵션이 없습니다. 가급적이면 나는 데이터베이스에 파일을 덤핑하고 그 파일을 백업하는 일반적인 데이터베이스 방식으로하고 싶습니다. (필요할 경우 전체 데이터베이스를 100 % 복원하는 데 사용할 수 있습니다). mongodump으로이 작업을 수행 할 수 있습니까? 나는 또한 백업이 증분이되기를 원한다. 그게 GridFSmongodump의 문제일까요?

가장 중요한 것은 그 일을하는 가장 좋은 방법이라고 생각하십니까? 나는 MongoDB에 익숙하지 않고, mongodump 일뿐만 아니라 mysqldumpMySQL으로 처리합니까? MongoDBGridFS 및 증분 백업의 모범 사례는 무엇입니까?

차이점이있는 경우 Linux을 실행 중입니다.

답변

15

GridFS는 파일을 fs.files 및 fs.chunks의 두 가지 모음으로 저장합니다. 이에

자세한 정보는 GridFS 사양 문서에서 찾을 수있다 : http://www.mongodb.org/display/DOCS/GridFS+Specification

두 컬렉션은 mongodump, 다른 컬렉션과 같은를 사용하여 백업 할 수있다. mongodump에 대한 문서는 여기에서 찾을 수 있습니다 :이 데모를 들어

, 내 DB 이름은 "gridFS":

첫째, mongodump 터미널에서 http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongodump

, 이것은 다음과 같을 것 내 바탕 화면에 폴더에 fs.files 및 fs.chunks 컬렉션을 백업하는 데 사용됩니다

$ bin/mongodump --db gridFS --collection fs.chunks --out /Desktop 
connected to: 127.0.0.1 
DATABASE: gridFS  to  /Desktop/gridFS 
    gridFS.fs.chunks to /Desktop/gridFS/fs.chunks.bson 
     3 objects 
$ bin/mongodump --db gridFS --collection fs.files --out /Desktop 
connected to: 127.0.0.1 
DATABASE: gridFS  to  /Desktop/gridFS 
    gridFS.fs.files to /Users/mbastien/Desktop/gridfs/gridFS/fs.files.bson 
     3 objects 

이제 mongorestore는 악마의 목적을 위해 (새로운으로 백업 된 컬렉션을 당겨하는 데 사용됩니다

$ bin/mongo 
MongoDB shell version: 2.0.2 
connecting to: test 
> use gridFScopy 
switched to db gridFScopy 
> show collections 
fs.chunks 
fs.files 
system.indexes 
> 

콜렉션 fs.chunks 및 fs.files가 성공적으로 복원되었습니다 검증 할 수 있습니다 복원 있도록 "gridFScopy"

$ bin/mongorestore --db gridFScopy --collection fs.chunks /Desktop/gridFS/fs.chunks.bson 
connected to: 127.0.0.1 
Thu Jan 19 12:38:43 /Desktop/gridFS/fs.chunks.bson 
Thu Jan 19 12:38:43  going into namespace [gridFScopy.fs.chunks] 
3 objects found 
$ bin/mongorestore --db gridFScopy --collection fs.files /Desktop/gridFS/fs.files.bson 
connected to: 127.0.0.1 
Thu Jan 19 12:39:37 /Desktop/gridFS/fs.files.bson 
Thu Jan 19 12:39:37  going into namespace [gridFScopy.fs.files] 
3 objects found 

라고 tration) 데이터베이스는 이제 몽고 쉘이 시작됩니다 새로운 DB.

주기적으로 fs.files 및 fs.chunks 모음에 mongodump를 수행하는 스크립트를 작성할 수 있습니다.

증분 백업은 MongoDB에서 실제로 지원되지 않습니다. http://groups.google.com/group/mongodb-user/browse_thread/thread/6b886794a9bf170f

연속 백 업, 많은 사용자가 복제 세트를 사용 : "MongoDB를 증분 백업"에 대한 구글 검색은 주제에 좋은 MongoDB를 사용자 Google 그룹 토론을 알 수있다. (원래의 질문에서 이것이 옵션이 아니라고 말했습니까?이 답변을 읽는 다른 커뮤니티 회원에게 포함되어 있습니다.) 복제 세트의 멤버는 숨길 수 없도록 숨길 수 있습니다 기본이고 결코 읽혀지지 않을 것입니다. 자세한 내용은 Replica Set Configuration 설명서의 "Member Options"섹션을 참조하십시오. http://www.mongodb.org/display/DOCS/Replica+Set+Configuration#ReplicaSetConfiguration-Memberoptions

+0

MongoDB에는 증분 백업 기능이 없지만 외부 증분 백업 작업은 최소한 새로운 fs.files/fs.chunks가 있고 새로운 것을 백업 할 수 있어야합니다. 나는 그것을 조금 둘러보고 놀 것이다. 내 마음 속의 복제는 약간 개략적인데, 나는 백업을 위해 MongoDB 자체에 의존하는 것을 싫어한다. 또한 이상적으로는 보관 목적으로 일일 스냅 샷을 원합니다. 매우 유익한 어느 곳 이라든지 고맙다. – c00kiemonster

+2

대상 컬렉션이 이미 존재하면 mongorestore는 각 문서의 _id를 단계별로 실행하고 새 문서 만 추가합니다. mongodump에 쿼리를 제공 할 수 있으므로 문서에 "마지막으로 업데이트 된"필드 또는 이와 동등한 것이 있으면 마지막으로 백업 한 날짜 이후에 업데이트되거나 추가 된 문서 만 덤프 할 수 있습니다. 다른 유틸리티가 dbpath 디렉토리의 백업을 가질 수도 있습니다. 백업에 대한 Mongo 문서의 "저널링이 활성화 된 백업"및 "종료 및 백업"섹션에서 이에 대한 몇 가지 참고 사항이 있습니다. http://www.mongodb.org/display/DOCS/Backups – Marc

+0

매우 편리 할 것입니다. 팁 고마워 – c00kiemonster

관련 문제