자체 관리형 배포서버를 위한 저널링 구성
이 페이지의 내용
MongoDB 는 쓰기 (write) 작업 내구성을 보장하기 위해온디스크 저널 에 쓰기 (write) 로깅 을 사용합니다.
WiredTiger 스토리지 엔진은 크래시 후 일관된 상태를 보장하기 위해 저널링이 필요하지 않습니다. 데이터베이스는 복구 중에 일관된 마지막 체크포인트로 복원됩니다. 그러나 체크포인트 사이에 MongoDB가 예기치 않게 종료되면, 마지막 체크포인트 이후에 발생한 기록을 복구하기 위해 저널링이 필요합니다.
참고
WiredTiger 스토리지 엔진 을 사용하는 복제본 세트 멤버에 대해서는 --nojournal
옵션 또는 storage.journal.enabled: false
를 지정할 수 없습니다.
저널링을 활성화한 상태에서 mongod
가 예기치 않게 중지되면 프로그램은 저널 에 기록된 모든 내용을 복구할 수 있습니다. MongoDB 는 재시작 시 쓰기 (write) 작업을 다시 적용하고 일관적인 상태 를 유지합니다. 기본값 저널 에 작성되지 않은 쓰기 손실의 최대 범위는 지난 100 밀리초에 실제 저널 쓰기를 수행하는 데 걸리는 시간을 더한 값입니다. 기본값 에 대한 자세한 내용은 commitIntervalMs
를 참조하세요.
절차
저널링 비활성화
경고
프로덕션 시스템에서는 저널링을 비활성화하지 마세요.
WiredTiger 스토리지 엔진 을 사용하는 복제본 세트 멤버에 대해서는
--nojournal
옵션 또는storage.journal.enabled: false
를 지정할 수 없습니다.
독립형 배포서버 에 대한 저널링을 비활성화하려면 명령줄 옵션으로 를 mongod
--nojournal
시작합니다.
커밋 승인 받기
저널 상태 모니터링
serverStatus
명령/db.serverStatus()
메서드는 저널에 대한 통계가 포함된 wiredTiger.log
를 반환합니다.
예기치 않은 종료 후 데이터 복구
충돌 후 다시 시작하면 MongoDB는 서버를 사용할 수 있게 되기 전에 저널 디렉토리에 있는 모든 저널 파일을 재생합니다. MongoDB가 저널 파일을 재생해야 하는 경우 mongod
는 로그 출력에 이러한 이벤트를 기록합니다.
--repair
를 실행할 이유가 없습니다.
WiredTiger 저널 압축기 변경
WiredTiger 스토리지 엔진을 사용하는 경우 MongoDB는 기본적으로 저널에 snappy
압축기를 사용합니다. mongod
인스턴스에 대해 다른 압축 알고리즘 또는 압축 없음을 지정하려면 다음을 수행해야 합니다.
팁
이 절차 중에 mongod
오류가 잘못 종료되는 경우 이전 압축기 설정을 사용하여 저널 파일을 사용하여 복구해야 합니다. 복구가 완료되면 절차를 다시 시도할 수 있습니다.
독립형 mongod
인스턴스에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.
storage.wiredTiger.engineConfig.journalCompressor
설정을 새 값으로 업데이트합니다.구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에
--wiredTigerJournalCompressor
명령줄 옵션을 업데이트 해야 합니다.mongod
인스턴스 를 완전히 종료합니다. 예를 예시mongosh
을 인스턴스 에 연결하고db.shutdownServer()
를 실행합니다.db.getSiblingDB('admin').shutdownServer() 프로세스가 더 이상 실행되지 않는 것을 확인했으면
mongod
다음과 같이 인스턴스를 다시 시작합니다.구성 파일을 사용하는 경우:
mongod -f <path/to/myconfig.conf> 구성 파일 대신 명령줄 옵션을 사용하는 경우
--wiredTigerJournalCompressor
옵션을 업데이트 합니다.mongod --wiredTigerJournalCompressor <differentCompressor|none> ...
복제본 세트 멤버에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.
참고
다음 절차에는 저널 없이 복제본 멤버를 독립형으로 다시 시작하는 절차가 포함됩니다.
mongod
인스턴스 를 완전히 종료합니다. 예를 예시mongosh
를 인스턴스 에 연결하고db.shutdownServer()
를 실행합니다.db.getSiblingDB('admin').shutdownServer() 구성 파일 을 업데이트하여 독립형으로 다시 시작할 수 있도록 준비합니다.
storage.journal.enabled
을false
로 설정합니다.배포서버에 대한 복제 설정을 주석 처리합니다.
setParameter
섹션에서 파라미터disableLogicalSessionCacheRefresh
를true
로 설정합니다.
예를 들면 다음과 같습니다.
storage: journal: enabled: false #replication: # replSetName: replA setParameter: disableLogicalSessionCacheRefresh: true 구성 파일 대신 명령줄 옵션을 사용하는 경우 다시 시작하는 동안 명령줄 옵션을 업데이트해야 합니다.
mongod
인스턴스 다시 시작합니다.구성 파일을 사용하는 경우:
mongod -f <path/to/myconfig.conf> 구성 파일 대신 명령줄 옵션을 사용하는 경우,
--nojournal
옵션 포함--setParameter
옵션에서 매개 변수disableLogicalSessionCacheRefresh
를true
로 설정합니다.mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
mongod
인스턴스를 완전히 종료합니다.db.getSiblingDB('admin').shutdownServer() 프로세스가 더 이상 실행되지 않는지 확인합니다.
새 저널 압축기로 복제본 세트 멤버로 다시 시작할 수 있도록 구성 파일을 업데이트합니다.
storage.journal.enabled
설정을 제거합니다.배포에 대한 복제 설정의 주석을 제거합니다.
disableLogicalSessionCacheRefresh
매개 변수를 제거합니다.기본 저널 압축기를 사용하거나 새 값을 지정하려면
storage.wiredTiger.engineConfig.journalCompressor
설정을 제거하세요.
예를 들면 다음과 같습니다.
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: replA 구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에 명령줄 옵션을 업데이트해야 합니다.
mongod
인스턴스를 복제본 세트 멤버로 다시 시작합니다.구성 파일을 사용하는 경우:
mongod -f <path/to/myconfig.conf> 구성 파일 대신 명령줄 옵션을 사용하는 경우:
--nojournal
옵션을 제거합니다.--wiredTigerJournalCompressor
명령줄 옵션을 제거하여 기본 저널 압축기를 사용하거나 새 값으로 업데이트합니다.복제 명령줄 옵션 과 복제본 세트 멤버에 대한 추가 옵션을 포함합니다.
disableLogicalSessionCacheRefresh
매개 변수를 제거합니다.
mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...
샤드 복제본 세트 또는 config 서버 복제본 세트 의 멤버에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.
참고
다음 절차에는 저널 없이 복제본 멤버를 독립형으로 다시 시작하는 절차가 포함됩니다.
mongod
인스턴스 를 완전히 종료합니다. 예를 예시mongosh
를 인스턴스 에 연결하고db.shutdownServer()
를 실행합니다.db.getSiblingDB('admin').shutdownServer() 구성 파일 을 업데이트하여 독립형으로 다시 시작할 수 있도록 준비합니다.
storage.journal.enabled
을false
로 설정합니다.매개 변수
skipShardingConfigurationChecks
를 true로 설정합니다.setParameter
섹션에서 파라미터disableLogicalSessionCacheRefresh
를true
로 설정합니다.배포서버에 대한 복제 설정을 주석 처리합니다.
sharding.clusterRole
설정을 주석 처리합니다.명시적으로 설정되지 않은 경우
net.port
를 멤버의 현재 포트로 설정합니다.
예를 들면 다음과 같습니다.
storage: journal: enabled: false setParameter: skipShardingConfigurationChecks: true disableLogicalSessionCacheRefresh: true #replication: # replSetName: shardA #sharding: # clusterRole: shardsvr net: port: 27218 구성 파일 대신 명령줄 옵션을 사용하는 경우 다시 시작하는 동안 명령줄 옵션을 업데이트해야 합니다.
mongod
인스턴스 다시 시작합니다.구성 파일을 사용하는 경우:
mongod -f <path/to/myconfig.conf> 구성 파일 대신 명령줄 옵션을 사용하는 경우:
--nojournal
옵션을 포함합니다.매개 변수
skipShardingConfigurationChecks
를 true로 설정합니다.--setParameter
옵션에서 매개 변수disableLogicalSessionCacheRefresh
를true
로 설정합니다.--shardsvr
/--configsvr
옵션을 제거합니다.인스턴스의 현재 포트로 설정된
--port
를 명시적으로 포함합니다.
mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
mongod
인스턴스를 완전히 종료합니다.db.getSiblingDB('admin').shutdownServer() 프로세스가 더 이상 실행되지 않는지 확인합니다.
새 저널 압축기로 다시 시작할 수 있도록 구성 파일을 업데이트합니다.
storage.journal.enabled
설정을 제거합니다.skipShardingConfigurationChecks
매개 변수 설정을 제거합니다.disableLogicalSessionCacheRefresh
매개 변수 설정을 제거합니다.배포에 대한 복제 설정의 주석을 제거합니다.
sharding.clusterRole
설정의 주석을 제거합니다.기본 저널 압축기를 사용하거나 새 값을 지정하려면
storage.wiredTiger.engineConfig.journalCompressor
설정을 제거하세요.
예를 들면 다음과 같습니다.
storage: wiredTiger: engineConfig: journalCompressor: <newValue> replication: replSetName: shardA sharding: clusterRole: shardsvr net: port: 27218 구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에 명령줄 옵션을 업데이트해야 합니다.
mongod
인스턴스를 복제본 세트 멤버로 다시 시작합니다.구성 파일을 사용하는 경우:
mongod -f <path/to/myconfig.conf> 구성 파일 대신 명령줄 옵션을 사용하는 경우:
--nojournal
옵션을 제거합니다.skipShardingConfigurationChecks
매개 변수 설정을 제거합니다.disableLogicalSessionCacheRefresh
매개 변수를 제거합니다.--wiredTigerJournalCompressor
명령줄 옵션을 제거하여 기본 저널 압축기를 사용하거나 새 값으로 업데이트합니다.--shardsvr
/--configsvr
옵션을 포함합니다.복제 명령줄 옵션 과 복제본 세트 멤버에 대한 추가 옵션을 포함합니다.
mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...