설정 기능 호환성 버전
이 페이지의 내용
- 정의
- 호환성
- 구문
- 명령 필드
- 설정 기능 호환성 버전
- 확인
- 쓰기 고려
- 행동
- 이전 버전과 호환되지 않는 데이터로 다운그레이드
- MongoDB 7.0의 다운그레이드 정책 변경 사항
- 백그라운드 작업과의 충돌
- 동기화 실패
- Default Values
- 멱등성
- 자세한 내용은 Cluster-to-Cluster Sync와 사용자 쓰기 차단
- 중재자의 기능 호환성
- 예시
- FeatureCompatibilityVersion 가져오기
- MongoDB 7.0 배포에서 기능 호환성 버전 설정
- MongoDB 6.0 배포에서 기능 호환성 버전 설정하기
- MongoDB 5.0 배포에서 기능 호환성 버전 설정
- 쓰기 고려 시간 초과 설정
정의
setFeatureCompatibilityVersion
이전 버전의 MongoDB와 호환되지 않는 데이터를 유지하는 기능을 활성화하거나 비활성화합니다.
admin
데이터베이스에 대해서만setFeatureCompatibilityVersion
을 실행할 수 있습니다.
경고
이전 버전과 호환되지 않는 기능을 활성화하면 다운그레이드하기 전에 지속되는 이전 버전과 호환되지 않는 기능을 제거해야 하므로 다운그레이드 프로세스가 복잡해질 수 있습니다.
업그레이드 후에는 다운그레이드 가능성을 최소화하기 위해 번인 기간 동안 이전 버전과 호환되지 않는 기능을 활성화하지 않고 배포를 실행하도록 허용하는 것이 좋습니다. 다운그레이드 가능성이 매우 낮다고 확신하는 경우 이 기능을 활성화합니다.
호환성
이 명령은 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
중요
이 명령은 M0, M2, M5 및 M10클러스터 이상에서 지원되지 않습니다. 자세한 내용은 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
버전 7.0에서 변경되었습니다.
명령은 다음과 같은 구문을 가집니다:
db.adminCommand( { setFeatureCompatibilityVersion: <version>, confirm: true, writeConcern: { wtimeout: <timeout> } } )
명령 필드
setFeatureCompatibilityVersion
명령은 다음 필드를 사용합니다.
설정 기능 호환성 버전
필수 사항
version
에 사용할 수 있는 값은 다음과 같습니다.
버전 | 설명 |
---|---|
"7.0" | MongoDB 7.0 배포에서 사용 가능 |
"6.0" | MongoDB 6.0 및 7.0 배포에서 사용 가능 |
"5.0" | MongoDB 5.0 및 6.0 배포에서 사용 가능 |
확인
필수 사항
버전 7.0에 추가.
기능 호환성 변경을 확인하고 작업을 계속하려면 true
로 설정합니다.
confirm
매개 변수를 생략하거나 true
이외의 값으로 confirm
을 설정하면 명령이 실패하고 기능 호환성 버전 수정에 대한 경고가 반환됩니다. 경고에는 클러스터의 fCV를 업그레이드하거나 다운그레이드한 후에는 지원 지원 없이 바이너리 버전을 다운그레이드할 수 없다고 명시되어 있습니다.
쓰기 고려
옵션
writeConcern
은 쓰기 고려 wtimeout
값을 밀리초 단위로 지정합니다.
행동
이전 버전과 호환되지 않는 데이터로 다운그레이드
다운로드한 버전에서 호환되지 않는 데이터가 포함된 클러스터의 fCV를 다운그레이드하려고 하면 CannotDowngrade
오류가 발생합니다. 이 오류가 발생하면 클러스터는 과도기적 downgrading
상태로 유지됩니다.
클러스터를 downgrading
상태에서 벗어나게 하려면 다음 중 하나를 수행합니다.
클러스터 데이터를 수정하여 이전 버전과 호환되지 않는 기능을 제거한 다음, 다운그레이드된 버전으로
setFeatureCompatibilityVersion
명령을 다시 실행하여 fCV를 다운그레이드된 버전으로 설정합니다.업그레이드된 원본 버전과 함께
setFeatureCompatibilityVersion
명령을 실행하여 fCV를 원래 버전으로 되돌리는 작업을 수행합니다.중요
fCV를 원래 버전으로 설정하면 다운그레이드 절차가 중지되고 fCV가 업그레이드된 버전으로 다시 변경됩니다. 이 절차에서는 클러스터 fCV 다운그레이드가 시작되기 전의 상태로 다시 설정하지 않습니다.
실패한 fCV 다운그레이드의 내부 메타데이터가 정리되지 않으면 이후의 모든 FCV 업그레이드 시도가 오류 메시지와 함께 실패합니다. fCV 업그레이드를 시도하기 전에 fCV 다운그레이드를 완료해야 합니다.
MongoDB 7.0의 다운그레이드 정책 변경 사항
MongoDB 7.0부터는 배포의 fCV를 MongoDB의 빠른 릴리스 버전으로 또는 그 반대로 다운그레이드할 수 없습니다.
배포의 fCV를 업그레이드하거나 다운그레이드하는 경우 지원팀의 도움 없이는 배포의 바이너리 버전을 다운그레이드할 수 없습니다.
자세한 내용은 7.0에서 6.0으로 다운그레이드를 참조하십시오.
백그라운드 작업과의 충돌
특정 백그라운드 작업으로 인해 setFeatureCompatibilityVersion
이 실행되지 않을 수 있습니다. currentOp
를 사용하여 진행 중인 작업을 식별하세요.
동기화 실패
초기 동기화 중에 setFeatureCompatibilityVersion
변경 사항을 트리거하면 oplog
애플리케이션 단계에서 항목을 재생할 때 OplogOperationUnsupported
오류 메시지와 함께 동기화가 실패할 수 있습니다. 이 시도 이후의 동기화는 작업 단계에서 더 이상 작업을 재생하지 않기 때문에 성공합니다.
Default Values
배포 | featureCompatibilityVersion |
---|---|
새로운 7.0 배포의 경우 | "7.0" |
6.0에서 업그레이드된 7.0 배포의 경우 | |
새로운 6.0 배포의 경우 | "6.0" |
5.0에서 업그레이드된 6.0 배포의 경우 | |
새로운 5.0 배포의 경우 | "5.0" |
4.4에서 업그레이드된 5.0 배포의 경우 |
멱등성
이 명령은 내부 시스템 컬렉션에 대한 쓰기를 수행해야 합니다. 어떤 이유로든 명령이 성공적으로 완료되지 않는 경우 작업이 무력하므로 명령을 안전하게 다시 시도할 수 있습니다.
자세한 내용은 Cluster-to-Cluster Sync와 사용자 쓰기 차단
MongoDB 6.0부터는 기능 호환성 버전을 다운그레이드해야 하는 경우 cluster 간 복제 및 사용자 쓰기 차단을 비활성화해야 합니다.
클러스터 간 복제를 활성화한 경우 비활성화합니다.
사용자 쓰기 차단을 활성화한 경우 비활성화합니다:
db.runCommand( { setUserWriteBlockMode: 1, global: false } ) 이전 명령이 완료될 때까지 기다립니다.
setFeatureCompatibilityVersion
을 사용하여 기능 호환성 버전을 다운그레이드합니다.
MongoDB Cluster-to-Cluster Sync에 대한 자세한 내용은 문서를 참조하세요.
중재자의 기능 호환성
중재자는 admin.system.version
컬렉션을 복제하지 않습니다. 이로 인해 중재자는 복제본 세트의 FCV 값에 관계없이 바이너리의 다운그레이드 버전과 동일한 기능 호환성 버전을 항상 갖게 됩니다.
그 예로 MongoDB 5.0 클러스터에 속한 중재자의 FCV 값은 4.4입니다.
예시
FeatureCompatibilityVersion 가져오기
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 }) }
MongoDB 7.0 배포에서 기능 호환성 버전 설정
7.0 이전 버전과 호환되는 기능 활성화
MongoDB 6.0과 호환되지 않는 데이터를 유지하는 7.0 기능을 활성화하려면 MongoDB 7.0 배포에서 기능 호환성을 "7.0"
으로 설정합니다.
참고
admin
데이터베이스에 대해 setFeatureCompatibilityVersion
명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "7.0", confirm: true } )
7.0 이전 버전과 호환되지 않는 기능 비활성화
MongoDB 6.0과 호환되지 않는 데이터를 유지하는 7.0 기능을 비활성화하려면 MongoDB 7.0 배포에서 기능 호환성을 "6.0"
으로 설정합니다.
참고
admin
데이터베이스에 대해 setFeatureCompatibilityVersion
명령을 실행합니다.
독립형의 경우, 독립형
mongod
인스턴스에서 명령을 실행합니다.복제본 세트의 경우 프라이머리에서 명령을 실행합니다. 데이터를 포함하는 멤버의 대부분을 사용할 수 있어야 합니다.
샤딩된 클러스터의 경우
mongos
인스턴스에서 명령을 실행합니다.
"6.0"
featureCompatibilityVersion은 MongoDB 6.0 및 MongoDB 7.0 배포에서만 지원됩니다.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0", confirm: true } )
MongoDB 7.0에서 6.0으로 다운그레이드하는 프로세스의 경우, 6.0과와 호환되지 않는 모든 기능을 제거해야 합니다. 적절한 다운그레이드 절차를 참조하세요.
MongoDB 6.0 배포에서 기능 호환성 버전 설정하기
6.0 이전 버전과 호환되지 않는 기능 활성화
MongoDB 45.0와 호환되지 않는 데이터를 유지하는 6.0 기능을 활성화하려면 MongoDB 6.0 배포에서 기능 호환성을 "6.0"
으로 설정합니다.
참고
admin
데이터베이스에 대해 setFeatureCompatibilityVersion
명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
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 5.0 배포에서 기능 호환성 버전 설정
5.0 이전 버전과 호환되지 않는 기능 활성화
MongoDB 4.4와 호환되지 않는 데이터를 유지하는 5.0 기능을 활성화하려면 MongoDB 5.0 배포에서 기능 호환성을 "5.0"
으로 설정합니다.
참고
admin
데이터베이스에 대해 setFeatureCompatibilityVersion
명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
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와 호환되지 않는 모든 영구 기능도 제거해야 합니다. 적절한 다운그레이드 절차를 참조하세요.
쓰기 고려 시간 초과 설정
다음 예시에서는 선택적 쓰기 고려 wtimeout
필드를 5000(5초)으로 설정합니다.
참고
admin
데이터베이스에 대해 setFeatureCompatibilityVersion
명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "5.0", writeConcern: { wtimeout: 5000 } } )