문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

샤드 클러스터를 6.0으로 업그레이드하기

이 페이지의 내용

  • 업그레이드 권장 사항 및 체크리스트
  • 전제 조건
  • 6.0 바이너리 다운로드
  • 업그레이드 절차
  • 추가 업그레이드 절차

경고

MongoDB 6.0.3의 밸런싱 정책 업데이트 로 인해 청크 수가 동일하게 유지되더라도 업그레이드 후 즉시 밸런서가 시작될 수 있습니다.

MongoDB 6.0으로 업그레이드하기 전에 사전 요구 사항을 철저히 검토하는 것을 포함하여 이 문서의 내용을 숙지하십시오.

다음 단계에서는 샤드 멤버인 mongod 를 버전 5.0에서 6.0으로 업그레이드하는 절차를 간략하게 설명합니다.

6 으)로의 업그레이드에 대한 지침이 필요한 경우.0, MongoDB 전문 서비스 는 MongoDB 애플리케이션으로의 중단 없이 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다.

업그레이드할 때는 다음 사항을 고려하세요:

기존 MongoDB 배포를 6.0으로 업그레이드하려면 5.0 시리즈 릴리스를 실행 중이어야 합니다.

5.0 시리즈 이전 버전에서 업그레이드하려면 5.0 시리즈로 업그레이드할 때까지 메이저 릴리스를 연속적으로 업그레이드해야 합니다. 예를 들어 4.4 시리즈를 실행 중인 경우 먼저 5.0으로 업그레이드해야 6.0으로 업그레이드할 수 있습니다.

MongoDB를 업그레이드하기 전에 MongoDB 6 을(를) 사용하고 있는지 확인하세요.0-호환 드라이버. 특정 드라이버의 드라이버 설명서 를 참조하여 MongoDB 6 와의 호환성을 확인하세요.0.

호환되지 않는 드라이버에서 실행되는 업그레이드된 배포에서 예기치 않거나 정의되지 않은 동작이 발생할 수 있습니다.

경고

드라이버가 v3.6에서 더 이상 사용되지 않는 레거시 옵코드 를 사용하는 경우 지원되는 옵코드를 사용하는 버전으로 드라이버를 업데이트합니다. 레거시 옵코드를 사용하는 드라이버는 더 이상 지원되지 않습니다.

업그레이드를 시작하기 전에 MongoDB 6.0의 호환성 변경 사항 문서를 참조하여 애플리케이션 및 배포가 MongoDB 6.0과 호환되는지 확인하세요. 업그레이드를 시작하기 전에 배포의 비호환성을 해결합니다.

MongoDB를 업그레이드하기 전에 프로덕션 환경에 업그레이드를 배포하기 전에 항상 스테이징 환경에서 애플리케이션을 테스트하십시오.

6.0으로 업그레이드한 후 다운그레이드해야 하는 경우 최신 패치 릴리스인 5.0 으로 다운그레이드 하는 것이 좋습니다.

샤드 클러스터를 6.0으로 업그레이드하려면 클러스터의 모든 멤버가 버전 5.0 이상이어야 합니다. 업그레이드 프로세스는 클러스터의 모든 구성 요소를 확인하고 5.0 이전 버전을 실행 중인 구성 요소가 있는 경우 경고를 표시합니다.

5.0 샤드 클러스터에는 featureCompatibilityVersion"5.0" 로 설정되어 있어야 합니다.

샤드 클러스터의 모든 멤버가 featureCompatibilityVersion "5.0" 로 설정되어 있는지 확인하려면 각 샤드 복제본 세트 멤버와 각 config 서버 복제본 세트 멤버에 연결하고 featureCompatibilityVersion 를 확인합니다.

액세스 제어가 활성화된 샤드 클러스터의 경우, 샤드 복제본 세트 멤버에 대해 다음 명령을 실행하려면 샤드 로컬 사용자로 멤버에 연결해야 합니다.

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

모든 멤버는 "featureCompatibilityVersion" : { "version" : "5.0" }을 포함하는 결과를 반환해야 합니다.

featureCompatibilityVersion 을 설정하거나 업데이트하려면 mongos에서 다음 명령을 실행합니다.

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

자세한 내용은 setFeatureCompatibilityVersion를 참조하세요.

샤드 및 config 서버의 경우 ROLLBACK 또는 RECOVERING 상태에 있는 복제본 세트 멤버가 없는지 확인합니다.

선택 사항이지만 권장됩니다. 예방 조치로 샤드 클러스터를 업그레이드 하기 전에 config 데이터베이스를 백업합니다.

MongoDB apt, yum, dnf 또는 zypper 리포지토리에서 MongoDB를 설치한 경우 패키지 관리자를 사용하여 6.0으로 업그레이드해야 합니다.

Linux 시스템에 적합한 6.0 설치 지침을 따릅니다. 여기에는 새 릴리스에 대한 리포지토리를 추가한 다음 실제 업그레이드 프로세스를 수행하는 작업이 포함됩니다.

