2012-02-29 3 views
13

가동 중지 시간없이 백업을 수행하기위한 다양한 MongoDB 설정에 대해 읽었습니다. 어떤 전략이 가장 좋고 심지어 비교할 수 있습니까?MongoDb 핫 백업 - fsyncLock을 사용하여 데이터/db VS 복제본 복사

  1. 저널링을 활성화하고 단순히 /data/db 디렉토리를 복사 -이 충분한 경우 나에게 분명합니다 - MongoDB의 홈 페이지에 당신이 "그것을 스냅 샷"해야하고 그 예로 SAN 및 LVM에서 작동한다고 .

    질문 :

    는 스냅 샷이 상황에서 무엇을 의미 하는가하는 스냅 샷으로 복사 명령 수? NTFS를 사용하여 Windows 서버에 저널링 MongoDB (2.0+) 데이터 디렉토리를 복사하는 것을 저장합니까? 자신의 파일 시스템과 설정에 대해 어떻게 안전하다고 확신합니까?

  2. 2 개의 서버와 중재자가있는 복제 세트를 설정하십시오. 그런 다음 rs.status()fsyncLock/unlock을 사용하여 백업을 수행하는 동안 보조 서버에서만 데이터가 읽히도록하십시오.

    > db.fsyncLock 
    function() { 
        return db.adminCommand({fsync:1, lock:true}); 
    } 
    > db.fsyncUnlock 
    function() { 
        return db.getSiblingDB("admin").$cmd.sys.unlock.findOne(); 
    } 
    

    질문 :

    당신이 복제에 잠금을 사용하는 경우는 그 쓰기를 보인다 전체 복제 설정 및 this bug 고정되지 않은 잠겨 될 수 읽기 설정?

    백업 진행 중에 보조 서버가 기본 서버로 선정되면 어떻게됩니까? 백업 프로세스가 중지되거나 복제 세트가 잠금 해제 될 때까지 복제 요청이 응답하지 않습니다.

    고려 사항 : 지금은

    나는 간단한 해결책을 좋아하고 단순히 저널 파일과 함께 data/db 디렉토리를 복사 및 복제 세트를 기다릴 것이다. MongoDB는 64 비트 Windows 서버 (RackSpace Cloud)에서 실행됩니다.

답변

12

가장 좋은 방법은 다음 2 차에 fsync를 + 잠금을 디스크 또는 볼륨 레벨에서 볼륨 스냅 샷 (예 : LVM2, Hyper-V를, btrfs를 사용하여), 다음 스냅 샷 했었던 복사, 데이터베이스를 잠금 해제를 데이터 파일. 이렇게하면 보조 시스템의 가동 중지 시간을 최소화하고 복원하기 쉽습니다.

이 컨텍스트에서 "Snapshotting"은 일부 볼륨 관리자, 파일 시스템 및 하이퍼 바이저에서 제공하는 스냅 샷 기능을 나타냅니다. 본질적으로 이것은 블록 디바이스를위한 'copy-on-write'기능입니다. OS가 요구할 때 데이터를 덮어 쓰는 대신 새로운 데이터를 다른 곳에 쓰고 이전 버전과 새 버전을 읽을 수있게합니다. 스냅 샷팅은 대개 거의 시간이 걸리지 않지만 일부 시스템에서는 동일한 파일에 대한 많은 스냅 샷을 유지하는 것이 좋지 않습니다. 미래의 기록을 크게 지연시킬 수 있기 때문입니다.

이유는이 전체 백업을위한 최선의 전략이라고 생각 :

  1. 인덱스가 복원 될 인덱스 데이터를 저장하지 않습니다 mongodump를 사용하지만, 복구를 위해 인덱스를 다시 작성하는 것은 시간이 걸릴 수 있습니다 - 모두가 당신에게 외치는 때 당신이 필요로하는 마지막 것은 시간이 걸리고 가속 될 수없는 작업입니다.

  2. Fsync + lock은 작성자를 차단하고 독자를 차단할 수 있습니다. 따라서 기본 (보조)이 아닌 보조 (수동)에서 수행하는 것이 가장 좋습니다.

  3. 보조를 중지하면 oplog이 채워 지므로 잠금 시간을 가능한 짧게 유지해야합니다. 잠금 동안 모든 데이터 파일 (몇 시간이 걸릴 수 있음)을 복사하는 대신 스냅 샷을 수행하는 데는 불과 몇 초가 걸립니다. 그러므로, oplog 한계는 관심사가 아니다.

  4. 실제 사본이으로 실행되는 동안 모든 것이 '정상으로 되돌아갑니다.'로되어있어 안심할 수 있습니다. 유일한 차이점은 백업 중에 보조 부하의 부하가 커지는 것이고 큰 우려가되지 않아야합니다.

주소 질문 :

  • 복제 세트에 잠금에 관한 : 짧은 잠금 시간을 유지하고, (선출 할 수없는 마스터) 수동 차 그래서 작가 큐 수 '를 사용 마구간. 백업 시스템이 수동 인 경우 일어날 수 없다 "백업이 진행되는 동안 보조가 1 차 투표를하면 어떻게"

지금 나는 간단한 해결책을 부탁

  • 및 저널 파일과 함께 data/db 디렉토리를 복사하고 복제 세트를 기다리십시오. MongoDB는 64 비트 Windows 서버 (RackSpace Cloud)에서 실행됩니다.

  • 그렇게 할 수 있습니다. 볼륨 스냅 샷을 사용하는 것이 여전히 최선의 방법이며, 단 몇 초만의 중단 시간을 제공합니다. 데이터가 작은 경우 간단한 mongodump일지도 모르지만 복구 시간이 허용되는지 확인하십시오 (색인에 따라 다름).

    관련 문제