중요
MongoDB 8.3 은 최신 마이너 출시하다 입니다. MongoDB 8.2부터 특정 사용 사례에 대해 온프레미스 배포(커뮤니티 및 EA)에 마이너 릴리스를 사용할 수 있습니다. 자세한 내용은 MongoDB 버전 관리를 참조하세요.
온프레미스 사용이 지원되는 최신 MongoDB 버전을 설치하려면 설치 지침을 참조하세요.
MongoDB 8.3으로 업그레이드하기 전에 사전 요구 사항을 철저히 검토하고 이 문서의 내용을 숙지하세요.
다음 단계에서는 샤드 멤버인 mongod 를 버전 8.0 에서 8.3로 업그레이드 절차를 간략하게 설명합니다.
으로의 업그레이드에 대한 지침 필요한 8.3 경우, MongoDB 전문 서비스가 MongoDB 애플리케이션 으로의 중단 없이 원활하게 전환할 수 있도록 업그레이드 지원 제공합니다.
업그레이드 권장 사항 및 체크리스트
업그레이드할 때는 다음 사항을 고려하세요:
업그레이드 버전 경로
기존의 MongoDB 배포서버를 8.3으로 업그레이드하려면 8.0 시리즈 릴리스를 실행 중이어야 합니다.
마이너 버전에서 업그레이드하는 경우 8.3으로 업그레이드할 때까지 마이너 릴리스를 연속적으로 업그레이드 해야 합니다.
드라이버 호환성 확인
MongoDB를 업그레이드하기 전에 MongoDB 8.3 호환 드라이버를 사용하고 있는지 확인합니다. 특정 드라이버의 드라이버 설명서를 참조하여 MongoDB 8.3과의 호환성을 확인하세요.
호환되지 않는 드라이버에서 실행되는 업그레이드된 배포에서 예기치 않거나 정의되지 않은 동작이 발생할 수 있습니다.
준비
업그레이드를 시작하기 전에 MongoDB 8.3의 호환성 변경 사항를 참조하여 애플리케이션 및 배포가 MongoDB 8.3과 호환되는지 확인하세요. 업그레이드를 시작하기 전에 배포의 비호환성을 해결하세요.
MongoDB를 업그레이드하기 전에 프로덕션 환경에 업그레이드를 배포하기 전에 항상 스테이징 환경에서 애플리케이션을 테스트하십시오.
다운그레이드 고려 사항
MongoDB 8.3부터는 MongoDB 버전을 바로 이전의 마이너 또는 메이저 버전으로 다운그레이드할 수 있습니다.
MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.
예시 들어 8.0 배포서버를 7.0 배포서버 로 다운그레이드할 수 있습니다. 그러나 해당 7.0 배포서버 6.0 배포서버 로 한 단계 더 다운그레이드하는 것은 지원되지 않습니다.
학습 내용은 8.3 을 8.0 으로 다운그레이드하기를 참조하세요.
전제 조건
모든 회원 버전
샤딩된 클러스터 으로 업그레이드 8.3 하려면 클러스터 의모든 멤버가 8.0 버전 이상이어야 합니다. 업그레이드 프로세스 클러스터 의 모든 구성 요소를 확인하고 이전 버전을 실행 구성 요소가 있는 경우 경고를 8.0 생성합니다.
기능 호환성 버전
8.0 샤드 클러스터는 featureCompatibilityVersion이 "8.0"로 설정되어 있어야 합니다.
샤딩된 클러스터 의 모든 멤버가 featureCompatibilityVersion "8.0"로 설정하다 있는지 확인하려면 각 샤드 복제본 세트 멤버와 각 config 서버 복제본 세트 멤버에 연결합니다. 그런 다음 featureCompatibilityVersion를 확인합니다.
팁
액세스 제어가 활성화된 샤딩된 클러스터의 경우, 복제본 세트 노드에 다음을 명령하려면 반드시 노드를 샤드 로컬 사용자로 연결해야 합니다.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
"featureCompatibilityVersion" : { "version" : "8.0" }
featureCompatibilityVersion을 설정하거나 업데이트하려면 mongos에서 다음 명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "8.0", confirm: true } )
복제본 세트 노드 상태.
샤드 및 config 서버의 경우 ROLLBACK 또는 RECOVERING 상태에 있는 복제본 세트 노드가 없어야 합니다.
db.adminCommand( { replSetGetStatus: 1 } )
config 데이터베이스 백업
선택 사항이지만 권장됩니다. 예방 조치로 config 샤딩된 클러스터 업그레이드하기 전에 데이터베이스 의 백업 만듭니다.
8.3 다운로드 바이너리
패키지 관리자를 사용합니다.
MongoDB apt, yum, dnf 또는 zypper 리포지토리에서 MongoDB를 설치한 경우 패키지 관리자를 사용하여 8.3으로 업그레이드해야 합니다.
Linux 시스템에 적합한 8.3 설치 지침 을 따르세요. 이를 위해서는 새 출시하다 에 대한 리포지토리 추가한 다음 실제 업그레이드 프로세스 수행해야 합니다.
8.3 다운로드 바이너리 수동
패키지 관리자를 사용하여 MongoDB를 설치하지 않은 경우, MongoDB 다운로드 센터에서 MongoDB 바이너리를 수동으로 다운로드할 수 있습니다.
자세한 내용은 8.3 설치 지침을 참조하세요.
업그레이드 절차
밸런서 비활성화
mongosh를 샤드된 클러스터의 mongos 인스턴스에 연결하고 sh.stopBalancer()를 실행하여 밸런서를 사용하지 않도록 설정합니다.
sh.stopBalancer()
참고
마이그레이션 이 진행 중인 경우, 시스템은 밸런서 중지하기 전에 진행 중인 마이그레이션 완료합니다.sh.isBalancerRunning() 를 실행 밸런서의 현재 상태 확인할 수 있습니다.
밸런서 비활성화되었는지 확인하려면 를 실행 ,sh.getBalancerState() false 밸런서 비활성화된 경우 을 반환합니다.
sh.getBalancerState()
밸런서 비활성화에 대한 자세한 내용은 밸런서 비활성화를 참조하세요.
config 서버 업그레이드
복제본 세트 의 세컨더리 멤버를 한 번에 하나씩 업그레이드합니다.
세컨더리 인스턴스를 종료합니다.
mongod프로세스를 종료하려면mongosh를 사용하여 클러스터 노드에 연결하고 다음 명령을 실행하세요.db.adminCommand( { shutdown: 1 } ) 8.0 바이너리를 8.3 바이너리로 바꿉니다.
8.3 바이너리를 시작합니다.
8.3 바이너리를
--configsvr,--replSet,--port와 함께 시작합니다. 배포에서 사용하는 다른 옵션이 있다면 포함합니다.mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 구성 파일 사용하는 경우,,, 을(를)
sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp지정하도록 파일 8 업데이트3 다음. 바이너리를 시작합니다.sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 배포에 적합한 다른 설정을 포함합니다.
다음 세컨더리 멤버를 업그레이드하기 전에 멤버가
SECONDARY상태 로 복구될 때까지 기다립니다.멤버의 상태를 확인하려면
mongosh에서rs.status()를 실행합니다.
복제본 세트 기본값을 내려놓습니다.
프라이머리에
mongosh를 연결하고rs.stepDown()을 사용하여 기존 프라이머리를 우선 순위에서 내려오게 하고 강제로 새 프라이머리에 대한 투표를 진행합니다.rs.stepDown() 스텝다운된 프라이머리를 종료합니다.
rs.status()가 프라이머리가 스텝다운되고 다른 노드가PRIMARY상태를 맡았다고 표시하면 스텝다운된 프라이머리를 종료합니다.강등된 프라이머리를 종료하려면
mongosh를 사용하여 프라이머리에 연결하고 다음 명령을 실행하세요.db.adminCommand( { shutdown: 1 } ) mongod바이너리를 8.3 바이너리로 바꿉니다.8.3 바이너리를 시작합니다.
--configsvr,--replSet,--port,--bind_ip옵션을 사용하여 8.3을 시작합니다. 이전 배포에서 사용한 모든 명령줄 옵션(선택 사항)을 포함하세요.mongod --configsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 구성 파일 사용하는 경우,,, 을(를)
sharding.clusterRole: configsvrreplication.replSetNamenet.portnet.bindIp지정하도록 파일 8 업데이트3 다음. 바이너리를 시작합니다.sharding: clusterRole: configsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 배포에 적합한 다른 구성을 포함합니다.
샤드 업그레이드
샤드를 한 번에 하나씩 업그레이드합니다.
각 샤드 복제본 세트에 대해:
복제본 세트 의 세컨더리 멤버를 한 번에 하나씩 업그레이드합니다.
세컨더리 인스턴스를 종료합니다.
mongod프로세스를 종료하려면mongosh를 사용하여 클러스터 노드에 연결하고 다음 명령을 실행하세요.db.adminCommand( { shutdown: 1 } ) 8.0 바이너리를 8.3 바이너리로 바꿉니다.
--shardsvr,--replSet,--port및--bind_ip옵션을 사용하여 8.3 바이너리를 시작합니다. 배포에 적합한 추가 명령줄 옵션을 포함합니다.mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 구성 파일을 사용하는 경우
sharding.clusterRole: shardsvr,replication.replSetName,net.port및net.bindIp를 포함하도록 파일을 업데이트한 다음 8.3 바이너리를 시작합니다.sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 배포에 적합한 다른 구성을 포함합니다.
다음 세컨더리 멤버를 업그레이드하기 전에 멤버가
SECONDARY상태 로 복구될 때까지 기다립니다.노드의 상태를 확인하려면
mongosh에서rs.status()를 실행하면 됩니다.각 세컨더리 멤버에 대해 이 과정을 반복합니다.
복제본 세트 기본값을 내려놓습니다.
프라이머리에
mongosh를 연결하고rs.stepDown()을 사용하여 기존 프라이머리를 우선 순위에서 내려오게 하고 강제로 새 프라이머리에 대한 투표를 진행합니다.rs.stepDown() 스텝다운 기본값을 업그레이드합니다.
rs.status()에서 프라이머리가 스텝다운되고 다른 노드가PRIMARY상태를 맡았다고 표시하면 스텝다운된 프라이머리를 업그레이드합니다.스텝다운된 프라이머리를 종료합니다.
강등된 프라이머리를 종료하려면
mongosh를 사용하여 복제본 세트 노드에 연결하고 다음 명령을 실행하세요.db.adminCommand( { shutdown: 1 } ) mongod바이너리를 바꿉니다. 8.3 바이너리를 사용합니다.8.3 바이너리를 시작합니다.
--shardsvr,--replSet,--port및--bind_ip옵션을 사용하여 8.3 바이너리를 시작합니다. 배포에 적합한 추가 명령줄 옵션을 포함합니다.mongod --shardsvr --replSet <replSetName> --port <port> --dbpath <path> --bind_ip localhost,<ip address> 구성 파일을 사용하는 경우 파일을 업데이트하여
sharding.clusterRole: shardsvr,replication.replSetName,net.port및net.bindIp를 지정하고 8.3 바이너리를 시작합니다.sharding: clusterRole: shardsvr replication: replSetName: <string> net: port: <port> bindIp: localhost,<ip address> storage: dbpath: <path> 배포에 적합한 다른 구성을 포함합니다.
인스턴스 mongos 업그레이드
중요
모든 config 서버 복제본 세트 (CSRS) 인스턴스를 먼저 업그레이드한 다음 모든 샤드 멤버를 업그레이드하고 마지막으로 mongos 인스턴스를 업그레이드합니다. 이러한 업그레이드를 완료하기 전에 mongos 를 업그레이드하면 호환성 문제가 발생할 수 있습니다.
각 mongos 인스턴스를 8.3 바이너리로 바꾸고 다시 시작하세요. 배포서버에 적합한 다른 구성을 포함하세요.
참고
샤딩된 클러스터 노드가 다른 호스트에서 실행되거나 원격 클라이언트가 샤딩된 클러스터에 연결되는 경우 --bind_ip 옵션을 지정해야 합니다.
mongos --configdb csReplSet/<rsconfigsver1:port1>,<rsconfigsver2:port2>,<rsconfigsver3:port3> --bind_ip localhost,<ip address>
밸런서 다시 활성화
mongosh를 사용하여 클러스터의 mongos에 연결하고 sh.startBalancer()를 실행하여 밸런서를 다시 활성화합니다.
sh.startBalancer()
밸런서를 다시 활성화하는 방법에 대한 자세한 내용은 밸런서 활성화를 참조하세요.
이전 버전과 호환되지 않는 8.3 기능 활성화
이 시점에서는 8.0과 호환되지 않는 8.3 기능 없이 8.3 바이너리를 실행할 수 있습니다.
이러한 8.3 기능을 활성화 하려면 기능 호환성 버전 (FCV)을 8.3으로 설정하다 . 또한 confirm 를 true로 설정하다 해야 합니다.
팁
이전 버전과 호환되지 않는 이러한 기능을 활성화하면 다운그레이드하기 전에 이전 버전과 호환되지 않는 지속적인 기능을 제거해야 하므로 다운그레이드 프로세스가 복잡해질 수 있습니다.
업그레이드 후에는 다운그레이드 가능성을 최소화하기 위해 번인 기간 동안 이러한 기능을 활성화하지 않고 배포를 실행하도록 허용하는 것이 좋습니다. 다운그레이드 가능성이 매우 낮다고 확신하는 경우 이러한 기능을 활성화하십시오.
mongos 인스턴스의 경우 admin 데이터베이스에서 setFeatureCompatibilityVersion 명령을 실행합니다.
db.adminCommand( { setFeatureCompatibilityVersion: "8.3", confirm: true } )
featureCompatibilityVersion (FCV): "8.3" 각 샤드 replSetReconfig 에서 를 term 암시적으로 수행하여 샤드 복제본 구성 문서 에 필드 추가합니다.
새 구성이 대다수의 복제본 세트 구성원에게 전파될 때까지 명령이 완료되지 않습니다.
이 명령은 내부 시스템 컬렉션 에 대한 쓰기를 수행해야 합니다. 명령이 완료되지 않는 경우 작업은 멱등 하므로 에서 명령을 안전하게 다시 시도할 수 있습니다.mongos
참고
샤딩된 클러스터에서 setFeatureCompatibilityVersion가 실행되는 동안 청크 마이그레이션, 분할 및 병합은 ConflictingOperationInProgress로 인해 실패할 수 있습니다.
을(를)(으)로 설정하다 MongoDB 샤드에 존재하는 모든 고아 setFeatureCompatibilityVersion 문서를 8.3 정리합니다. 정리 프로세스:
업그레이드가 완료되는 것을 차단하지 않습니다.
요금이 제한되어 있습니다. 고아 문서 정리 중 성능에 대한 잠재적인 영향을 완화하려면 범위 삭제 성능 조정을 참조하세요.
추가 업그레이드 절차
복제본 8.0 8.3세트 업그레이드 하려면 복제본 세트를 으로 업그레이드를 참조하세요.