2016-12-08 1 views
0

tar를 사용하여 mongo 파일 시스템을 백업 할 때, 복제 세트의 보조 파일을 사용할 때 tar는 tar 프로세스 중에 파일이 변경되었다고 말합니다. lock 명령이 실행되었지만. 안정적인 백업을 위해서는 이러한 일이 발생하지 않아야합니다. 내가 누락 된 것?mongo (3.2) : 파일 시스템에서 여전히 fsyncLock() 파일을 수정하여 백업

devtest:SECONDARY> use admin 
switched to db admin 
devtest:SECONDARY> db.fsyncLock() 
{ 
     "info" : "now locked against writes, use db.fsyncUnlock() to unlock", 
     "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", 
     "ok" : 1 
} 

타르 과정을 확인한다이 실행되는 동안 변경된 파일을 찾는 find 명령을 사용하여. diff를 사용하여 이러한 파일의 이전 버전과 이후 버전을 비교해도 확인합니다. 항상이 파일 들인 것처럼 보입니다.

/var/lib/mongo # find -cmin 1 
. 
./WiredTiger.turtle 
./WiredTiger.wt 
./diagnostic.data 
./diagnostic.data/metrics.interim 

Mongo 3.2 및 wiredtiger가 사용됩니다.

/etc/mongo.conf 
storage: 
    directoryPerDB: true 
    dbPath: /var/lib/mongo 
    engine: "wiredTiger" 
    wiredTiger: 
    engineConfig: 
     directoryForIndexes: true 
    collectionConfig: 
     blockCompressor: snappy 
    journal: 
    enabled: true 

문서는 파일이 변경되지 않는다고합니다. 아마 전용 "데이터"파일

https://docs.mongodb.com/v3.2/reference/method/db.fsyncLock/

버전 3.2에서 변경 ... 변경되지 않습니다 : db.fsyncLock() 데이터 파일이 MMAPv1 또는를 사용하여 MongoDB의 인스턴스에 대한 변경하지 않는 것이 보장 할 수 있습니다 따라서 WiredTiger 스토리지 엔진을 사용하여 백업을 생성하기위한 일관성을 제공합니다.

이전 MongoDB 버전에서 db.fsyncLock()은 WiredTiger에 대한 저수준 백업 (예 : 파일 복사 cp, scp, tar)을위한 일관된 파일 집합을 보장 할 수 없습니다.

+0

mongodb 데이터 디렉토리가있는 볼륨에서 파일을 직접 tarring하지 마십시오. 대신 디렉토리를 LVM에두고 LVM 스냅 샷을 사용한 다음 스냅 샷 파일 시스템의 데이터 디렉토리에서 tarball을 빌드하십시오. 스냅 샷을 생성하는 데는 몇 초가 걸립니다. 그러면 즉시 fsyncUnlock()을 수행 할 수 있습니다. tar에서 발생하는 오류가 발생하지 않습니다. https://docs.mongodb.com/v3.0/tutorial/ backup-with-filesystem-snapshots/ – Meni

+0

볼륨에서 tar를 피하는 이유는 무엇입니까? 설명서는 db를 잠그면 파일 시스템에 쓰지 않는다고합니다. 나는 LVM 방법이 선호된다는 것에 동의하지만 LVM을 설정하는 것은 내가 피하고 싶었던 오버 헤드이다. – Roland

+0

편집 : fsyncLock에 대한 추가 참조 파일 – Roland

답변

0

나는 mongodb이 실행 중일 때 데이터를 계속 저장해야한다고 추측하지만, 수집 데이터를 변경하지 않으므로 데이터를 백업하는 것이 안전하다고 판단됩니다.

확실하지 않으면 항상 db.shutdownServer() 일 수 있습니다. 그러면 디스크를 강제로 플러시하고 서비스를 중지 한 다음 다시 백업 한 다음 mongod 프로세스를 다시 시작하십시오.

+0

이것은 파일 시스템 백업이므로 파일 변경에 대해 걱정했습니다. 내 문제에 대한 해결책이 없다면 서버를 중지하는 것이 유일한 방법 인 것 같습니다. 내가 원하는 걸 원하지 않아. 이렇게하면 Google 시스템에 경고 이메일이 생성됩니다. – Roland

+0

'db.shutdownServer()'는 mongod 서비스 만 종료하지만, 모니터링에서 거짓 경고를받는 것은 이상적이지 않습니다. –

관련 문제