Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ /

자체 관리형 배포서버를 위한 저널링 구성

이 페이지의 내용

  • 절차

MongoDB 는 쓰기 (write) 작업 내구성을 보장하기 위해온디스크 저널 에 쓰기 (write) 로깅 을 사용합니다.

WiredTiger 스토리지 엔진은 크래시 후 일관된 상태를 보장하기 위해 저널링이 필요하지 않습니다. 데이터베이스는 복구 중에 일관된 마지막 체크포인트로 복원됩니다. 그러나 체크포인트 사이에 MongoDB가 예기치 않게 종료되면, 마지막 체크포인트 이후에 발생한 기록을 복구하기 위해 저널링이 필요합니다.

참고

WiredTiger 스토리지 엔진 을 사용하는 복제본 세트 멤버에 대해서는 --nojournal 옵션 또는 storage.journal.enabled: false 를 지정할 수 없습니다.

저널링을 활성화한 상태에서 mongod 가 예기치 않게 중지되면 프로그램은 저널 에 기록된 모든 내용을 복구할 수 있습니다. MongoDB 는 재시작 시 쓰기 (write) 작업을 다시 적용하고 일관적인 상태 를 유지합니다. 기본값 저널 에 작성되지 않은 쓰기 손실의 최대 범위는 지난 100 밀리초에 실제 저널 쓰기를 수행하는 데 걸리는 시간을 더한 값입니다. 기본값 에 대한 자세한 내용은 commitIntervalMs 를 참조하세요.

경고

프로덕션 시스템에서는 저널링을 비활성화하지 마세요.

  • WiredTiger 스토리지 엔진 을 사용하는 복제본 세트 멤버에 대해서는 --nojournal 옵션 또는 storage.journal.enabled: false 를 지정할 수 없습니다.

독립형 배포서버 에 대한 저널링을 비활성화하려면 명령줄 옵션으로 를 mongod --nojournal 시작합니다.

쓰기 고려j 옵션을 사용하여 커밋 승인을 받을 수 있습니다. 자세한 내용은 쓰기 고려를 참조하세요.

serverStatus 명령/db.serverStatus() 메서드는 저널에 대한 통계가 포함된 wiredTiger.log를 반환합니다.

충돌 후 다시 시작하면 MongoDB는 서버를 사용할 수 있게 되기 전에 저널 디렉토리에 있는 모든 저널 파일을 재생합니다. MongoDB가 저널 파일을 재생해야 하는 경우 mongod는 로그 출력에 이러한 이벤트를 기록합니다.

--repair를 실행할 이유가 없습니다.

WiredTiger 스토리지 엔진을 사용하는 경우 MongoDB는 기본적으로 저널에 snappy 압축기를 사용합니다. mongod 인스턴스에 대해 다른 압축 알고리즘 또는 압축 없음을 지정하려면 다음을 수행해야 합니다.

이 절차 중에 mongod 오류가 잘못 종료되는 경우 이전 압축기 설정을 사용하여 저널 파일을 사용하여 복구해야 합니다. 복구가 완료되면 절차를 다시 시도할 수 있습니다.

독립형 mongod 인스턴스에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.

  1. storage.wiredTiger.engineConfig.journalCompressor 설정을 새 값으로 업데이트합니다.

    구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에 --wiredTigerJournalCompressor 명령줄 옵션을 업데이트 해야 합니다.

  2. mongod 인스턴스 를 완전히 종료합니다. 예를 예시 mongosh 을 인스턴스 에 연결하고 db.shutdownServer() 를 실행합니다.

    db.getSiblingDB('admin').shutdownServer()
  3. 프로세스가 더 이상 실행되지 않는 것을 확인했으면 mongod 다음과 같이 인스턴스를 다시 시작합니다.

    • 구성 파일을 사용하는 경우:

      mongod -f <path/to/myconfig.conf>
    • 구성 파일 대신 명령줄 옵션을 사용하는 경우 --wiredTigerJournalCompressor 옵션을 업데이트 합니다.

      mongod --wiredTigerJournalCompressor <differentCompressor|none> ...

복제본 세트 멤버에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.

참고

