Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

설정 기능 호환성 버전

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 명령 필드
  • 행동
  • 백그라운드 작업과의 충돌
  • 동기화 실패
  • Default Values
  • 멱등성
  • 자세한 내용은 Cluster-to-Cluster Sync와 사용자 쓰기 차단
  • 중재자의 기능 호환성
  • 예제
  • FeatureCompatibilityVersion 가져오기
  • MongoDB 6.0 배포에서 기능 호환성 버전 설정하기
  • MongoDB 5.0 배포에서 기능 호환성 버전 설정
  • MongoDB 4.2 배포에서 기능 호환성 버전 설정
  • 쓰기 고려 시간 초과 설정
setFeatureCompatibilityVersion

이전 버전의 MongoDB와 호환되지 않는 데이터를 유지하는 기능을 활성화하거나 비활성화합니다. admin 데이터베이스에 대해서만 setFeatureCompatibilityVersion을 실행할 수 있습니다.

경고

이전 버전과 호환되지 않는 기능을 활성화하면 다운그레이드하기 전에 지속되는 이전 버전과 호환되지 않는 기능을 제거해야 하므로 다운그레이드 프로세스가 복잡해질 수 있습니다.

업그레이드 후에는 다운그레이드 가능성을 최소화하기 위해 번인 기간 동안 이전 버전과 호환되지 않는 기능을 활성화하지 않고 배포를 실행하도록 허용하는 것이 좋습니다. 다운그레이드 가능성이 매우 낮다고 확신하는 경우 이 기능을 사용하도록 설정합니다.

이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

중요

이 명령은 M0, M2, M5 및 M10 클러스터에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.

  • MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전

  • MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전

명령은 다음과 같은 구문을 가집니다:

db.adminCommand(
{
setFeatureCompatibilityVersion: <version>,
writeConcern: { wtimeout: <timeout> }
}
)

version에 사용할 수 있는 값은 다음과 같습니다.

버전
설명
"6.0"

MongoDB 6.0 배포에서 사용 가능

MongoDB 5.0과 호환되지 않는 데이터를 보존하는 6.0 기능을 활성화합니다.

"5.0"

MongoDB 5.0 및 6.0 배포에서 사용 가능

MongoDB 4.4와 호환되지 않는 데이터를 보존하는 5.0 기능을 활성화합니다.

선택적 writeConcern 는 쓰기 고려 (write concern) wtimeout 값을 밀리초 단위로 지정합니다.

  • 프라이머리가 복제본 세트 멤버 과반수의 승인을 기다리는 기간입니다. 해당 기간 내에 승인을 받지 못하면 작업이 실패합니다.

  • 기본값은 60000밀리초입니다. 복제본 세트의 세컨더리 멤버에 wtimeout 기본값을 초과하는 지연이 있는 경우 더 긴 기간을 사용합니다.

참고

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

특정 백그라운드 작업으로 인해 setFeatureCompatibilityVersion이 실행되지 않을 수 있습니다. currentOp를 사용하여 진행 중인 작업을 식별하세요.

초기 동기화 중에 setFeatureCompatibilityVersion 변경 사항을 트리거하면 oplog 애플리케이션 단계에서 항목을 재생할 때 OplogOperationUnsupported 오류 메시지와 함께 동기화가 실패할 수 있습니다. 이 시도 이후의 동기화는 작업 단계에서 더 이상 작업을 재생하지 않기 때문에 성공합니다.

배포
featureCompatibilityVersion
새로운 6.0 배포의 경우
"6.0"
5.0에서 업그레이드된 6.0 배포의 경우
"5.0" 가 될 때까지 setFeatureCompatibilityVersion "6.0".
새로운 5.0 배포의 경우
"5.0"
4.4에서 업그레이드된 5.0 배포의 경우
"4.4" 가 될 때까지 setFeatureCompatibilityVersion "5.0".

이 명령은 내부 시스템 컬렉션에 대한 쓰기를 수행해야 합니다. 어떤 이유로든 명령이 성공적으로 완료되지 않는 경우 작업이 무력하므로 명령을 안전하게 다시 시도할 수 있습니다.