패키지 관리자를 사용하여 MongoDB를 설치하지 않은 경우, MongoDB 다운로드 센터에서 MongoDB 바이너리를 수동으로 다운로드할 수 있습니다.

자세한 내용은 6.0 설치 지침을 참조하십시오.

경고

기존 MongoDB 인스턴스를 MongoDB 6.0.5로 업그레이드할 때 mongod.conf 파일에 fork: true 이 설정되어 있으면 해당 인스턴스가 시작되지 않을 수 있습니다.

업그레이드 문제는 .deb 또는 설치 패키지를 사용하는 모든 MongoDB .rpm 인스턴스에 영향을 미칩니다. tarball(.tgz) 릴리스 또는 기타 패키지 유형을 사용하는 설치는 영향을 받지 않습니다. 자세한 내용은 SERVER-74345 를 참조하세요.

fork: true 설정을 제거하려면 시스템 터미널에서 다음 명령을 실행합니다.

systemctl stop mongod.service
sed -i.bak '/fork: true/d' /etc/mongod.conf
systemctl start mongod.service

두 번째 systemctl 명령은 설정이 제거된 후 업그레이드된 인스턴스를 시작합니다.

1

mongosh 를 샤드 클러스터의 mongos 인스턴스에 연결하고 sh.stopBalancer() 를 실행하여 밸런서를 비활성화합니다.

sh.stopBalancer()

참고

마이그레이션이 진행 중인 경우, 시스템은 밸런서를 중지하기 전에 진행 중인 마이그레이션을 완료합니다. sh.isBalancerRunning() 를 실행하여 밸런서의 현재 상태를 확인할 수 있습니다.

밸런서가 비활성화되었는지 확인하려면 sh.getBalancerState()를 실행하면 밸런서가 비활성화된 경우 false를 반환합니다.

sh.getBalancerState()

밸런서 비활성화에 대한 자세한 내용은 밸런서 비활성화를 참조하세요 .

2

클러스터의 각 mongos 에 대해 mongoshmongos 인스턴스에 연결하고 flushRouterConfig 를 실행하여 캐시된 라우팅 테이블을 새로 고칩니다.

db.adminCommand("flushRouterConfig")
db.adminCommand(
{
flushRouterConfig: 1
}
)
3
1
1

mongod 프로세스를 종료하려면 mongosh 를 사용하여 클러스터 멤버에 연결하고 다음 명령을 실행합니다.

db.adminCommand( { shutdown: 1 } )
2
3

--configsvr, --replSet--port 를 사용하여 6.0 바이너리를 시작합니다. 배포에 사용되는 다른 옵션을 포함합니다.

mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

구성 파일 을 사용하는 경우 sharding.clusterRole: configsvr, replication.replSetName, net.portnet.bindIp 를 지정하도록 파일을 업데이트한 다음 6.0 바이너리를 시작합니다.

sharding:
clusterRole: configsvr
replication:
replSetName: <string>
net:
port: <port>
bindIp: localhost,<ip address>
storage:
dbpath: <path>

배포에 적합한 다른 설정을 포함합니다.

4