다음 절차에는 저널 없이 복제본 멤버를 독립형으로 다시 시작하는 절차가 포함됩니다.

  1. mongod 인스턴스 를 완전히 종료합니다. 예를 예시 mongosh 를 인스턴스 에 연결하고 db.shutdownServer() 를 실행합니다.

    db.getSiblingDB('admin').shutdownServer()
  2. 구성 파일 을 업데이트하여 독립형으로 다시 시작할 수 있도록 준비합니다.

    • storage.journal.enabledfalse로 설정합니다.

    • 배포서버에 대한 복제 설정을 주석 처리합니다.

    • setParameter 섹션에서 파라미터 disableLogicalSessionCacheRefreshtrue 로 설정합니다.

    예를 들면 다음과 같습니다.

    storage:
    journal:
    enabled: false
    #replication:
    # replSetName: replA
    setParameter:
    disableLogicalSessionCacheRefresh: true

    구성 파일 대신 명령줄 옵션을 사용하는 경우 다시 시작하는 동안 명령줄 옵션을 업데이트해야 합니다.

  3. mongod 인스턴스 다시 시작합니다.

    • 구성 파일을 사용하는 경우:

      mongod -f <path/to/myconfig.conf>
    • 구성 파일 대신 명령줄 옵션을 사용하는 경우,

      • --nojournal 옵션 포함

      • 모든 복제 명령줄 옵션 (예: --replSet)을 제거합니다.

      • --setParameter 옵션에서 매개 변수 disableLogicalSessionCacheRefreshtrue 로 설정합니다.

        mongod --nojournal --setParameter disableLogicalSessionCacheRefresh=true ...
  4. mongod 인스턴스를 완전히 종료합니다.

    db.getSiblingDB('admin').shutdownServer()

    프로세스가 더 이상 실행되지 않는지 확인합니다.

  5. 새 저널 압축기로 복제본 세트 멤버로 다시 시작할 수 있도록 구성 파일을 업데이트합니다.

    예를 들면 다음과 같습니다.

    storage:
    wiredTiger:
    engineConfig:
    journalCompressor: <newValue>
    replication:
    replSetName: replA

    구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에 명령줄 옵션을 업데이트해야 합니다.

  6. mongod 인스턴스를 복제본 세트 멤버로 다시 시작합니다.

    • 구성 파일을 사용하는 경우:

      mongod -f <path/to/myconfig.conf>
    • 구성 파일 대신 명령줄 옵션을 사용하는 경우:

      • --nojournal 옵션을 제거합니다.

      • --wiredTigerJournalCompressor 명령줄 옵션을 제거하여 기본 저널 압축기를 사용하거나 새 값으로 업데이트합니다.

      • 복제 명령줄 옵션 과 복제본 세트 멤버에 대한 추가 옵션을 포함합니다.

      • disableLogicalSessionCacheRefresh 매개 변수를 제거합니다.

      mongod --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...

샤드 복제본 세트 또는 config 서버 복제본 세트 의 멤버에 대한 저널 압축기를 변경하려면 다음 절차를 따르세요.

참고

다음 절차에는 저널 없이 복제본 멤버를 독립형으로 다시 시작하는 절차가 포함됩니다.

  1. mongod 인스턴스 를 완전히 종료합니다. 예를 예시 mongosh 를 인스턴스 에 연결하고 db.shutdownServer() 를 실행합니다.

    db.getSiblingDB('admin').shutdownServer()
  2. 구성 파일 을 업데이트하여 독립형으로 다시 시작할 수 있도록 준비합니다.

    예를 들면 다음과 같습니다.

    storage:
    journal:
    enabled: false
    setParameter:
    skipShardingConfigurationChecks: true
    disableLogicalSessionCacheRefresh: true
    #replication:
    # replSetName: shardA
    #sharding:
    # clusterRole: shardsvr
    net:
    port: 27218

    구성 파일 대신 명령줄 옵션을 사용하는 경우 다시 시작하는 동안 명령줄 옵션을 업데이트해야 합니다.

  3. mongod 인스턴스 다시 시작합니다.

    • 구성 파일을 사용하는 경우:

      mongod -f <path/to/myconfig.conf>
    • 구성 파일 대신 명령줄 옵션을 사용하는 경우:

      mongod --nojournal --setParameter skipShardingConfigurationChecks=true --setParameter disableLogicalSessionCacheRefresh=true --port <samePort> ...
  4. mongod 인스턴스를 완전히 종료합니다.

    db.getSiblingDB('admin').shutdownServer()

    프로세스가 더 이상 실행되지 않는지 확인합니다.

  5. 새 저널 압축기로 다시 시작할 수 있도록 구성 파일을 업데이트합니다.

    예를 들면 다음과 같습니다.

    storage:
    wiredTiger:
    engineConfig:
    journalCompressor: <newValue>
    replication:
    replSetName: shardA
    sharding:
    clusterRole: shardsvr
    net:
    port: 27218

    구성 파일 대신 명령줄 옵션을 사용하는 경우 아래 재시작 중에 명령줄 옵션을 업데이트해야 합니다.

  6. mongod 인스턴스를 복제본 세트 멤버로 다시 시작합니다.

    • 구성 파일을 사용하는 경우:

      mongod -f <path/to/myconfig.conf>
    • 구성 파일 대신 명령줄 옵션을 사용하는 경우:

      mongod --shardsvr --wiredTigerJournalCompressor <differentCompressor|none> --replSet ...

돌아가기

인메모리

이 페이지의 내용