MongoDB 6.0부터는 기능 호환성 버전을 다운그레이드해야 하는 경우 cluster 간 복제 및 사용자 쓰기 차단을 비활성화해야 합니다.

  1. 클러스터 간 복제를 활성화한 경우 비활성화합니다.

  2. 사용자 쓰기 차단을 활성화한 경우 비활성화합니다:

    db.runCommand( { setUserWriteBlockMode: 1, global: false } )
  3. 이전 명령이 완료될 때까지 기다립니다.

  4. setFeatureCompatibilityVersion을 사용하여 기능 호환성 버전을 다운그레이드합니다.

MongoDB Cluster-to-Cluster Sync에 대한 자세한 내용은 문서를 참조하세요.

중재자는 admin.system.version 컬렉션을 복제하지 않습니다. 이로 인해 중재자는 복제본 세트의 FCV 값에 관계없이 바이너리의 다운그레이드 버전과 동일한 기능 호환성 버전을 항상 갖게 됩니다.

그 예로 MongoDB 5.0 클러스터에 속한 중재자의 FCV 값은 4.4입니다.

mongod 인스턴스에 대한 featureCompatibilityVersion을 보려면 mongod 인스턴스에서 getParameter 명령을 실행합니다.

db.adminCommand( {
getParameter: 1,
featureCompatibilityVersion: 1
}
)

출력은 다음과 같습니다.

{
featureCompatibilityVersion: { version: '5.0' },
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1660318752, i: 5 }),
signature: {
hash: Binary(Buffer.from("ce0cff3621e9b089fa6d8e9a1e1efc1a1ff15dab", "hex"), 0),
keyId: Long("7129893797260951557")
}
},
operationTime: Timestamp({ t: 1660318752, i: 5 })
}

참고

작업이 mongos 인스턴스에서 정의되지 않았습니다.

액세스 제어가 활성화된 샤드 클러스터에서 명령을 실행하려면 샤드 로컬 사용자로 샤드에 연결해야 합니다.

MongoDB 45.0와 호환되지 않는 데이터를 유지하는 6.0 기능을 활성화하려면 MongoDB 6.0 배포에서 기능 호환성을 "6.0"으로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )

MongoDB 5.0과 호환되지 않는 데이터를 유지하는 6.0 기능을 활성화하려면 MongoDB 6.0 배포에서 기능 호환성을 "5.0"으로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

  • "5.0" featureCompatibilityVersion은 MongoDB 5.0 및 MongoDB 6.0 배포에서만 지원됩니다.

db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )

MongoDB 6.0에서 5.0으로 다운그레이드하는 프로세스의 경우, 5.0와 호환되지 않는 모든 기능을 제거해야 합니다. 적절한 다운그레이드 절차를 참조하세요.

MongoDB 4.4와 호환되지 않는 데이터를 유지하는 5.0 기능을 활성화하려면 MongoDB 5.0 배포에서 기능 호환성을 "5.0"으로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )

MongoDB 4.4와 호환되지 않는 데이터를 유지하는 5.0 기능을 비활성화하려면 MongoDB 5.0 배포에서 기능 호환성을 "4.4"으로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

  • "4.4" featureCompatibilityVersion은 MongoDB 4.4 및 MongoDB 5.0 배포에서만 지원됩니다.

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

MongoDB 5.0에서 4.4로 다운그레이드하는 downgrade 프로세스의 일부로 실행하는 경우, 4.4와 호환되지 않는 모든 영구 기능도 제거해야 합니다. 적절한 다운그레이드 절차를 참조하세요.

MongoDB 4.0 과 호환되지 않는 데이터를 유지하는 4.2 기능을 활성화하려면 MongoDB 4.2 배포에서 기능 호환성을 "4.2" 로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )

다음 예시에서는 선택적 쓰기 고려 wtimeout 필드를 5000(5초)으로 설정합니다.

참고

admin 데이터베이스에 대해 setFeatureCompatibilityVersion 명령을 실행합니다.

  • 독립형의 경우, 독립형 mongod 인스턴스에서 명령을 실행합니다.

  • 복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.

  • 샤드 클러스터의 경우 mongos 인스턴스에서 명령을 실행합니다.

db.adminCommand( {
setFeatureCompatibilityVersion: "5.0",
writeConcern: { wtimeout: 5000 }
} )

돌아가기

setClusterParameter