멤버의 상태를 확인하려면 rs.status() mongosh에서 { 를 실행합니다.

5
2
1

mongosh 를 프라이머리에 연결하고 rs.stepDown() 를 사용하여 프라이머리를 물러나고 새 프라이머리를 강제로 선출합니다.

rs.stepDown()
2

rs.status() 가 프라이머리가 물러나고 다른 구성원이 PRIMARY 상태를 취했음을 나타내면, 물러난 프라이머리를 종료합니다.

강등된 프라이머리를 종료하려면 mongosh 를 사용하여 프라이머리에 연결하고 다음 명령을 실행합니다.

db.adminCommand( { shutdown: 1 } )
3
4

--configsvr, --replSet, --port--bind_ip 옵션으로 6.0을 시작합니다. 이전 배포에서 사용된 선택적 명령줄 옵션을 포함합니다.

mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

구성 파일 을 사용하는 경우 sharding.clusterRole: configsvr, replication.replSetName, net.portnet.bindIp 를 지정하도록 파일을 업데이트한 다음 6.0 바이너리를 시작합니다.

sharding:
clusterRole: configsvr
replication:
replSetName: <string>
net:
port: <port>
bindIp: localhost,<ip address>
storage:
dbpath: <path>

배포에 적합한 다른 구성을 포함합니다.

4

샤드를 한 번에 하나씩 업그레이드합니다.

각 샤드 복제본 세트에 대해 다음을 수행합니다.

1
1

mongod 프로세스를 종료하려면 mongosh 를 사용하여 클러스터 멤버에 연결하고 다음 명령을 실행합니다.

db.adminCommand( { shutdown: 1 } )
2

--shardsvr, --replSet, --port--bind_ip 옵션을 사용하여 6.0 바이너리를 시작합니다. 배포에 적합한 추가 명령줄 옵션을 포함합니다.

mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

구성 파일 을 사용하는 경우 sharding.clusterRole: shardsvr, replication.replSetName, net.portnet.bindIp 을 포함하도록 파일을 업데이트한 다음 6.0 바이너리를 시작합니다.

sharding:
clusterRole: shardsvr
replication:
replSetName: <string>
net:
port: <port>
bindIp: localhost,<ip address>
storage:
dbpath: <path>

배포에 적합한 다른 구성을 포함합니다.

3

멤버의 상태를 확인하려면mongosh에서 { rs.status() 를 발행할 수 있습니다

4
2

mongosh 를 프라이머리에 연결하고 rs.stepDown() 를 사용하여 프라이머리를 물러나고 새 프라이머리를 강제로 선출합니다.

rs.stepDown()
3

rs.status() 에서 프라이머리가 물러나고 다른 구성원이 PRIMARY 상태를 취했음을 나타내면 물러난 프라이머리를 업그레이드합니다.

1

강등된 프라이머리를 종료하려면 mongosh 를 사용하여 복제본 세트 멤버에 연결하고 다음 명령을 실행합니다.

db.adminCommand( { shutdown: 1 } )
2
3

--shardsvr, --replSet, --port--bind_ip 옵션을 사용하여 6.0 바이너리를 시작합니다. 배포에 적합한 추가 명령줄 옵션을 포함합니다.

mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address>

구성 파일 을 사용하는 경우 sharding.clusterRole: shardsvr, replication.replSetName, net.portnet.bindIp 를 지정하도록 파일을 업데이트한 다음 6.0 바이너리를 시작합니다.

sharding:
clusterRole: shardsvr
replication:
replSetName: <string>
net:
port: <port>
bindIp: localhost,<ip address>
storage:
dbpath: <path>

배포에 적합한 다른 구성을 포함합니다.

5

mongos 인스턴스를 6.0 바이너리로 바꾸고 다시 시작합니다. 배포에 적합한 다른 구성을 포함합니다.

참고

샤드 클러스터 멤버가 다른 호스트에서 실행되거나 원격 클라이언트가 샤드 클러스터에 연결하는 경우 --bind_ip 옵션을 지정해야 합니다.

mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
6

mongosh 사용하여 클러스터의 mongos 에 연결하고 sh.startBalancer() 를 실행하여 밸런서를 다시 활성화합니다.

sh.startBalancer()

MongoDB 6.0.3부터 자동 청크 분할이 수행되지 않습니다. 이는 밸런싱 정책이 개선되었기 때문입니다. 자동 분할 명령이 여전히 존재하지만 작업을 수행하지 않습니다. 자세한 내용은 밸런싱 정책 변경을 참조하세요.

MongoDB 6.0.3 이전 버전에서 sh.startBalancer()는 샤딩된 클러스터에 대한 자동 분할도 활성화합니다.

밸런서가 활성화된 상태에서 자동 분할을 활성화하지 않으려면 sh.disableAutoSplit() 도 실행해야 합니다.

밸런서를 다시 활성화하는 방법에 대한 자세한 내용은 밸런서 활성화를 참조하세요.

7

현재로서는 5.0과 호환되지 않는 6.0 기능 없이 6.0 바이너리를 실행할 수 있습니다.

이러한 6.0 기능을 사용하려면 기능 호환성 버전(fCV)을 6.0으로 설정합니다.

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

업그레이드 후에는 다운그레이드 가능성을 최소화하기 위해 번인 기간 동안 이러한 기능을 활성화하지 않고 배포를 실행하도록 허용하는 것이 좋습니다. 다운그레이드 가능성이 매우 낮다고 확신하는 경우 이러한 기능을 활성화하십시오.

mongos 인스턴스에서는 admin 데이터베이스에서 setFeatureCompatibilityVersion 명령을 실행합니다.

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

featureCompatibilityVersion (fCV) : "6.0" 은 암시적으로 각 샤드에서 replSetReconfig 를 수행하여 샤드 복제본 구성 문서에 term 필드를 추가하고 새 구성이 대다수의 복제본 세트 구성원에게 전파될 때까지 차단합니다.

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

참고

setFeatureCompatibilityVersion 가 샤드 클러스터에서 실행되는 동안 청크 마이그레이션, 분할 및 병합이 ConflictingOperationInProgress 실패할 수 있습니다.

를 6.0으로 설정하면 setFeatureCompatibilityVersion 샤드에 존재하는 모든 고아 문서 가 정리됩니다. 정리 프로세스:

  • 업그레이드가 완료되는 것을 차단하지 않습니다.

  • 요금 제한이 있습니다. 고아 문서를 정리하는 동안 성능에 미칠 수 있는 영향을 완화하려면 범위 삭제 성능 조정을 참조하세요.

참고

추가 고려 사항

기능 호환성 버전(fCV) 이 버전보다 mongos mongod 큰 인스턴스에 연결하려고 mongos 하면 바이너리가 충돌합니다. 예를 들어 MongoDB 5.0 버전 mongos 을(를) fCV 가 6.0으로 설정된 6.0 샤드 클러스터에 연결할 수 없습니다. 그러나 MongoDB 5.0 버전 mongosfCV 가 5.0으로 설정된 6.0 샤드 클러스터에 연결할 수 있습니다.

← 복제본 세트를 6.0으로 업그레이드하기