문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/ / /

설정 기능 호환성 버전

이 페이지의 내용

  • 정의
  • 구문
  • 명령 필드
  • 설정 기능 호환성 버전
  • 확인
  • 쓰기 고려
  • 행동
  • 이전 버전과 호환되지 않는 데이터로 다운그레이드
  • MongoDB 7.0의 다운그레이드 정책 변경 사항
  • 백그라운드 작업과의 충돌
  • 동기화 실패
  • 기본값
  • 멱등성
  • 자세한 내용은 Cluster-to-Cluster Sync와 사용자 쓰기 차단
  • 중재자의 기능 호환성
  • 예제
  • FeatureCompatibilityVersion 가져오기
  • MongoDB 7.0 배포에서 기능 호환성 버전 설정
  • MongoDB 6.0 배포에서 기능 호환성 버전 설정하기
  • MongoDB 5.0 배포에서 기능 호환성 버전 설정
  • 쓰기 고려 시간 초과 설정
setFeatureCompatibilityVersion

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

경고

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

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

버전 7.0에서 변경되었습니다.

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

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

setFeatureCompatibilityVersion 명령은 다음 필드를 사용합니다.

필수 사항

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

버전
설명
"7.0"

MongoDB 7.0 배포에서 사용 가능

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

"6.0"

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

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

"5.0"

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

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

필수 사항

버전 7.0에 추가.

기능 호환성 변경을 확인하고 작업을 계속하려면 true로 설정합니다.

confirm 매개 변수를 생략하거나 true 이외의 값으로 confirm을 설정하면 명령이 실패하고 기능 호환성 버전 수정에 대한 경고가 반환됩니다. 경고에는 클러스터의 fCV를 업그레이드하거나 다운그레이드한 후에는 지원 지원 없이 바이너리 버전을 다운그레이드할 수 없다고 명시되어 있습니다.

옵션

writeConcern은 쓰기 고려 wtimeout 값을 밀리초 단위로 지정합니다.

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

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

참고

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

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

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

다운로드한 버전에서 호환되지 않는 데이터가 포함된 클러스터의 fCV를 다운그레이드하려고 하면 CannotDowngrade 오류가 발생합니다. 이 오류가 발생하면 클러스터는 과도기적 downgrading 상태로 유지됩니다.

클러스터를 downgrading 상태에서 벗어나게 하려면 다음 중 하나를 수행합니다.

  • 클러스터 데이터를 수정하여 이전 버전과 호환되지 않는 기능을 제거한 다음, 다운그레이드된 버전으로 setFeatureCompatibilityVersion 명령을 다시 실행하여 fCV를 다운그레이드된 버전으로 설정합니다.

  • 업그레이드된 원본 버전과 함께 setFeatureCompatibilityVersion 명령을 실행하여 fCV를 원래 버전으로 되돌리는 작업을 수행합니다.

    중요

    fCV를 원래 버전으로 설정하면 다운그레이드 절차가 중지되고 fCV가 업그레이드된 버전으로 다시 변경됩니다. 이 절차에서는 클러스터 fCV 다운그레이드가 시작되기 전의 상태로 다시 설정하지 않습니다.

    실패한 fCV 다운그레이드의 내부 메타데이터가 정리되지 않으면 이후의 모든 FCV 업그레이드 시도가 오류 메시지와 함께 실패합니다. fCV 업그레이드를 시도하기 전에 fCV 다운그레이드를 완료해야 합니다.

MongoDB 7.0부터는 배포의 fCV를 MongoDB의 빠른 릴리스 버전으로 또는 그 반대로 다운그레이드할 수 없습니다.

배포의 fCV를 업그레이드하거나 다운그레이드하는 경우 지원팀의 도움 없이는 배포의 바이너리 버전을 다운그레이드할 수 없습니다.

자세한 내용은 7.0에서 6.0으로 다운그레이드를 참조하십시오.

특정 백그라운드 작업으로 인해 setFeatureCompatibilityVersion 의 실행이 차단될 수 있습니다. currentOp 를 사용하여 진행 중인 작업을 식별합니다.

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

배포
featureCompatibilityVersion
새로운 7.0 배포의 경우
"7.0"
6.0에서 업그레이드된 7.0 배포의 경우
"6.0" setFeatureCompatibilityVersion "7.0"로 할 때까지 .
새로운 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 6.0과 호환되지 않는 데이터를 유지하는 7.0 기능을 활성화하려면 MongoDB 7.0 배포에서 기능 호환성을 "7.0"으로 설정합니다.

참고

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

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

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

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

db.adminCommand(
{
setFeatureCompatibilityVersion: "7.0",
confirm: true
}
)

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 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와 호환되지 않는 모든 영구 기능도 제거해야 합니다. 적절한 다운그레이드 절차를 참조하세요.

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

참고

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

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

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

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

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